如何使用 DAX Power BI 按百分比计算每个变量的值

How to calculate value for each variable by their percent using DAX Power BI

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

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

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

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

-费用

-主用户

-付款分配

这是预期的结果。

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

首先,您需要稍微更改一下您的 COSTtable:

我用 "Employee Number" 替换了 "ID",因为我们需要 COST 和 ALLOCATION table 才能拥有相同的员工键。我忽略了 "Product" 列,因为它与问题无关。

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

Table "User" 通过 "Employee Number" 连接到 tables "Cost" 和 "Allocation"。请注意 "User" 和 "Allocation" 之间的连接是双向的。要将连接从单向更改为双向,请双击连接线并将过滤器方向更改为 BOTH。现在您已准备好编写 DAX 度量。

措施 1:

Total Cost = SUM(COST[COST])

这项措施简单地总结了 table "COST" 中的成本。

措施 2:

Allocated % = SUM(Allocation[PERCENTAGE])

此衡量标准只是将 table "ALLOCATION" 中的百分比相加。

措施 3:

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

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

补充说明:

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

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

CROSSFILTER 做的事情与双向关系完全相同,只是以编程方式进行,没有不需要的副作用。这种方法也适用于不支持双向连接的 Excel Power Pivot。