如何使用dax根据值计算非空行数
How to calculate number of non blank rows based on the value using dax
我有一个包含数值和空白记录的 table。我正在尝试计算非空白且大于 20 的行数。
+--------+
| VALUES |
+--------+
| 2 |
| 0 |
| 13 |
| 40 |
| |
| 1 |
| 200 |
| 4 |
| 135 |
| |
| 35 |
+--------+
我尝试了不同的选项,但不断出现下一个错误:"Cannot convert value '' of type Text to type Number"。我知道空白单元格被视为文本,因此我的过滤器 (>20) 不起作用。将空白转换为“0”不是一个选项,因为稍后我需要使用相同的值来计算 AVG 和中位数。
CALCULATE(
COUNTROWS(Table3),
VALUE(Table3[VALUES]) > 20
)
或结果为“10”:
=CALCULATE(
COUNTROWS(ALLNOBLANKROW(Table3[VALUES])),
VALUE(Table3[VALUES]) > 20
)
例子中的最终结果table应该是:4
如有任何帮助,将不胜感激!
首先,VALUE
函数需要一个字符串。它将 "123"
之类的字符串转换为整数 123
,因此我们不要使用它。
最简单的方法是使用像 COUNTX
.
这样的迭代器函数
CountNonBlank = COUNTX(Table3, IF(Table3[Values] > 20, 1, BLANK()))
请注意,这里我们不需要 BLANK()
(空)的单独案例,因为 BLANK() > 20
的计算结果为 False
。
还有很多其他方法可以做到这一点。另一个迭代器解决方案是:
CountNonBlank = COUNTROWS(FILTER(Table3, Table3[Values] > 20))
您可以在 CALCULATE
中使用相同的 FILTER
,但这有点不够优雅。
CountNonBlank = CALCULATE(COUNT(Table3[Values]), FILTER(Table3, Table3[Values] > 20))
编辑
我不推荐 CALCULATE
版本。如果您有更多列和更多条件,只需将它们添加到您的 FILTER
。例如
CountNonBlank =
COUNTROWS(
FILTER(Table3,
Table3[Values] > 20
&& Table3[Text] = "xyz"
&& Table3[Number] <> 0
&& Table3[Date] <= DATE(2018, 12, 31)
)
)
您也可以使用 ||
代替 &&
来执行 OR 逻辑。
我有一个包含数值和空白记录的 table。我正在尝试计算非空白且大于 20 的行数。
+--------+
| VALUES |
+--------+
| 2 |
| 0 |
| 13 |
| 40 |
| |
| 1 |
| 200 |
| 4 |
| 135 |
| |
| 35 |
+--------+
我尝试了不同的选项,但不断出现下一个错误:"Cannot convert value '' of type Text to type Number"。我知道空白单元格被视为文本,因此我的过滤器 (>20) 不起作用。将空白转换为“0”不是一个选项,因为稍后我需要使用相同的值来计算 AVG 和中位数。
CALCULATE(
COUNTROWS(Table3),
VALUE(Table3[VALUES]) > 20
)
或结果为“10”:
=CALCULATE(
COUNTROWS(ALLNOBLANKROW(Table3[VALUES])),
VALUE(Table3[VALUES]) > 20
)
例子中的最终结果table应该是:4
如有任何帮助,将不胜感激!
首先,VALUE
函数需要一个字符串。它将 "123"
之类的字符串转换为整数 123
,因此我们不要使用它。
最简单的方法是使用像 COUNTX
.
CountNonBlank = COUNTX(Table3, IF(Table3[Values] > 20, 1, BLANK()))
请注意,这里我们不需要 BLANK()
(空)的单独案例,因为 BLANK() > 20
的计算结果为 False
。
还有很多其他方法可以做到这一点。另一个迭代器解决方案是:
CountNonBlank = COUNTROWS(FILTER(Table3, Table3[Values] > 20))
您可以在 CALCULATE
中使用相同的 FILTER
,但这有点不够优雅。
CountNonBlank = CALCULATE(COUNT(Table3[Values]), FILTER(Table3, Table3[Values] > 20))
编辑
我不推荐 CALCULATE
版本。如果您有更多列和更多条件,只需将它们添加到您的 FILTER
。例如
CountNonBlank =
COUNTROWS(
FILTER(Table3,
Table3[Values] > 20
&& Table3[Text] = "xyz"
&& Table3[Number] <> 0
&& Table3[Date] <= DATE(2018, 12, 31)
)
)
您也可以使用 ||
代替 &&
来执行 OR 逻辑。