[英]Summing up a related table's values in PowerPivot/DAX
說我有兩個桌子。 attrsTable:
file | attribute | value
------------------------
A | xdim | 5
A | ydim | 6
B | xdim | 7
B | ydim | 3
B | zdim | 2
C | xdim | 1
C | ydim | 7
sizeTable:
file | size
-----------
A | 17
B | 23
C | 34
我有這些表通過“文件”字段相關。 我想要attrsTable中的PowerPivot度量,其計算使用大小。 例如,假設我要為A,B,C中的每一個設置xdim + ydim / size。計算公式為:
A: (5+6)/17
B: (7+3)/23
C: (1+7)/34
我希望該度量足夠通用,以便以后可以使用切片器按文件或屬性進行切片。 我該如何完成?
我試過了:
dimPerSize := CALCULATE([value]/SUM(sizeTable[size])) # Calculates 0
dimPerSize := CALCULATE([value]/SUM(RELATED(sizeTable[size]))) # Produces an error
知道我在做什么錯嗎? 我可能在這里缺少有關如何在關系中使用DAX的一些基本概念。
嗨Redstreet,
從您的解決方案和Jacob提出的解決方案退一步,我認為創建另一個表來匯總所有計算(可能特別是考慮到您可能有兩個以上具有文件特定屬性的表)可能是有用的。
因此,我又創建了一個表,該表包含(僅)唯一的文件名,因此可以通過以下方式可視化關系:
添加必要的度量要簡單得多(無需計算列)。 我實際上已經測試了2種情況:
1)為屬性值和文件大小創建簡單的SUM度量。 然后將這兩個措施分開並完成工作 :-)。
2)使用SUMX函數具有更通用的解決方案。 然后, DimPerSize計算的最終公式如下所示:
=DIVIDE(
SUMX(DISTINCT(fileTable[file]),[Sum of AttrValue]),
SUMX(DISTINCT(fileTable[file]),[Sum of FileSize]),
BLANK()
)
[AttrValue的總和]為:
=SUM(attrsTable[value])
並且FileSize的總和為:
=SUM(sizeTable[size])
即使SUMX在兩種情況下都遍歷給定文件名的所有實例,這也都可以正常工作。 因此,對於文件B,它也使用zdim進行計算(如果需要將其過濾掉,則使用簡單的計算/過濾器組合)。 就文件大小而言,我也使用SUMX,盡管實際上並不需要它,因為表中每個文件名僅包含1條記錄 。 如果將有2個實例,則根據所需結果使用SUMX或AVERAGEX。
希望這可以幫助。
您似乎希望具有關系的概念,但是就結構或不能簡單地使用“裸”數字列這一事實而言,就CALCULATE()而言,您的走法並不正確。以某種方式打包。
您所希望的方法是正確的,因為一旦獲得運行的簡單版本,就可以在任何相關維度上對其進行切片和切塊。
最佳實踐可能是使用以下幾種方法來建立這一點:
[xdim] = CALCULATE(SUM('attrstable'[value]), 'attrstable'[attribute] = "xdim")
[ydim] = CALCULATE(SUM('attrstable'[value]), 'attrstable'[attribute] = "ydim")
[dimPerSize] = ([xdim] + [ydim]) / VALUES('sizeTable'[size])
但是,取決於准確地設置數據透視表的方式,這也可能會引發錯誤,因為它將嘗試使用總計中的整個“大小”列。 有兩種主要的處理策略:
使用“迭代”公式(例如SUX()或AVERAGEX())在“文件”字段中逐個進行迭代,然后對總計求和或求平均值,例如
[ItdimPerSize] = AVERAGEX(VALUES('sizeTable'[file]),[dimPerSize])
根據要使用的數學,您可能會發現產生的有用平均值,需要使用SUMX,但要根據案例數(即COUNTROWS('sizeTable'[file]))進行確定。
您可能會認為總數無關緊要,只需引入一個錯誤處理元素即可使它們為空白,例如
[NtdimPerSize] = IF(HASONEVALUE('sizeTable'[file]),[dimPerSize],BLANK())
注意,所有這些都假定在創建數據透視表時,您是從“大小表”中“拖入”文件字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.