我在尝试计算 Power BI 表中的行数时遇到问题,其中条件因假设参数而异。该表大约有 1100 万行长,但我将尝试举一个简单的例子来说明我正在尝试做的事情。请原谅帖子的长度,但实际上内容并不多。
来自 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 为零,这是正确的。
现在是第一个问题如果我通过 slider 或输入框调整参数,则不会重新评估 OverVarPc 列。
下一个方法我添加了第二个表,这次显示了所有详细信息(没有故意聚合)。
然后,我向 VarPc
表添加了一个名为 SumIfGt
的新度量,以此作为定义
SumIFGt = IF((sum(SOTestDat[Variance]) - sum(VarPc[VarPc])) >0,1,0)
表格看起来像这样, slider 位于 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
我有点明白它为什么这样做,它聚合方差
的SUM
并且(对于水果)得到75,然后聚合VarPc
每行(3 行 x 25)= 75,然后返回 0,因为它不大于。
最后是问题!我怎样才能得到测量结果的简单计数。我想在最终表中看到的是类别、类别中的总项目以及方差大于 What-IF 参数的项目数。
我还有很多想做的事情,但我想如果我解决了这个问题,剩下的事情就会很容易实现。
感谢您阅读本文!
最佳答案
我认为,从长远来看,如果不向 'SOTestDat' 添加计算列
:Count = 1
,而是向该表:
Count = COUNTROWS(SOTestData)
完成此操作后,如果您将其添加为如下所示的度量,您的 OverVarPc
将正确评估:
OverVarPc = CALCULATE([Count], FILTER(SOTestDat, SOTestDat[Variance] > VarPc[VarPc Value]))
这将在过滤 [Variance]
大于 [VarPc Value] 当前值的行后对
测量。SOTestDat
表中的行进行计数
关于powerbi - Power BI 根据假设参数对符合条件的记录实例进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46637123/