【问题标题】:% of Grand Total of a Measure that uses other Measures and is Crossfiltered使用其他度量并被交叉过滤的度量的总计百分比
【发布时间】:2016-09-23 14:20:49
【问题描述】:

这在我的脑海中似乎很容易,但在过去的几个小时里我一直无法理解......

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

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

出于我的目的,我还想创建每小时总成本的百分比以添加到树状图可视化中。但是,如果我只是将 [Cost per Hour] 再次添加到树形图中并在该字段上使用“快速 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 中的页面级过滤器过滤

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

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

[Hours] 是一种度量,它将表中的一列相加并除以该表中的不同记录数。如:Hours = sum(table1[hours])/Distinctcount(table1[records])

[Cost per Hour] 是一个由其他两个度量组成的度量。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

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

编辑2: 带有名义数据的工作 .pbix 文件和我描述的数据模型是链接的: StackOverflow_GTofMeasure_Crosfilltered.pbix

【问题讨论】:

  • 您能否添加表 2、3、4、5 示例数据并更好地解释这些与表 1 的关系。
  • @alejandrozuleta 根据您的要求添加了信息。

标签: powerbi dax


【解决方案1】:

我认为此解决方案可能适合您。基本上我已经创建了两个辅助度量(您不必在表格中显示):

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

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

现在您可以使用此表达式创建您的 % of Cost per Hour 度量:

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

它应该产生:

更新:

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

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

如果这有帮助,请告诉我。

【讨论】:

  • 问题是 [Cost per Hour] Table1 中的度量值还是计算列?
  • @MarkDavidGaal,这是你的[Cost per Hour] 措施。
  • 嗯,这可能有效...如果您还记得我在原始帖子中提到的我使用了表 1 和表 2-5 中的几个过滤器可视化。我不必将这些添加到您的 [CostPerHourTotal] 度量中,而不是简单地使用 ALL() 函数吗?如果是这样,除了来自多个表的特定过滤列之外,返回 ALL 的最佳方法是什么?
  • @MarkDavidGaal,尝试使用ALLSELECTED() 而不是ALL() 函数。如果没有您使用的样本数据和过滤器,很难进行测试。
  • 嗯,啊,这比命名每个 ALLEXCEPT 要容易得多!越来越近;但是,[CostPerHourHelper] 和 [CostPerHourTotal] 似乎没有产生正确的数字......我的想法是这是因为类别 A、B、C、D 等......在源数据中多次出现表 1,然后按记录汇总每小时值?您是否有您一直在使用的示例 .pbix 文件?你能上传然后我可以修改它以获得一些示例数据,我们可以从那里开始......?
猜你喜欢
  • 2023-04-10
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2021-02-17
  • 1970-01-01
  • 2021-01-06
相关资源
最近更新 更多