使用其他度量并且是Crossfiltered的度量的总计的百分比

时间:2016-09-23 14:20:49

标签: powerbi dax

这似乎很容易在我的头脑中,但我在过去的几个小时内无法得到它......

我有一个表格可视化,它使用度量提供按小时计算的费用。

Category | Total Cost | Hours  | Cost per Hour
A        | 1000       | 10     |  100
B        | 2000       | 100    |   20
C        | 100        | 4      |   25  
D        | -500       | 100    |  -5
Total    | 2600       | 214    | 12.1495

出于我的目的,我还想创建一个每小时总成本百分比来添加到树状图可视化中。但是,如果我只是再次将[每小时费用]添加到树状图中并使用" quick clac"对于该字段的功能,它将返回上表中第一条记录的823.7%(100 / 12.1495)= 8.2307。我希望每小时成本的GT百分比使用每小时成本列的总和。期望的结果:

Category | Total Cost | Hours  | Cost per Hour | % of Cost per Hour
A        | 1000       | 10     |  100          | 71.4%
B        | 2000       | 100    |   20          | 14.3%
C        | 100        | 4      |   25          | 17.9%
D        | -500       | 100    |  -5           | -3.8%
Total    | 2600       | 214    | 12.1495       | 100%

需要注意的一些事项使得任何DAX的应用都具有挑战性。所有以下度量都通过表1-5中的多个过滤器可视化和表1-5中的页级过滤器进行过滤

表格可视化存在于表1中。表2-5中存在成本,并且使用多对一单向滤波器关系与表1相关。

[总成本]是一个度量,它将来自4个不同表的值相加。例如:Total Cost = sum(table2[value])+sum(table3[value])+sum(table4[value])+sum(table5[value])

[Hours]是一个Measure,它将表中的列加在一起,并除以该表中的不同记录数。例如:Hours = sum(table1[hours])/Distinctcount(table1[records])

[每小时费用]是一项由另外两项措施组成的衡量标准。Cost per Hour = [Total Cost] / [Hours]

我觉得这与想要在饼图中添加百分比的人类似......我只是试图归一个实数来表示TreeChart可视化中显示的比例。我真的希望这比看起来容易。

编辑@alejandrozuleta: 表1是引用和创建表2-5的原始表。表1中分配了索引号,表2-5中的索引号与此参考号相关联。表2-5单独存在的原因是因为它们包含单独的成本"类型"并且这些表中出现的联接会添加仅适用于特定成本类型的其他列....例如,表2是人员成本:

index | Category | Cost Type |  Value | Age of Personnel
1     | A        | Personnel | 1      | 33

和表3是维护成本:

index | Category | Cost Type   |  Value | Scheduled or UnScheduled Maint
2     | A        | Maintenance | 5      | Scheduled

表3中存在if [Age of Personnel]然后它会有一个" null"对于维护[Cost Type]的任何记录,反之亦然[Scheduled or UnScheduled Maint]将有一个" null"如果它存在于表2中。因为我不想处理过滤器可视化需要选择"(空白)"对于某些成本类型,这些表之间的数据关系是使用[index]作为密钥的多对一单向过滤器。

EDIT2: 使用名义数据和我描述的数据模型工作.pbix文件是链接的: StackOverflow_GTofMeasure_Crosfilltered.pbix

1 个答案:

答案 0 :(得分:2)

我认为这个解决方案对您有用。基本上我已经创建了两个辅助措施(您不必在表中显示):

CostPerHourHelper = SUMX(TableName,[Cost per Hour])

CostPerHourTotal = SUMX(ALL(TableName),[Cost per Hour])

现在,您可以使用以下表达式创建% of Cost per Hour指标:

% Cost Per Hour = [CostPerHourHelper]/[CostPerHourTotal] 

它应该产生:

enter image description here

<强>更新

使用ALLSELECTED()功能保留您应用的显式过滤器。

% Cost Per Hour = SUMX ( TableName, [Cost per Hour] )
    / SUMX ( ALLSELECTED ( TableName ), [Cost per Hour] )

如果有帮助,请告诉我。