如何在没有聚合的情况下创建度量?

How to create a measure without aggregation?

我的数据模型中有两个表,它们使用 DirectQuery 连接。首先,我有一份与账户相关的费用清单:

第二个是帐户组列表。同一个帐户可以在不同的组中,对于某些帐户,它的值可能是负数:

所以我想在这里创建一个 Measure/Calculated 列,显示与一个组相关的所有成本的摘要。结果将是这些:

我的第一直觉是这样写的:

CalcAmount = SUM(Continents[Multiplier]) * SUM(Costs[Amount])

但是结果不正确。例如,对于 D 组,它首先将乘数 1 和乘数 -1 求和,结果为 0。然后将 0 乘以金额,因此当乘数为 +1 和 -1 时,结果始终为 0。

我如何创建一个不聚合乘数而是单独乘以每个值的公式?

为什么不起作用

您编写的度量不正确,因为它与您描述的完全相同:在相乘之前对 Multiplier / Amount 列求和。它应该类似于以下内容:

CalcAmount = SUM(Groups[Multiplier] * Costs[Amount])

但是,要使其在 Power BI 中运行,需要满足以下条件:

  • 两人table关系正确
  • 使用 SUMX() 函数代替 SUM()

如何让它工作

我建议您将 Costs table 按 Account 分组(或者如果您需要保留原始数据,则从当前分组创建一个新的 table ) 以便您可以与 Account 列上的 Groups table 建立 one-to-many 关系。

Costs table:

之后您可以创建一个度量并使用 SUMX() 函数执行 row-wise 评估:

CalcAmount = SUMX(Groups, Groups[Multiplier] * RELATED(Costs[Amount]))

结果如预期:

您还可以添加 Account 列来查看详细信息细分:


编辑:(通过创建新 table 的替代解决方案)

仅使用 DISTINCT Account 列创建 Accounts table:

table之间的关系:

创建一个 Total Amount 度量来计算每个帐户的总计:

Total Amount = SUM(Costs[Amount])

CalcAmount 度量使用度量而不是 Costs[Amount]

CalcAmount = SUMX(Groups, Groups[Multiplier] * [Total Amount])

与上面相同的结果: