我可以使用什么GROUPBY聚合器来测试分组值是否等于常量?

时间:2017-08-11 01:24:01

标签: powerbi dax

情况:我有表Bob,每行有一堆列,包括Result,SessionID1,SessionID2。

目标:我想要GroupBy SessionID1和SessionID2,看看该组中的任何结果是否为0;我希望多行具有相同的ID1和ID2值。然后,我想将组的计数除以0结果/所有组的计数。

问题 :我想我想要的是: GROUPBY ( Bob, SessionID1, SessionID2, "Has at least 1 success", ???)

但是我可以使用什么聚合器?获取一个布尔值,指示组中的任何结果是否等于0?

另外,如果我想要成功的组计数,我是否只将GROUPBY包装在COUNT中?

1 个答案:

答案 0 :(得分:2)

考虑这个样本表:

bob

您可以尝试以下DAX来创建新的汇总表:

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]

结果:

groupby

修改

如果你想要计算的内容类似于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))

结果:

summarize