求人数占比的MDX疑问

0
总人数10,其中男性3人,女性7人,男性占比3/10, 下面是人数占比的MDX伪代码:
Create Member .
as
. / (..CurrentMember.Parent, .)

现在的问题是,如果又想看下年龄的人数占比,就要修改.为
Create Member .
as
. / (..CurrentMember.Parent, .)

请问如何重用.这个度量值,使其能适配到所有可能的维度,也就是说分母总能取得总人数
已邀请:
0

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2013-12-19 回答

一般还是分成按性别占比和按年龄占比,所以你还是创建两个计算成员,这个没有问题。

并且你的分母要取得所有的人数,你的这个 . 应该表示的就是所有人数吧,那么你把它放到分母的位置就可以了,我看你现在是把 . 放到了分子的位置。
0

eamartin 2013-12-19 回答

.会受到拖出来的维度过滤的,比如拖出来性别,人数就会按各个性别分配,拖出来年龄,同理。
0

eamartin 2013-12-19 回答

应该不是必须创建N个计算成员来解决这个问题的,如此的话,要创建的就多了,而且不容易让用户区分到底该用哪个
0

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2013-12-19 回答

我想到一个比较"笨"的方法,你可以自己尝试一下,我说一下我的思路。

第一,如果不愿意给所有的维度成员都创建计算成员的话,那么你可以在计算成员里判断当前维度是哪一个。
比如:
MEMBER 计算成员占比
IF ..CurrentMember IS NOT EMPTY/NULL
THEN (..CurrentMember ,.)
ELSE IF ..CurrentMember IS NOT EMPTY/NULL
THEN (..CurrentMember ,.)

第二,关于总人数的这个问题,确实是因为 SSAS 的自动匹配机制 AUTO-EXISTS 造成的,所以它取的就是当前维度上的聚合,所以不会取到所有的。
我想的是直接在一个计算成员中列举所有的维度
(..ALL,.) + (..ALL,.)

当然先看看能不能解决问题,如果能解决再想想有没有更简单的方式。
0

eamartin 2013-12-19 回答

我有印象看到过可以在mdx代码中强制忽略auto-exists,只有这样才能算完美,你的两个方案我也想过,可扩展性不强,性能也不理想,不考虑

要回复问题请先登录注册