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

昏暗经销商:

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

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

在此处输入图像描述

在此处输入图像描述

现在我写了这个MDX查询来选择经销商互相支付了多少钱:

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


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

我得到了这个结果:

在此处输入图像描述

现在我想知道经销商从对方那里收到了多少钱,我写了这个查询:

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]

并得到这个结果:

在此处输入图像描述

我得到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]

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

在此处输入图像描述

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

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

我收到了这个错误:

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

我怎样才能得到这个结果?

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

抱歉解释太多...

谢谢

4

1 回答 1

3

尝试以下更改:

MEMBER ReceiverAmount AS
  (LinkMember   
     ([Sender].[Hierarchy].CurrentMember, [Receiver].[Hierarchy])  
     ,[Measures].[Amount]
     ,[Sender].[Hierarchy].[All]), FORMAT_STRING = "Standard"
于 2019-12-21T16:47:33.650 回答