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

时间:2019-04-07 16:25:05

标签: powerbi dax percentage measure

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

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

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

这是Excel数据。 所以我有3张桌子费用,主要用户和付款分配。

-费用

COST

-主用户

MASTER

付款分配

ALLOCATION

这是预期的结果。

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

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

enter image description here

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

措施1:

Total Cost = SUM(COST[COST])

此度量仅将表“ COST”中的成本汇总。

措施2:

Allocated % = SUM(Allocation[PERCENTAGE])

此度量仅汇总表“分配”中的百分比。

措施3:

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

如果将Projects放到矩阵可视中并添加此度量,您将得到以下结果:

enter image description here

附加说明:

有经验的设计人员避免在模型中使用双向关系(出于充分的理由)。要使所有关系保持单向,请修改最后一个度量,如下所示:

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

CROSSFILTER与双向关系完全相同,只是以编程方式进行,并且没有不良副作用。这种方法也可以在不支持双向连接的Excel Power Pivot中使用。

相关问题