MDX之Avg函数使用
日均值是比较常见的指标,本文对 MDX 计算日均值做一个总结
MDX 计算日均值,表达式一
WITH MEMBER Measures.[日均值] AS
Avg(
Descendants(
[日期].[日期层次].CurrentMember,
[日期].[日期层次].[日期]
),
Measures.[主帖数]
)
,Format_String = "#,##0"
SELECT
Measures.[日均值] ON COLUMNS,
[日期].[日期层次].[月份] ON ROWS
FROM
[forum]
上面的代码使用 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
结果如下

特别要注意,计算季度日均值时,是季度指标/季度日期数,不能用月的日均值除以3。
这就是一种所谓半累加行为,参考说明见本文结尾。
层次结构展示

仔细看一下,上述结果有些问题

原来因为有几天没有帖子数, 而 avg 函数是不计算空值的。
修改一下 mdx 的计算方法,先 sum 再除以 count
WITH MEMBER Measures.[日均值] AS
sum(
Descendants(
[日期].[日期层次].CurrentMember,
[日期].[日期层次].[日期]
),
Measures.[主帖数]
)/ Descendants(
[日期].[日期层次].CurrentMember,
[日期].[日期层次].[日期]
).count
,Format_String = "#,##0"
SELECT
{ Measures.[日均值]} ON COLUMNS,
Descendants(
[日期].[日期层次].CurrentMember,
[日期].[日期层次].[月份]
) ON ROWS
FROM
[forum]
where [日期].[月份].&[2004-06-01T00:00:00]
得出正确结果:

重新看了一下 avg 函数说明,发现配合 CoalesceEmpty 函数可以包含空值
标准的写法
WITH MEMBER Measures.[日均值] AS
avg(
Descendants(
[日期].[日期层次].CurrentMember,
[日期].[日期层次].[日期]
),
CoalesceEmpty( Measures.[主帖数],0)
)
,Format_String = "#,##0"
SELECT
{ Measures.[日均值]} ON COLUMNS,
Descendants(
[日期].[日期层次].CurrentMember,
[日期].[日期层次].[月份]
) ON ROWS
FROM
[forum]
where [日期].[月份].&[2004-06-01T00:00:00]
CoalesceEmpty 函数说明
http://msdn.microsoft.com/zh-cn/library/ms146080.aspx
如果能保证值都为非空或者本来就不需要包含空值,可以在 ssas 里直接把度量聚合函数
设为 AverageofChildren,完全不用写 MDX。计算结果同 MDX 表达式一

AverageofChildren 是半累加的一种,参考说明
SSAS 中的半累加聚集类型 (Semi-Additive Aggregation Type)
最终按层次展开效果,如下图

MDX之Avg函数使用的更多相关文章
- PostgreSQL avg()函数
PostgreSQL的AVG函数是用来找出各种记录中的一个字段的平均值. 为了理解AVG函数考虑表COMPANY 有如下记录: testdb# select * from COMPANY; id | ...
- SQL AVG 函数
定义和用法 AVG 函数返回数值列的平均值.NULL 值不包括在计算中. SQL AVG() 语法 SELECT AVG(column_name) FROM table_name SQL AVG() ...
- 25.AVG 函数
定义和用法 AVG 函数返回数值列的平均值.NULL 值不包括在计算中. SQL AVG() 语法 SELECT AVG(column_name) FROM table_name SQL AVG() ...
- SQL-W3School-函数:SQL AVG() 函数
ylbtech-SQL-W3School-函数:SQL AVG() 函数 1.返回顶部 1. 定义和用法 AVG 函数返回数值列的平均值.NULL 值不包括在计算中. SQL AVG() 语法 SEL ...
- mysql AVG()函数 语法
mysql AVG()函数 语法 作用:AVG 函数返回数值列的平均值.NULL 值不包括在计算中.大理石模组 语法:SELECT AVG(column_name) FROM table_name m ...
- mysql获取某个字段平均值方法AVG函数的使用
直接上脚本 ,)) AS 平均分 FROM students WHERE sex= '男' 其中,特别说明一下CAST关键字 CAST(字段名 as 要转换的类型) #其中,可以转换的类型为: CHA ...
- mysql avg()函数,获取字段的平均值
mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...
- MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Sum, Aggregate, Avg
开篇介绍 SSAS 分析服务中记录了大量的聚合值,这些聚合值在 Cube 中实际上指的就是度量值.一个给定的度量值可能聚合了来自事实表中上千上万甚至百万条数据,因此在设计阶段我们所能看到的度量实际上就 ...
- MDX函数(官方顺序,带示例)
MDX函数(官方顺序) 1. AddCalculatedMembers (MDX) 返回通过将计算成员添加到指定集而生成的集. 语法: AddCalculatedMembers(Set_Expres ...
随机推荐
- Java线程池技术以及实现
对于服务端而言,经常面对的是客户端传入的短小任务,需要服务端快速处理并返回结果.如果服务端每次接受一个客户端请求都创建一个线程然后处理请求返回数据,这在请求客户端数量少的阶段看起来是一个不错的选择,但 ...
- 简单使用FusionCharts(Free)
介绍 FusionCharts Free 是一个跨平台,跨浏览器的flash图表组件解决方案,能够被 ASP.NET, ASP, PHP, JSP, ColdFusion, Ruby on Rails ...
- hdu 1205 吃糖果(抽屉原理)
题意:N种糖果,不能把一样的放在一起吃,即第一次吃一种,下一次吃另一种. 思路:找到个数最多的糖果种类(最大的数目记作 ma,该糖果种类记为a),首先把这n个糖果放到n个抽屉里面,然后把剩余的N-1种 ...
- IntelliJ IDEA 2016.1注册码
IntelliJ IDEA 2016.1刚发布不久,破解注册的方法是在太少,15的注册URL也不管用,真是很头疼... 幸好发现一枚注册码,感谢sanshi的奉献精神!!! 原文链接: http ...
- 「IOI1998」「LuoguP4342」Polygon(区间dp
P4342 [IOI1998]Polygon - 洛谷 题意翻译 题目可能有些许修改,但大意一致 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符 ...
- 单次目标检测器-YOLO简介
YOLO 在卷积层之后使用了 DarkNet 来做特征检测. 然而,它并没有使用多尺度特征图来做独立的检测.相反,它将特征图部分平滑化,并将其和另一个较低分辨率的特征图拼接.例如,YOLO 将一个 2 ...
- MongoDB监控之一:运行状态、性能监控,分析
为什么要监控? 监控及时获得应用的运行状态信息,在问题出现时及时发现. 监控什么? CPU.内存.磁盘I/O.应用程序(MongoDB).进程监控(ps -aux).错误日志监控 1.4.1 Mong ...
- SQL Agent 与 Analysis Server 使用同一个账号
参考网址:http://www.cnblogs.com/wghao/archive/2010/12/21/1912217.html 场景: 部署了一个作业: 第一步:执行一个SSIS 包进行增量更新 ...
- OnCtlColor
https://baike.baidu.com/item/OnCtlColor/4750440?fr=aladdin CTLCOLOR_BTN 按钮控件 · CTLCOLOR_DLG 对话框 · CT ...
- c/c++面试45-50之字符串
45 使用库函数将数字转换为字符串,下面是常用库函数 (1) itoa():将整型转换为字符串 (2)ltoa():将长整形转换为字符串 (3)gcvt():将浮点转换为字符串 46 不使用库函数将整 ...