1

キューブの日々の変化を示すレポートを作成する必要があります。たとえば、アカウントの場合、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

これは、アカウントごとに 2 つの列を示しています。

        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 でこれを実現する方法と、それが可能かどうかさえわかりません。

4

1 に答える 1

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

ただし、大きな立方体ではパフォーマンスがあまり良くない可能性があることに注意してください。

于 2013-05-20T20:07:23.853 に答える