Ssas

如何計算維度屬性的百分比並獲得正確的聚合?

  • September 5, 2017

我們有一個事實表,其中包含卡車/司機/天運輸的重量。

以及每輛卡車最大重量的尺寸。

我們希望運輸重量的百分比,所以我們從

create MEMBER CURRENTCUBE.[Measures].[% WT]
AS [Measures].[Weight]/[Dim Truck].[Max_weight].currentmember.properties("key"), 
FORMAT_STRING = "Percent";

這僅適用於一輛卡車在特定日期和司機只有一片葉子的個別行。

如果卡車在一天內進行兩次旅行,而不是 sum(weight)/sum(max_weight) 或者如果您更喜歡 sum(weight)/(n*max_weight),那麼我們得到的是 sum(weight)/max_weight

完全相同的情況發生在任何聚合級別。例如,月或年或總計。或者只是在卡車級別。

我們一直在玩各種公式和範圍,但沒有成功。

知道如何定義它以使聚合按預期工作嗎?

您的主要問題是您將 a 儲存measure在您的維度中。除非您將度量儲存在它所屬的位置,即事實表中,否則您將繼續遇到多选和/或聚合問題。

要麼更改 ETL 以複製max_weight事實表,要麼在 DMV 中使用命名查詢將事實表連接到維度表,以便創建真正的度量。

根據您的情況,您還可以添加新的度量值組。

可能一些 MDX COUNT 函式可以解決問題,但是由於實際的事實表在某種程度上更複雜,並且已經有一個常量值 1 在其他相關資訊中標識此特定行,我們只是將公式修改為

create MEMBER CURRENTCUBE.[Measures].[% WT]
AS [Measures].[Weight]/[Dim Truck].[Max_weight].currentmember.properties("key")/[Measures].[N_Deliveries], 
FORMAT_STRING = "Percent";

N_Deliveries 始終為 1(對於具有其他相關資訊的其他行,則為 0)。

這行得通……雖然 Excel 不知道如何計算一些總數,但我們可以倖存下來 :)

引用自:https://dba.stackexchange.com/questions/184804