Power BI计算与基于假设参数

时间:2017-10-08 23:41:33

标签: powerbi dax

我在尝试计算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参数的项目数。

我想做的事情还有很多,但我想如果我得到这个问题,那么其余部分就会很容易接受。

感谢您阅读此内容!

1 个答案:

答案 0 :(得分:4)

我认为,如果不是将计算列添加到'SOTestDat'Count = 1,而是向该表中添加一个度量,那么从长远来看,您可能会发现更容易:

Count = COUNTROWS(SOTestData)

完成此操作后,如果您将{{1>}添加为度量,则OverVarPc将正确评估:

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

在对SOTestDat大于[Variance]小节的当前值的行进行过滤后,这会计算[VarPc Value]表格中的行数。

相关问题