powerbi - Power BI 根据假设参数对符合条件的记录实例进行计数

标签 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 为零,这是正确的。

现在是第一个问题如果我通过 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/

相关文章:

excel - PowerBI 平均百分比与 Excel 平均百分比不同

powerbi - Power BI 嵌入仪表板 : Cross-Origin requests blocked for/powerbi/refresh/subscribe

powerbi - Power BI、DAX - 当 "open date"建立与日期表的关系时,按天计算已结案件的数量

sql - 如何在Power BI中将Integer转换为Text值

sql - Excel/DAX/Power Query : How to filter table to find records that fill within a 24 hour window from two dates

mysql - PowerBI 不刷新

powerbi - Power BI 工作区限制

date - 如何使用 Dax 公式将整数(112 格式)转换为日期?

powerpivot - 让 DAX 返回 0 而不是空白

powerpivot - 带有 Power View 的 DAX 动态总计