4.1 销售数据仓库OLAP
以销售数量和销售额为度量,建立了以时间维、客户维、产品维、产品类别维、销售区域维等维度的销售多维数据集之后,就可以基于销售多维数据集实施OLAP分析,进而为企业管理者提供有价值的决策支持信息。使用SQL Server 2005数据仓库附带的Analysis Services可以方便直观地获得分析结果。图4-1 是按销售区域维(即客户所在地区)、时间和产品分类汇总的销售数量和销售金额。
同样的,在SQL Server 2005 Analysis Services 中只须根据数据分析的需要在多维数据集中进行简单的点击和拖动,可以生成以销售数量和金额为度量,以时间维、产品类别维、客户维、销售区域维的不同组合,再考虑到比如时间维的年、季度、月等不同层次。这样,就可以从不同角度、不同的汇总级别来观察数据,获得对销售管理有价值的信息。
4.2 MDX查询和计算
当然,在Analysis Services中利用多维数据集的浏览器来通过拖拉可以达到分析的目的,但同时MDX(MultiDimension Expression,多维表达式)也提供了功能完备、基于语句的脚本语言,用于定义、使用以及从Microsoft SQL Server 2005 Analysis Services (SSAS) 中的多维对象中检索数据。MDX提供以下几种语言功能:
·用于创建、删除以及使用多维对象的数据定义语言 (DDL) 语句。
·用于从多维对象中检索操作数据的数据操作语言 (DML) 语句。
·用于管理作用域、上下文以及 MDX 脚本内的流控制的脚本语言语句。
·用于操作从多维对象中检索的数据的大量运算符和函数。
·使用用户定义函数扩展 MDX 的功能。
MDX 在很多方面与关系数据库常用的 SQL 语法类似,但 MDX 不是 SQL 语言的扩展。事实上,MDX 所提供的一些功能也可由 SQL 提供,尽管不是那么有效或直观。下面是一段代码,用于从销售多维数据集中查询出2005和2006年HGC和Vcaps两种产品的销售量和销售额。
Select
CrossJoin({[Dim Time].[Year].&[2005],[Dim Time].[Year].&[2006]},
{[Measures].[Order Quantity],[Measures].[Sales Amount]}) on Columns,
{[Dim Item].[Item Category Name].&[HGC],
[Dim Item].[Item Category Name].&[Vcaps]}
ON Rows
From [Sales OLAP]
在SQL Server Mangemnet Studio工具中,可以向运行SQL语句一样运行MDX查询语句,运行上述代码和的查询结果如图4-2。
图4-2 MDX查询语句与运行结果
当然,也可以在多维数据集设计器中建立计算成员AverageSalsesPrice来获得平均销售价,并给它赋予MDX表达式[Measures].[Sales Amount]/[Measures].[Order Quantity],见图4-3。
图4-3 维计算成员赋予MDX表达式
通过再处理多维数据集后使新建计算成员加入到度量值组中。在SQL Server Mangemnet Studio工具中运行一下更新过的以下代码(斜体加黑部分系新添)可以得到图4-4的结果。
Select
CrossJoin({[Dim Time].[Year].&[2005],[Dim Time].[Year].&[2006]},
{[Measures].[Order Quantity],[Measures].[Sales Amount],
[Measures].[AverageSalesPrice]}) ON Columns,
{[Dim Item].[Item Category Name].&[HGC],
[Dim Item].[Item Category Name].&[Vcaps]} ON Rows
From [Sales OLAP]
图4-4 加入计算成员后的MDX查询结果
4.3 KPI分析
KPI(Key Performance Indicators,关键性能指标),为企业提供了定义自定义图形化业务衡量标准的功能,让企业关切的指标直接由多维数据集产生视觉化的结果。若要在 Microsoft SQL Server 2005 中定义关键性能指标KPI(见图4-5),应当首先定义与 KPI 关联的 KPI 名称和度量值组。KPI 可以与所有度量值组或与单个度量值组关联。然后定义以下 KPI 元素:
图4-5 多维数据集中的KPI设计
值表达式:值表达式是物理度量值(如销售)、计算度量值(如销售平均价)或使用多维表达式(MDX)表达式在 KPI 中定义的计算。如:SUM( [Dim Time].[Year].&[2004],[Measures].[Sales Amount]/[Measures].[Order Quantity])
目标表达式:目标表达式是值或者是解析为值的 MDX 表达式,它用于定义值表达式所定义的度量值的目标。例如,目标表达式可以是公司业务经理希望的年度平均销售单价。
状态表达式:状态表达式是 MDX 表达式,Analysis Services 用它来计算与目标表达式相比,值表达式的当前状态,其正常取值范围是 -1 到 +1。-1 表示非常差,而 +1表示非常好。状态表达式用图形显示,以帮助您易于确定值表达式与目标表达式相比较的状态。如:IIf(KPIValue( "Average Sales Price in 2004" ) - KPIGoal( "Average Sales Price in 2004" ) >=0,1,-1)
走向表达式:走向表达式是 MDX 表达式,Analysis Services 用它来计算与目标表达式相比,值表达式的当前走向。走向表达式可帮助业务用户快速确定相对于目标表达式,值表达式是否正在变得更好或更差。可以将几个图形中的某一个与走向表达式关联,以便帮助业务用户能够快速地了解走向。
图4-6显示了针对销售数据仓库,2004年销售平均价是否大于20?2005年销售平均价是否大于18?2006年销售平均价是否大于15?通过再次处理多维数据集Cube,可以发现实际的销售平均单价与目标的不同以及直观的状态。
图4-6 KPI浏览结果
4.4 多维数据集的更新
多维数据集创建后,为满足用户对不断变化的数据的应用,需要定期对多维数据集进行更新。首先通过 SQL Server Integration Services中的DTS数据转换或将他设定成定期执行任务,来更新中间库,然后通过处理多维数据集来更新CUBE。当然也可对多维数据集设定一个更新任务,来定期处理该多维数据集。见下图4.7:
图4.7 设定任务来更新Cube
浙公网安备 33010602011771号