簡體   English   中英

將MDX計算的度量轉換為SSAS計算的范圍

[英]Convert MDX calculated measure, to scope in SSAS calculations

我有一個度量,可以獲取貨幣匯率的最后一個值。 具有匯率的事實在時間用法的維度用法中進行配置,並且是基於每日的。 因此,使用MDX,我可以通過使用計算得出的指標來成功獲得以貨幣為單位的換算指標:

with member [Measures].[Calculated Comp Money In] as 
SUM([Dim Time].[Date Key].CurrentMember,
        [Measures].[Comp Money In]/[Measures].[Last Currency Rate])

然后在where子句中,我將過濾出我要報告的貨幣使用的貨幣

[Dim Currency].[Currency Key].&[200]

但是,我不喜歡的是我有一個[Measures]。[Comp Money In]和[Measures]。[Comp Money In Calculated] .... 我可以在MDX中使用SCOPE函數,以便[Measures。[Comp Money In]配置了以上計算 然后,我將在SSAS的“計算”部分中添加此計算。

如果使用SSAS的企業版,則可以使用度量進行貨幣換算的度量表達屬性。 這在Analysis Services文檔中記錄得不是很好,但是其工作方式如下:您僅使用一種度量(即[Measures].[Calculated Comp Money In][Measures].[Comp Money In] ,以及在“該度量的“度量表達式”屬性,請在上面的問題中輸入您擁有的表達式:

[Measures].[Comp Money In] / [Measures].[Last Currency Rate]

然后,Analysis Services引擎將為您處理其余的工作。 請注意,此表達式只能包含定義時所用的度量,時間或除以另一個度量(通常為匯率)而沒有其他值。

如果您沒有Analysis Services的企業版,則可以或多或少地將定義復制到計算所得的成員中:

為了能夠繼續使用現有度量,可以將度量[Measures].[Comp Money In]重命名為[Measures].[_Comp Money In] (並在您檢查完一切正常后使該度量不可見)。 然后定義一個與原始度量同名的計算成員:

create member CurrentCube.[Measures].[Comp Money In] as 
       SUM([Dim Time].[Date Key].CurrentMember,
           [Measures].[_Comp Money In]/[Measures].[Last Currency Rate])

更好的是,使用SCOPE來計算度量,並避免單日匯總:假設包含[Measures].[Comp Money In]的度量組和包含[Measures].[Last Currency Rate]的唯一共同維度[Measures].[Last Currency Rate][Dim Time]並且具有鍵屬性[Dim Time].[Date Key] ,並且您的日期層次結構名為[Dim Time].[Date] ,您可以使用

CREATE MEMBER CurrentCube.[Measures].[Comp Money In] as NULL;
SCOPE([Dim Time].[Date Key].[Date Key].members);
    [Measures].[Comp Money In] =
        [Measures].[_Comp Money In] / [Measures].[Last Currency Rate];
END SCOPE;
SCOPE([Dim Time].[Date].Members);
    [Measures].[Comp Money In] =
        Sum(EXISTING [Dim Time].[Date Key].[Date Key].members);
END SCOPE;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM