在 MAXX 计算中使用 SUMMARIZE 函数

Using the SUMMARIZE function in a MAXX calculation

我正在尝试按延迟原因列汇总以下值(NHS、社会关怀和两者 B),以便我可以找到具有最高值的原因(从上面提到的 3 个组合值)。

我尝试使用 summarize 创建一个 table,其中仅包含延误原因、NHS、社会关怀和两个 B 列。通过这样做,我希望我可以创建一个名为总计的列,将 NHS、社会关怀和两个 B 列添加到这个总结 table 中,从而为我提供每个延迟原因的总值。

虽然当我尝试 运行 围绕我的总计列使用 maxx 函数时,它似乎给了我错误的值。

我试过用不同的函数包装我的 table 以便它将我的摘要中的所有列聚合在一起,但这也没有帮助。

Max Delays =
MAXX (
    SUMMARIZE (
        csv,
        csv[Reason For Delay],
        csv[NHS],
        csv[Social Care],
        csv[Both B],
        "totals", CALCULATE ( SUM ( csv[NHS] ) + SUM ( csv[Both B] ) + SUM ( csv[Social Care] ) )
    ),
    [totals]
)

上图中较小的table(应该代表汇总的table)和总计列显示了我期望进行最大计算的值,我期望最大值为 277。

我得到的最大值是 182。这是下面未汇总的 table 中的最大值,我有多个重复的延迟原因列,182 是最大值。

我已经上传了我正在处理的 pbix 文件的示例,如果它可能有帮助的话;https://www.zeta-uploader.com/en/1184250523

首先,为全部原因创建一个度量:

Total Reasons = SUM(csv[NHS]) + SUM(csv[Both B]) + SUM(csv[Social Care])

其次,为最大原因创建一个度量:

Max Reason = MAXX( VALUES(csv[Reason For Delay]), [Total Reasons])

结果:

工作原理:

  • 第一个措施是为了方便。您可以 re-use 它在其他公式中,使代码更清晰;
  • 在第二项措施中,我们使用 VALUES 创建了一个包含不同原因的列表。然后 MAXX 迭代这个列表,计算每个原因的总数,然后找到其中最大的一个。