我在尝试计算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为零,这是正确的。
现在是第一个问题如果我通过滑块或输入框调整参数,则不会重新评估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
我理解为什么会这样做,它会聚合SUM
Variance
和(对于水果)获得75,然后为每行聚合VarPc
(3行x 25)= 75然后返回0,因为它不大于。
最后一个问题!如何简单计算度量结果。我想在决赛桌中看到的是类别,类别中的总项目以及方差大于What-IF参数的项目数。
我想做的事情还有很多,但我想如果我得到这个问题,那么其余部分就会很容易接受。
感谢您阅读此内容!
答案 0 :(得分:4)
我认为,如果不是将计算列添加到'SOTestDat'
:Count = 1
,而是向该表中添加一个度量,那么从长远来看,您可能会发现更容易:
Count = COUNTROWS(SOTestData)
完成此操作后,如果您将{{1>}添加为度量,则OverVarPc
将正确评估:
OverVarPc = CALCULATE([Count], FILTER(SOTestDat, SOTestDat[Variance] > VarPc[VarPc Value]))
在对SOTestDat
大于[Variance]
小节的当前值的行进行过滤后,这会计算[VarPc Value]
表格中的行数。