MDX:从单元格中缓慢变化的维度获取属性

时间:2013-05-09 20:33:25

标签: ssas mdx

我需要构建一个显示多维数据集中日常更改的报告。例如。对于帐户,我们在第X天显示余额,在第Y天显示余额。我通过以下方式实现:

WITH
MEMBER OldBalance AS ([Balance], [Date].[Date].[2013-05-01]) -- start date
MEMBER NewBalance AS ([Balance], [Date].[Date].[2013-05-04]) -- end date
SELECT {OldBalance, NewBalance} ON COLUMNS
[Account].[AccountNumber].[AccountNumber] ON ROWS
FROM TheCube

这显示每个帐户有两列,每个人都很高兴:

        OldBalance   NewBalance
ACT123   1050.25        1048.29
ACT345    950.08        1421.92

除帐号外,[帐户]维度还将SalesRepName作为属性,SalesRepName的值可能会随时间变化,使[帐户]变为缓慢变化的维度。我想看到的是:

        OldBalance   NewBalance  OldSalesRep  NewSalesRep
ACT123   1050.25        1048.29  John Smith   John Smith
ACT345    950.08        1421.92  John Smith   George Fisher

但我不知道如何在MDX中实现这一点,以及它是否可行。

1 个答案:

答案 0 :(得分:1)

诀窍是使用TopCount然后Item之类的东西:

WITH
MEMBER [Date].[Date].StartDate AS [Date].[Date].[2013-05-01]
MEMBER [Date].[Date].EndDate AS [Date].[Date].[2013-05-04]
MEMBER OldBalance AS ([Balance], [Date].[Date].StartDate)
MEMBER NewBalance AS ([Balance], [Date].[Date].EndDate)
MEMBER OldSalesRep AS 
    TopCount(
        NonEmpty(
            ([Account].[SalesRep].[SalesRep], [Date].[Date].StartDate, 
            [Account].[AccountNumber].CurrentMember), [Balance]), 
        1)
    .Item(0).Item(0).Properties("Caption")
MEMBER NewSalesRep AS 
    TopCount(
        NonEmpty(
            ([Account].[SalesRep].[SalesRep], [Date].[Date].EndDate, 
            [Account].[AccountNumber].CurrentMember), [Balance]), 
        1)
    .Item(0).Item(0).Properties("Caption")
SELECT {OldBalance, NewBalance, OldSalesRep, NewSalesRep} ON COLUMNS
[Account].[AccountNumber].[AccountNumber] ON ROWS
FROM TheCube

但请记住,在大型立方体上,性能可能不太好。