BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度

上篇文章我们已经将Dim Geography维度设计好。

若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性、成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信。

今天我们将维度部署到AS上进行查看。

文章提纲

  • 补充背景知识
  • 浏览维度,细化维度
  • 总结

补充背景知识

XMLA是一种基于简单对象访问协议(SOAP)的XML应用程序编程接口的行业标准, 设计用于OLAP和数据挖掘。

XMLA规范定义了两个函数,即Execute和Discover, 这两个函数用于向主机实例发送操作及从主机实例检索数据。

下面是一个使用XMLA发送到AS实例的Execute请求示例。

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">

<Command>

<Statement>

SELECT Measures.MEMBERS ON COLUMNS FROM [Adventure Works DW]

</Statement>

</Command>

<Properties>

<PropertyList>

<Catalog>

ASMultidimensionalPOC

</Catalog>

<Format>Multidimensional</Format>

<AxisFormat>ClusterFormat</AxisFormat>

</PropertyList>

</Properties>

</Execute>

上面的XMLA中发送了一个请求, 执行在Statement命令中指定的MDX查询。与AS Server进行通信的一些常见命令包括Create、Alter、Process和Statement.

AS 对象的定义通过DDL(Data Definition Language, 数据定义语言)来实现。

其他命令处理已经定义的数据,称为DML(Data Manipulation Language, 数据操作语言)命令。

当项目部署到AS服务器时,会发送一些XMLA请求,如下所述:

1. 从AS请求一个数据库列表以确定当前项目所定义的数据库是否已在该实例中存在, 指定的项目名称将被用作数据库名称。

SSDT将针对数据库发送Create或Alter命令,具体取决于该数据库是否已存在于服务器上。

2.随后, SSDT将发送一个XMLA请求,以处理你创建和/或修改的对象。

SSDT将执行验证,以确保维度设计正确无误。

浏览维度,细化维度

现在我们来将维度部署到AS上来查看维度的内容:

右击项目Deploy,SSDT尝试将该项目部署到AS实例。

可以看到,部署失败。

SSDT将使用Error List窗口报告由SSDT从AS实例识别出的所有警告和错误。

上图中显示的前15个警告是提醒违反最佳实践的情况,一般按照必要性进行排序。这些错误是可以忽略的(右键选Dismiss, 类似于Word忽略拼写错误)

另外一种是AS实例报告的警告,这种是不能解除的。

如右击第16个警告,可以发现Dismiss是灰色禁用状态。

第16条警告指出,在处理City特性时,识别出重复的特性键值,表明具有多个使用相同名称的城市,但无法确定哪个State Province Name与某个特定的城市具有关系。例如有多个Augsburg

由于该错误,AS实例无法处理City特性,随后也就无法处理Dim Geography维度,最终导致部署失败。

若要更正上述问题,需要确保每个城市都是唯一的。

我们使用组合键的方式(City+State Province Code)来唯一标识一个City特性。

设置组合键

1. 在维度设计器中打开Dim Geography维度,然后在Attributes窗格中选择City特性

2. 在Properties窗格中,找到KeyColumns属性,然后单击省略号

在跳出的对话框中,将StateProvinceCode添加到Key Columns列表中。

3. 设置NameColumn

默认情况下,使用列名称作为特性的键列。

AS实例会自动将同一列推断为NameColumn(用于显示特性的成员名称的列)。只要定义一个组合键,就需要为特性定义一个名称列,因为SSDT和AS实例不知道应该使用组合键的哪个列作为特性的名称列。

在KeyColumns下面可以看到NameColumn属性,单击省略号,选择City作为Name Column.

再次Deploy, 可以发现还是有问题:

Warning    16    OLAP 存储引擎中存在错误: 处理时找到重复的属性键: 表:"dbo_DimGeography",列:"PostalCode",值:"12171"。该属性为"Postal Code"。

根据错误提示,我们再次确认数据,发现Postal也有重复。

类似刚才City特性所执行的操作一样,也需要Postal Code特性成员具有唯一性。

1. 选择Postal Code特性,

2. 在Properties窗格中,找到KeyColumns属性,然后单击省略号, 包含数据源中的StateProvinceCode、City和Postal Code列。

3.设置NameColumn为PostalCode

再次Deploy就成功了。

浏览维度

切换到Browser选项卡来浏览Dim Geography维度的数据。

默认选中的Hierarchy就是Geography, 随便展开一些level来看

我们来做几个修改,使得UI更加友好。

将Geography层次结构的All级别名称更改为All Countries

我们回到维度设计器Dimension Structure

在Hierarchies窗格中选择Geography层次结构

按F4切换到Properties窗口,第一个属性是AllMemberName, 默认不显示任何值,填入All Countries

再次部署项目,再次切换到Browser页面,点击Reconnect菜单。

可以看到All已经变成All Countries了。

对某个级别的成员进行排序

某个级别的成员就是构成该级别的特性的成员。

如Geography层次结构中Country级别的成员实际上就是特性English Country Region Name的成员。(前面我们重命名过English Country Region Name,改成了Country)

我们就以这个Country为例,使用名称列来显示特性名称,使用键列来进行排序。

维度中每个特性都有以下两个属性:KeyColumns和NameColumn, 其中,KeyColumns属性用于指定对成员进行排序所用的列,而NameColumn属性用于保存成员的描述性名称。

默认情况下,维度向导和维度设计器会在向维度中添加添加特性时设置KeyColumns属性,但不会设置NameColumn属性。

如果NameColumn属性为空,AS将返回KeyColumns值作为成员的描述性名称,以响应客户端请求。

按F4切换到Country的属性,默认是如下设置

我们将KeyColumns改成Country Region Code, 将NameColumn改成原来的KeyColumns中的值。

再确认下Properties窗口的Advanced部分中, 确保OrderBy属性的值为Key

再次部署项目,再次切换到Browser页面,点击Reconnect菜单。

优化特性

在设计维度中,如果维度过多,看起来会很乱,我们可以通过两个特性属性来操纵特性对最终用户的可见性。

选中相应属性,直接看下属性窗口的说明就可以区别开来:

AttributeHierarchyEnabled

Indicates whether an atrribute hierarchy is enabled for this attribute. If the attribute hierarchy is not enabled, then the attribute cannot be used in a user-defined hierarchy.

AttributeHierarchyVisible

Indicates whether the attribute hierarchy is visible to client applications.

Even if the attribute hierarchy is not visible, it can still be used in a user-defined hierarchy and referenced in Multidimensional Expressions(MDX).

我们简单测试下:

将English Country Region Name 的AttributeHierarchyEnabled设为False, 可以看到Deploy会报错。(因为我们在用户层次结构中使用了它)。

将French Country Region Name的AttributeHierarchyEnabled设为False, Deploy后可以发现,Browser选项卡中已经没有这一项了。

在维度中定义翻译

最后再看下Tanslations选项卡。

我们利用之前的French Country Region Name,创建法语翻译

1. 切换到Translations页面,New Translation,选择French(France)

2. 在新添加的列中单击English Country Region Name右边的单元格按钮,在弹出对话框中选择FrenchCountryRegionName列。

3. 重新Deploy后浏览 可以看到变成了法语。

总结

我们需要掌握维度部署过程中错误的查找调试。

需要掌握常见的维度功能,如设置组合键,排序,优化特性等。

祝学习进步:)

相关系列文章列表:

所有文章列表
首发博客园 by MiroYuan,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

时间: 2024-10-12 19:49:01

BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度的相关文章

BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系

前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导创建对象,完成主要结构搭建 2. 使用相应的设计器完成最终对象的修改和细化 有点像送快递,先通过大的物流(创建对象向导)把货物送到相应的城市,再通过快递员(设计器进行细化)送到具体顾客手中. 同样的,我们使用维度向导以一种通用的方式来创建维度,然后根据自己的业务需求,使用维度设计器将创建的维度放置到

BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析

上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,即部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏览多维数据集 1. 部署项目 在Solution Explorer中,直接右键项目名称并选择Deploy. 当部署AS项目时,SSDT首先会构建你已经创建的项目,并检查初步的警告和错误,例如无效的定义. 如果项目定义不存在任何错误,SSDT会将你在项目中所创建的所有对象和定义打包,并将其发送到AS

BI之SSAS完整实战教程5 -- 详解多维数据集结构

之前简单介绍过多维数据集(Cube)的结构. 原来计划将Cube结构这部分内容打散,在实验中穿插讲解, 考虑到结构之间不同的部分都有联系,如果打散了将反而不好理解,还是直接一次性全部讲完. 本篇我们将详解Cube结构, 介绍Cube结构的每个部分,让大家对Cube结构能有总体的把握. 由于多维数据集的结构和MDX有很强的联系, 因此会有部分内容涉及到MDX,大家只要大概能看懂就行了,后续会有专门的MDX 专题. 文章提纲 概述 度量值和度量值组 维度 总结 概述 SQL Server Analy

BI之SSAS完整实战教程3 -- 创建第一个多维数据集.docx

上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数据集 在Analysis Services中,可以通过3种方法构建多维数据集:自上而下,自下而上或者基于一个空多维数据集. 一般我们从现有的关系数据库自下而上构建. 在自下而上方式中,需要一个DSV作为多维数据集的构建基础. AS中的多维数据集(Cube)包括两部分: 1. 一个或多个度量值组,其数

BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备

上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很可能需要处理多个关系数据源. 我们可以通过创建一个DSV提供一个整合的单源视图,其中仅包括你定义的一个或多个数据源中感兴趣的数据.数据源和数据源视图构成了后面要介绍的维度和多维数据集等结构的基础. AS2012 支持的主要关系数据源包括SQL SERVER, Oracle, DB2,Teradata

K3Wise插件开发实战教程(全套)持续更新中。。。

这是林枫山自己编写制作的全套K3wise插件教程,欢迎下载学习. 下载目录链接如下: 进度01-K3Wise数据表详解     下载学习文档 ... 原文地址:https://www.cnblogs.com/star-studio/p/11047108.html

ActiveReports 9实战教程(2): 准备数据源(设计时、运行时)

在上讲中<ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版>,我们已经结合Visual Studio 2013搭建好了ActiveReports 9的开发环境,并完成了一个Hello World的RDL报表. 在本文,我们通过配置数据源进行报表实战,做过报表开发的报表达人知道,报表中的数据源分设计时数据源和运行时数据源. 如何理解呢? 这2类数据源,表结构是一样的,用途不一样: 1 设计时数据源,用于研发内部.报表小组进行配置.测试报表

ActiveReports 9实战教程(1): 手把手搭建好开发环境Visual Studio 2013 社区版

ActiveReports9刚刚公布3天.微软就公布了 Visual Studio Community 2013 开发环境. Visual Studio Community 2013 提供完整功能的 IDE ,可开发 Windows.Android 和 iOS 应用.支持:C++, Python, HTML5, JavaScript, 和 C#,VB, F# 语言的开发.提供设计器.编辑器.调试器和诊断工具. 最牛逼的在于你全然能够免费使用该工具: 能够正大光明的免费使用visual studi

【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)

岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品blogo门户网站  环境:VS2008+SQL Server2005 [小编推荐:现在学习可以使用 VS2012或者以上+SQL 2008或及以上  环境不一定必须和教程一样,学习的是思路]主要技术: 主体框架:逻辑架构ASP.NET MVC,物理架构Three Ties,2者相结合. 为了提高网