首页 > 解决方案 > 如何使用 DAX Power BI 按百分比计算每个变量的值

问题描述

需要您的帮助来解决我关于 DAX Power BI 的问题。

因此,我正在尝试使用 Power BI 可视化每个有员工参与的项目的总成本。但是一个员工的成本可以按每个项目的百分比分摊到某个项目。

目标是计算每个员工的总成本,然后按百分比将其分成几个项目。

这是excel数据。所以我有3张桌子。成本、主用户和付款分配。

-成本

成本

-主用户

掌握

-付款分配

分配

这是预期的结果。

在此处输入图像描述

请帮我解决我的问题,非常感谢!

标签: powerbidaxpercentagemeasure

解决方案


首先,您需要稍微更改您的 COST 表:

在此处输入图像描述

我将“ID”替换为“Employee Number”,因为我们需要 COST 和 ALLOCATION 表具有相同的 Employee 键。我忽略了“产品”列,因为它与问题无关。

一旦 COST 表与 ALLOCATION 表具有相同的员工键,您就可以将所有表连接到以下数据模型中:

在此处输入图像描述

表“用户”通过“员工编号”连接到表“成本”和“分配”。请注意,“用户”和“分配”之间的连接是双向的。要将连接从单向更改为双向,请双击连接线并将过滤器方向更改为双向。现在您已准备好编写 DAX 度量。

措施一:

Total Cost = SUM(COST[COST])

该度量仅在“COST”表中汇总成本。

措施2:

Allocated % = SUM(Allocation[PERCENTAGE])

该度量只是在“分配”表中总结了百分比。

措施 3:

Allocated Cost = SUMX('User', [Total Cost] * [Allocated %])

如果将 Projects 放入矩阵视觉对象并添加此度量,您将获得以下结果:

在此处输入图像描述

附加说明:

有经验的设计师避免在他们的模型中使用双向关系(有充分的理由)。要使所有关系保持单向,请按如下方式修改最后一个度量:

Allocated Cost = 
CALCULATE(
  SUMX('User', [Total Cost] * [Allocated %]), 
  CROSSFILTER(User[EMPLOYEE NUMBER], Allocation[EMPLOYEE NUMBER], BOTH))

CROSSFILTER 与双向关系完全一样,只是以编程方式并且没有不必要的副作用。这种方法也适用于不支持双向连接的 Excel Power Pivot。


推荐阅读