2017-10-08 81 views
2

對符合條件的記錄實例進行計數我有一個問題,嘗試對Power BI表中的行進行計數,其中標準根據假設參數而變化。該表大約有1100萬行,但我會試着舉一個我想要做的事情的簡單例子。原諒帖子的長度,但實際上並沒有太多。Power BI基於假設參數

的數據,因爲它從SQL Server有看起來像這樣(簡化爲清楚起見)

Item Category Price AvgCatPrice Variance 
Dog  Pet   20.00 15.00   33.33 
Cat  Pet   12.00 15.00   20.00 
Goat Pet   18.00 15.00   20.00 
Maggot Pet   05.00 15.00   66.67 
Apple Fruit  01.00 01.20   16.67 
Orange Fruit  01.20 01.20   00.00 
Mango Fruit  01.30 01.20   08.33 

方差就是該類別的百分比價格與平均之差的絕對值,但是這不是有關的問題

所以我加載數據到Power Bi,一切看起來像上面。

然後我添加一個簡單的計算列作爲Count =1

如果我把這些值在表Category爲行和Count的價值觀,我得到

Category Count 
Fruit  3 
Pet   4 

這是符合市場預期。

然後我添加了一個叫做VarPc的假設參數,它是一個介於0和100之間的十進制數,增量爲5.我選擇了爲參數自動添加切片器的選項。

然後我添加一個像這樣的新列。

OverVarPc = IF(SOTestDat[Variance] > VarPc[VarPc Value],1,0) 

如果我添加此表中,我得到

Category Count OverVarPc 
Fruit  3  2 
Pet   4  4 

..這是正確的假設VarPc爲零。

現在第一個問題如果我通過調整滑塊或輸入框中輸入參數,該OverVarPc列不會重新評估。

下一個方法我添加了第二個表,這次顯示了所有的細節(沒有故意聚合)。 我再添加了一個新措施的VarPc表稱爲SumIfGt以此爲定義

SumIFGt = IF((sum(SOTestDat[Variance]) - sum(VarPc[VarPc])) >0,1,0) 

表看起來是這個滑塊在0%

Item Price Variance Count OverVarPc SumIFGt 
Apple 1  16.67  1  1   1 
Cat  12  20   1  1   1 
Dog  20  33.33  1  1   1 
Goat 18  20   1  1   1 
Maggot 5  66.67  1  1   1 
Mango 1.3  8.33  1  1   1 
Orange 1.2  0   1  0   0 

如果我將它設置爲25%那麼桌子現在看起來像這樣。

Item Price Variance Count OverVarPc SumIFGt 
Apple 1  16.67  1  1   0 
Cat  12  20   1  1   0 
Dog  20  33.33  1  1   1 
Goat 18  20   1  1   0 
Maggot 5  66.67  1  1   1 
Mango 1.3  8.33  1  1   0 
Orange 1.2  0   1  0   0 

兩個結果都符合預期。

因此,這裏是我的思想,我好去.... 下期我放棄這一新措施到我的原聚合表,但現在該表顯示。

Category Count SumIfGt 
Fruit  3  0 
Pet   4  1 

我有點明白爲什麼這樣做,它聚集的VarianceSUM和(水果)得到75,然後爲每行聚集VarPc(3行×25)= 75,然後返回0,因爲它不是比...更棒。

最後這個問題!如何獲得該度量結果的簡單計數。我希望在決賽桌上看到的是類別,類別中的總項目以及方差大於What-IF參數的項目數量。

還有一些我想做的事情,但我認爲如果我得到這個破解,其餘的將輕鬆跟進。

感謝您的閱讀!

回答

1

我想你可能會發現的東西,如果從長遠來看更容易,而不是添加計算列'SOTestDat'Count = 1你,而不是添加一項措施,該表:

Count = COUNTROWS(SOTestData) 

已經做到了這一點,你OverVarPc會正確評估,如果你將它添加爲措施是這樣的:

OverVarPc = CALCULATE([Count], FILTER(SOTestDat, SOTestDat[Variance] > VarPc[VarPc Value])) 

這將f中後SOTestDat表計算行數篩選[Variance]大於[VarPc Value]度量的當前值的行。

+0

謝謝mendosi,我想我明白我現在要去哪裏錯了,更重要的是,爲什麼!感謝您的幫助。 –