Ssas
如何計算維度屬性的百分比並獲得正確的聚合?
我們有一個事實表,其中包含卡車/司機/天運輸的重量。
以及每輛卡車最大重量的尺寸。
我們希望運輸重量的百分比,所以我們從
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 不知道如何計算一些總數,但我們可以倖存下來 :)