今天做数据分析的时候,通过两个时间维度关联起来的查询的数据是对角线形式的,这不是我需要的结果,经过多方面询问,最终发现Linkmember可以解决此问题。

先谈谈LinkMember基本概念和用法。用法:LinkMember(member,dimension),返回:成员,先看下图:

彭智勇-MDX用法

笔者需要将红色圆圈组成的对角线的数据提取出来,如何达到效果呢?从图上可以看出,就是当横向时间维度(我们假设为DimTX,以备下文使用)和当纵向时间维度(我们假设为DimTY,以备下文使用)相同时,返回数据。

现在再看一下来自MSDN上对于LinkMember的简述:该函数基于给定层次结构中的一个成员返回对相关层次结构中的一个成员的引用。这两个层次可以属于相同维度(此时一个维度具有多个层次结构),也可以属于不同维度(在Microsoft OLAP/Analysis Service中,不同的层次结构是不同的维度)。该函数按照主键而不是名称匹配成员。所以,具有相同主键而名称不同的成员将被关联。

显然,我们来套用以上简述,LinkMember可以基于DimTX(给定层次结构)中的一个成员返回对DimTY(相关层次结构)中的一个成员,就是说当DimTX的成员为12/01时,通过LinkMember可以返回12/01的DimTY成员,这样DimTX和DimTY关联了起来,即时可以得到红色圆圈组成的对角线的数据。我们可以将此定义一个计算成员:

WITH MEMBER [DimTY].[month].[X]
AS LINKMEMBER([DimTX].[month].CURRENTMEMBER,[DimTY].[month])

然后再调用上面定义的计算成员,得到如下图所示结果:

彭智勇-MDX用法

PS:定义计算成员时,成员类型一定要跟LinkMember成员类型相同,而LinkMember成员返回类型同参数dimenssion,故定义计算成员类型同dimenssion。

空非易文章均为原创,转载请以链接形式注明本文地址

本文地址:http://pengzhiyong.com/archives/mdx-linkmember.html

作者:空非易 | 标签: , | 浏览:1391