使用LinkMember函数获取所有链接的成员

问题描述 投票:1回答:1

请考虑以下结构:

事实:

Sender           Receiver         Amount
----------------------------------------
Reseller1        Resseler2        100 
Reseller1        Resseler3        200
Reseller3        Resseler1        150
Reseller3        Resseler2        50
Reseller1        Resseler4        100
Reseller4        Resseler2        350
Reseller4        Resseler1        500
Reseller4        Resseler3        250

DimReseller:

ResellerCode            ResellerName
---------------------------------------
1                        Reseller1
2                        Reseller2
3                        Reseller3
4                        Reseller4

[DimReseller是角色扮演的维度,与事实表有2个关系:

enter image description here

enter image description here

现在,我编写了此MDX查询,以选择转销商已付给对方多少钱:

WITH MEMBER SenderAmount AS
[Measures].[Amount], FORMAT_STRING = "Standard"


SELECT    {SenderAmount} ON 0,
NON EMPTY [Sender].[Hierarchy].MEMBERS ON 1
FROM [MyCube]

我得到这个结果:

enter image description here

现在,我想获得转销商相互之间收到的钱,我写了这个查询:

WITH 
MEMBER SenderAmount AS
[Measures].[Amount], FORMAT_STRING = "Standard"

MEMBER ReceiverAmount AS
  (LinkMember   
     ([Sender].[Hierarchy].CurrentMember, [Receiver].[Hierarchy])  
     ,[Measures].[Amount]), FORMAT_STRING = "Standard"


SELECT    {SenderAmount, ReceiverAmount} ON 0,
NON EMPTY [Sender].[Hierarchy].MEMBERS ON 1
FROM [MyCube]

并获得此结果:

enter image description here

我收到了null作为收款金额。我测试了此MDX查询:

select {LinkMember([Sender].[Hierarchy].[Reseller Code].&[1], [Receiver].[Hierarchy])} on 0
from [MyCube]

并且我得到650(正确的金额)为Reseller1。现在,当我以这种方式更改查询时:

select {LinkMember([Sender].[Hierarchy].currentmember, [Receiver].[Hierarchy])} on 0,
[sender].[Hierarchy].members on 1
from [MyCube]

我得到这个结果(再次付款):

enter image description here

以及当我以这种方式更改查询时:

select {LinkMember([Sender].[Hierarchy].currentmember, [Receiver].[Hierarchy])} on 0,
[receiver].[Hierarchy].members on 1
from [MyCube]

我收到此错误:

层次结构层次结构已经出现在Axis0轴中。

如何获得此结果?

Reseller              Received                   Paind                     
--------------------------------------------------------
Reseller1             650                        400
Reseller2             500                        (null)
Reseller3             450                        200
Reseller4             100                        1100

对不起,过多的解释...

谢谢

ssas mdx cube measure multidimensional-cube
1个回答
2
投票

尝试以下更改:

MEMBER ReceiverAmount AS
  (LinkMember   
     ([Sender].[Hierarchy].CurrentMember, [Receiver].[Hierarchy])  
     ,[Measures].[Amount]
     ,[Sender].[Hierarchy].[All]), FORMAT_STRING = "Standard"
© www.soinside.com 2019 - 2024. All rights reserved.