如何在没有聚合的情况下创建度量?
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])
与上面相同的结果:
我的数据模型中有两个表,它们使用 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])
与上面相同的结果: