大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
- 维度属性间的关系及维度的层次结构(Hierarchies)
- 维度与度量的关系
- 多维数据集(Cube)KPI的实现
- 多维数据集(Cube)行为(Action)的实现,例如:钻取
- 多维数据集(Cube)的本地化与视图
- 多维表达式(MDX)的应用
书名:MCTS Self-Paced TrainingKit(Exam 70-448): Microsoft SQL Server 2008 – Business Intelligence Development and Maintenance
第六章 扩展SSAS Cubes(多维数据集)
课程1:定义用户层次结构(Hierarchies)与维度关系
1 维度的主要作用: 提供用户通过不同主题分析数据,以及下钻(drill down)、上卷(roll up)、分类(categorize)、筛选(filter)、汇总(summarize)、执行其他数据操作。
2 定义属性关系(Atrribute Relationships)
1) 一个SSAS 维度(dimension)的数据来源于一个或多个维度表,若维度基于星型结构(Star),其数据源是个单一的维度表,基于雪花结构(snowflake),其数据源跨多个维度表。
2)区别于关系型数据库(以行与列二维形式存储数据),多维数据模型支持数据的层次结构,例如,由年、季度、月份属性组成的层次结构,并由属性间的关系决定层次。
3)维度属性关系分为1:1(1对1),M:1(多对1), M:M(多对多)。
3 创建与修改自定义维度层次结构(Hierarchies)
4 维度与度量组的关联
1)当添加Cube一个维度时,该维度所关联的度量组,与DSV中定义的表关系有关。使用“Dimension Usage”查看或修改维度与度量组的关系。
2)维度与度量组的关系, regular,fact,referenced,many to many, data mining
5 动手试验:创建、修改维度层次结构
练习1:定义属性关系
1)打开Date维度,单击“属性关系”页面,右击“Month Name”属性,新建属性关系,相关联的属性选“Calendar Quarter”,关系类型选“Rigid”,建立“Month Name”属性与“Calendar Quarter”属性多对一的关系。
2)同理,建立“Month Name”与“Fiscal Quarter”属性多对一的关系。
3)同理,建立“Calendar Quarter”与“Calendar Year”属性多对一的关系。
4)同理,建立“Fiscal Quarter”与“Fiscal Year”属性多对一的关系。
5) 打开Product维度,由于是雪花结构的维度,下列属性关系(多对一)自动建立。
6)打开Sales Territory维度,建立“Sales Terriotry Country”与“Sales Terriotry group”属性多对一的关系。
练习2:定义自定义层次结构
1)打开Date维度,在“Dimension Structure”页面,通过拖拽属性的方式,创建“Calendar”层次结构,该层次结构的属性及顺序为Calendar Year,Calendar Quarter,Month Name,Date。
2)同理,创建“Fiscal”层次结构,该层次结构的属性及顺序为Fiscal Year,Fiscal Quarter,Month Name,Date。
练习3:查看、修改维度关系(Dimension Usage)
1) 事实表也可作为维度使用,打开Adventure Works DW2008 DSV,FactInternetSales事实表中添加一个字段“LineItemDescription”,LineItemDescription = convert(char(10),SalesOrderNumber) + ‘Line ‘ + convert(char(4),SalesOrderLineNumber)。
2)根据向导,新增一个名为Internet Sales Order Details维度:
a. 选现有表
b. 数据源信息,选“FactInternetSales”表,Key column默认Sales Order Number,Name Column选“LineItemDescription”。
b. 相关表选择页面,清空所有相关的表的选择。
c. 维度属性选择页面,只选“Sales Order Number”。
3)将“Internet Sales Order Details”维度添加至现有Cube中。
4)打开Adventure Works Cube,在“Dimension Usage”页面中,查看维度与度量的关系。
5)删除一个冗余的Date维度,将Date(Order Date)维度重命名为Date。
5)设置Date维度与Currency Rate度量的关联,关系类型:Regular,由键值连接。保存,部署。
课程2:创建KPIs,行为(actions),翻译与视图(perspectives)
1 理解KPI
在SSAS中,关键性能指标(KPI)是个扩展的度量,主要有4个属性,值(value),目标(goal),状态(status)和趋势(trend)。其中值是必填,其余是可选。
1)值, 表示当前KPI的值,属性通常映射到常规或计算过的度量。
2)目标,定义KPI的目标值,可以是个固定的数值,一个常规用作表示目标值的度量或是计算过的度量。
3)状态,标识如何比较KPI值和目标值,表达式返回-1,0,1,-1为差绩效,0为可接受的绩效,1为好绩效。
4)趋势:标识KPI值的变化趋势,表达式返回[-1,1]。
2 创建关键性能指标KPIs
3 浏览KPIs
有多种方式显示SSAS的KPIs,最简便方法,使用BIDS内置的KPI浏览器,也可以在Excel,SSRS中使用,或是SSMS中应用MDX语句\函数查询KPI的属性值。
4 执行行为(Actions)
1)行为(Actions)的主要作用是扩展Cube的功能,例如:下钻至详细信息。此外,书中提及Excel 2007及以上版本支持这个功能,SSRS不支持,具体没有检验过。
2)行为的类别
a. 常规(regular)行为:dataset,proprietary,rowset,statement,url(默认)
b. 钻取(drillthrouh)行为
c. 报表行为(reporting)
5 通过翻译(Translations)本地化Cubes
6 Cube的视图(perspectives)
7 动手试验:创建Cube KPIs,行为,翻译和视图
练习1:实现经销商的销售KPI
打开Adventrue Works Cube, KPIs页面,新建一个名为“Reseller Sales”的KPI。
1)关联的度量组(associated measure group)选Reseller Sales。
2)KPI值表达式(value Expression) = [Measures].[Reseller Sales Amount]
3) KPI目标表达式(Goad Expression) =
1.40*([Due Date].[Calendar].PrevMember,[Measures].[Reseller Sales Amount])
即目标为当前时间前一个成员销售额的140%
4)状态表达式(Status)
case
when KpiValue(“Reseller Sales”)/KpiGoal(“Reseller Sales”) >= 1 then 1
when KpiValue(“Reseller Sales”)/KpiGoal(“Reseller Sales”) <1 and KpiValue(“Reseller Sales”)/KpiGoal(“Reseller Sales”) >=.85 then 0
else -1
end
5)趋势表达式(Trend)
([Measures].[Reseller Sales Amount]- ([Date].[Calendar].PrevMember,[Measures].[Reseller Sales Amount]))/[Measures].[Reseller Sales Amount]
6)保存,部署,在KPI浏览器中,通过筛选看某个时间reseller sales的销售额,状态和趋势。
练习2:实现一个钻取行为
1)打开Adventrue Works Cube,行为(Actions)页面,新建“New Drillthrough Action”(钻取行为),命名为“Reseller Details”。
2)行为目标–>度量组成员(measure group members)选reseller sales。
3)为限制显示的记录行数,条件(Condition)设
([Date].[Date].currentMember is [Date].[Date].[All])= false
即当选到日期时触发这个行为。
4)钻取的列名,选取Product维度中Product,Color,Model Name属性,选取Date维度中Date属性,以及Reseller Sales中所有度量。实际操作到这步,Product维度与Reseller Sales的关系需要配置一下。
5)为限制显示行数,最大行设100。
6)保存,部署,在浏览器中,将Date维度中Calendar层次结构及Reseller Sales Amount
图一:
图二:
练习3:翻译一个维度
1)打开Product维度,翻译(Translations)页面。新建翻译,选择西班牙语言Spanish(Spain)。
2)在新增的Spanish(Spain)列中,维度名重命名为西班牙语Producto,Product属性与DimProduct表中SpanishProductName绑定。
3)保存,部署,在浏览器中,选语言Spanish(Spain),产品名显示西班牙语。做到这步,老是联想到ToysIII中西班牙语言状态的巴斯光年,: )。
练习4:设置Cube的视图(perspectives)
过于简单,略
课程3:使用MDX创建计算和查询
1 MDX((Multi-Demensional expression)多维表达式语法(SSAS)
1) 元组(Tuples)
引用一个元组中一个度量成员,可以直接使用成员名或加“&”符号,例如:[Product].[Product].[Mountain-100],[Product].[Product].&10。
2)集合(Sets)
3)基本MDX查询(Select)语句
Select <row_axis, mdx_set,> on Columns,
<column_axis, mdx_set,> on Rows
From <from_clause, mdx_name,>
Where <where_clause, mdx_set,>
4)计算成员(with)语句(略)
5)MDX函数
– CurrentMember,PrevMember,Members,Parent,Children
2 创建计算成员(calculated members)
3 定义命名集合(named sets)
4 动手试验
练习1:在SSMS中,创建和执行MDX查询语句
1)打开SSMS,打开Template Explorer视图(ctrl + alt + T),单击Analysis Server,展开MDX–>Queries,双击Basic query template,生成select基本语句。连接本地(localhost)SSAS Server。选择“TK 70-448 SSAS Project”数据库。
2)MDX查询语句编辑如下:
Select [Measures].[Internet Sales Amount] on Columns,
[Product].[Product Category].members on Rows
From [Adventure Works]
Where [Date].[Calendar].[Calendar Year].&[2008]
3)执行结果:
练习2:在BDIS中定义一个计算成员
1)打开Adventure Works Cube,计算(calculations)页面,新建一个名为Sales Amount的计算成员,配置如下属性:
Name = Sales Amount
Expression = [Measures].[Internet Sales Amount] + [Measures].[Reseller Sales Amount]
Format String = currency
2)单击calculation属性,calculation name选[Measures].[Sales Amount],Display Foler输入Sales Summary
3)保存,部署,在浏览器中的效果:此外,OLAP只保存计算成员的定义,非数据,所以Cube大小不会增加。
练习3:定义一个命名集合(named Set)
1)打开Adventure Works Cube,计算(calculations)页面,新建一个名为Top 50 Most Profitable Customers
的命名集合。
表达式 =
TopCount((existing[Customer].[Customer].[Customer].Members),50,[Measures].[Internet Sales Amount])
2)保存,部署,在浏览器中查看效果:显示最佳50个客户。此外,这个集合也可以在Excel 2007及以上版本中使用。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/210135.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...