我可以使用什么 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))

结果: