我可以使用什么 GROUPBY 聚合器来测试分组值是否等于常数?
What GROUPBY aggregator can I use to test if grouped values are equal to a constant?
情况:我有 table Bob,其中每一行都有一堆列,包括结果、SessionID1、SessionID2。
目标:我想GroupBy SessionID1和SessionID2,看看组里有没有Results为0;我希望多行具有相同的 ID1 和 ID2 值。然后我想将结果为 0 的组数除以所有组数。
问题:我想我想要这样的东西:
GROUPBY (
Bob,
SessionID1,
SessionID2,
"Has at least 1 success",
???)
但是我可以使用什么聚合器???获取布尔值,指示组中是否有任何结果等于 0?
此外,如果我想要对成功的组进行计数,是否只需将 GROUPBY 包装在 COUNT 中?
考虑这个示例 table:
您可以尝试使用以下 DAX 来创建新的摘要table:
Summary = GROUPBY(Bob, Bob[SessionID1], Bob[SessionID2],
"Number of rows", COUNTX(CURRENTGROUP(), Bob[Result]),
"Number of successes", SUMX(CURRENTGROUP(), IF(Bob[Result] = 0, 1, 0)))
然后您可以为成功率添加一个计算列:
Success ratio = Summary[Number of successes] / Summary[Number of rows]
结果:
编辑:
如果您要计算的是 Any success
之类的东西,那么 SUMMARIZE
可能比 GROUPBY
更好,因为它们具有函数性质。
Summary2 = SUMMARIZE(Bob, Bob[SessionID1], Bob[SessionID2],
"Any success", IF(COUNTROWS(FILTER(Bob, Bob[Result] = 0)) > 0, 1, 0),
"Number of rows", COUNTROWS(Bob))
结果:
情况:我有 table Bob,其中每一行都有一堆列,包括结果、SessionID1、SessionID2。
目标:我想GroupBy SessionID1和SessionID2,看看组里有没有Results为0;我希望多行具有相同的 ID1 和 ID2 值。然后我想将结果为 0 的组数除以所有组数。
问题:我想我想要这样的东西:
GROUPBY (
Bob,
SessionID1,
SessionID2,
"Has at least 1 success",
???)
但是我可以使用什么聚合器???获取布尔值,指示组中是否有任何结果等于 0?
此外,如果我想要对成功的组进行计数,是否只需将 GROUPBY 包装在 COUNT 中?
考虑这个示例 table:
您可以尝试使用以下 DAX 来创建新的摘要table:
Summary = GROUPBY(Bob, Bob[SessionID1], Bob[SessionID2],
"Number of rows", COUNTX(CURRENTGROUP(), Bob[Result]),
"Number of successes", SUMX(CURRENTGROUP(), IF(Bob[Result] = 0, 1, 0)))
然后您可以为成功率添加一个计算列:
Success ratio = Summary[Number of successes] / Summary[Number of rows]
结果:
编辑:
如果您要计算的是 Any success
之类的东西,那么 SUMMARIZE
可能比 GROUPBY
更好,因为它们具有函数性质。
Summary2 = SUMMARIZE(Bob, Bob[SessionID1], Bob[SessionID2],
"Any success", IF(COUNTROWS(FILTER(Bob, Bob[Result] = 0)) > 0, 1, 0),
"Number of rows", COUNTROWS(Bob))
结果: