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中锁的内存语义
我们都知道,Java中的锁可以让临界区互斥执行.锁是Java并发编程中最重要的同步机制,锁除了可以让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息.下面是锁的释放-获取的代码: C ...
- android vector pathData探究,几分钟绘制自己的vectordrawable
之前经常看到一些酷酷的图标效果, 深入进去发现不是直接用的图片, 而是一些以Vector标签开头的xml文件, 于是就看到了如下代码: <vector xmlns:android="h ...
- codeforces A. Array 解题报告
题目链接:http://codeforces.com/problemset/problem/300/A 题目意思:给出n个数,将它们分成三批:1.所有数相乘的结果 < 0 2.所有数相乘的 ...
- Linux 修改所属组与所属人
1.chown work /test/* 修改test文件夹下所有文件的所属人(owner)为work 2.chgrp work /test/* 修改test文件夹下所有文件的所属组(group)为w ...
- python 基础之第十三天(xineted服务器,forking,多线程)
- codevs 3027线段覆盖2
传送门 3027 线段覆盖 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标, ...
- Persistent connections CONN_MAX_AGE django
Persistent connections¶ Persistent connections avoid the overhead of re-establishing a connection to ...
- CF 757E Bash Plays with Functions——积性函数+dp+质因数分解
题目:http://codeforces.com/contest/757/problem/E f0[n]=2^m,其中m是n的质因子个数(种类数).大概是一种质因数只能放在 d 或 n/d 两者之一. ...
- .NETFramework:Timers
ylbtech-.NETFramework:Timers 1.返回顶部 1. #region 程序集 System, Version=4.0.0.0, Culture=neutral, PublicK ...
- web集群时代
随着业务的不断增加,我们的单台服务器承受不住需求,那么我们就需要对此进行伸缩,有两种维度,一种是纵向的也就是增大该台服务器的硬件,再者就是加新服务器与之前的机器组成集群对外提供服务,我们都知道前者是有 ...