分享到:
发表于 2011-04-25 09:29:00 楼主 | |
日均值是比较常见的指标,本文对使用 MDX 计算日均值做一个总结 MDX 计算日均值,表达式一 WITH MEMBER Measures.[日均值] AS 上面的代码使用 Descendants 获得在当前层次上的所有日期集合 然后使用 avg 函数取得平均值 MDX 的 Descendants 函数返回成员在指定级别或距离上的后代集, 可以选择包括或不包括其他级别上的后代。 Descendants 函数是 MDX 里最复杂的函数之一,搞懂它就真正了解了维度层次。 Descendants 说明 http://msdn.microsoft.com/zh-cn/library/ms146075.aspx avg 函数说明 http://msdn.microsoft.com/zh-cn/library/ms146067.aspx 结果如下 特别要注意,计算季度日均值时,是季度指标/季度日期数,和月的日均值无关。 这就是一种所谓半累加行为,参考说明见本文结尾。 层次结构展示
修改一下 mdx 的计算方法,先 sum 再除以 count WITH MEMBER Measures.[日均值] AS 得出正确结果: 重新看了一下 avg 函数说明,发现配合 CoalesceEmpty 函数可以包含空值 标准的写法 WITH MEMBER Measures.[日均值] AS CoalesceEmpty 函数说明 http://msdn.microsoft.com/zh-cn/library/ms146080.aspx 如果能保证值都为非空或者本来就不需要包含空值,可以在 ssas 里直接把度量聚合函数 设为 AverageofChildren,完全不用写 MDX。计算结果同 MDX 表达式一 AverageofChildren 是半累加的一种,参考说明 SSAS 中的半累加聚集类型 (Semi-Additive Aggregation Type) 最终按层次展开效果,如下图
|
|
楼主热贴
个性签名:无
|
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见