在Power BI中使用COUNTAX和FILTER计算TRUE()和False()的数量

3
我有一个表(Table_Name)中的列(Column_Name),其中包含布尔值(0 | 1)。我想要为每个值获取计数。例如,我有总共1500行数据,我想要有两个度量衡来显示700个是True,而800个是False。
我尝试了以下方法,但每个方法只给出了总行数(1500):
False_Measure = COUNTAX(FILTER('Table_Name','Table_Name'[Column_Name]=FALSE()),FALSE())

True_Measure = COUNTAX(FILTER('Table_Name','Table_Name'[Column_Name]=FALSE()),TRUE())

我完全懵逼了...

现在我甚至不确定自己是否在正确使用DAX函数。


我发现了解决方案中一个有趣的功能。如果您在Power BI中的许多可视化中使用度量值,则应将+0添加到度量值的末尾。否则,如果度量值返回没有匹配项,则结果值不是数字。+0强制它返回0。例如,即使没有与度量值匹配的内容,这将为您提供数值:False_Measure = COUNTAX(FILTER('Table_Name','Table_Name' [Column_Name] = FALSE()),[Column_Name]) - eatsfood
2个回答

8
问题在COUNTAX()函数的第二个参数中。它应该是您要计数的列/项,而不是相同的筛选项。
因此,这些函数应该给您想要的结果:
False_Measure = COUNTAX(FILTER('Table_Name', 'Table_Name'[Column_Name]=FALSE()), [Column_Name])

True_Measure = COUNTAX(FILTER('Table_Name', 'Table_Name'[Column_Name]=TRUE()), [Column_Name])

此函数的文档在此处列出。

这个解决方案非常完美。我原本考虑的路径需要额外的3个步骤,并且不支持逐级深入。因此,这种方法在各个方面都更加优秀。(注意:我发现我在问题中使用的 DAX 是可行的。当我创建问题时,导入数据时出现了问题,这破坏了我的语法。) - eatsfood

5
以下是一些可能的选项:
True_Measure = SUMX(Table_Name, 1*Table_Name[Column_Name])
True_Measure = SUMX(Table_Name, 1*(Table_Name[Column_Name] = TRUE()))

False_Measure = SUMX(Table_Name, 1*(Table_Name[Column_Name] = FALSE()))
False_Measure = COUNTROWS(Table_Name) - [True_Measure]

在这些示例中,我使用1*来强制将True/False布尔值转换为数字01
你也可以在过滤后的表格上使用COUNTROWS
True_Measure  = COUNTROWS(FILTER(Table_Name, Table_Name[Column_Name] = TRUE()))
False_Measure = COUNTROWS(FILTER(Table_Name, Table_Name[Column_Name] = FALSE()))

如果你真的想使用 COUNTAX,那么它应该是这样的:
True_Measure  = COUNTAX(FILTER(Table_Name, Table_Name[Column_Name] = TRUE()), 1)
False_Measure = COUNTAX(FILTER(Table_Name, Table_Name[Column_Name] = FALSE()), 1)

这不适用于 TRUE()FALSE()。Power BI 返回一个错误信息:DAX 比较操作不支持将文本类型的值与 True/False 类型的值进行比较。请考虑使用 VALUE 或 FORMAT 函数来转换其中一个值。 - Zizzipupp
听起来你有一个文本列而不是布尔列。你必须使用相同类型进行比较。 - Alexis Olson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接