情况:我有表Bob,每行有一堆列,包括Result,SessionID1,SessionID2。
目标:我想要GroupBy SessionID1和SessionID2,看看该组中的任何结果是否为0;我希望多行具有相同的ID1和ID2值。然后,我想将组的计数除以0结果/所有组的计数。
问题 :我想我想要的是:
GROUPBY (
Bob,
SessionID1,
SessionID2,
"Has at least 1 success",
???)
但是我可以使用什么聚合器?获取一个布尔值,指示组中的任何结果是否等于0?
另外,如果我想要成功的组计数,我是否只将GROUPBY包装在COUNT中?
答案 0 :(得分:2)
考虑这个样本表:
您可以尝试以下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]
结果:
修改强>
如果你想要计算的内容类似于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))
结果: