如何创建没有聚合的度量?

时间:2017-01-16 17:14:01

标签: powerbi dax

我的数据模型中有两个表使用DirectQuery连接。首先,我列出了与帐户相关的费用:

enter image description here

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

enter image description here

所以我在这里要创建一个度量/计算列,显示与组关联的所有成本的摘要。结果将是:

enter image description here

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

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

但结果不正确。例如,对于D组,它首先是SUMS乘法器1和乘数-1,它得到0.然后它将0乘以Amount,因此当乘数为+1和-1时,结果始终为0。

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

1 个答案:

答案 0 :(得分:0)

为什么它不起作用

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

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

但是,要使其在Power BI中运行,需要以下内容:

  • 两个表之间的正确关系
  • 使用SUMX()功能代替SUM()

如何使其发挥作用

我建议您按CostsAccount表进行分组(或者如果需要保留原始数据,则从当前表中创建一个新表),这样就可以建立一个与Groups列上的Account表格有很多关系。

Costs表:

costs

relationship

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

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

结果将符合预期:

result

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

breakdown

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

仅创建一个包含DISTINCT Accounts列的Account表格: accounts query accounts

表格之间的关系: relationships

创建一个Total Amount指标,用于计算每个帐户的总计:

Total Amount = SUM(Costs[Amount])

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

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

与上述结果相同:

final result