DAX:计算公制A与兄弟公制B的比率(当两者都位于同一组中时)

我是DAXOLAP的完全noob ,所以请原谅任何错误。

故事

基本上,我在PowerBI Desktop报告中有一个Matrix组件。 月份在列上, 度量标准 – 在行上:

高强

当我尝试计算(红色的百分比):

  1. 公制B公制A (B / A)
  2. 公制C公制B (C / B)

所有指标都位于同一组中。 我希望把这些比例作为一个单独的列,而不是列。

我没有问题来计算度量比率, 我只是把SUM(#)除以总数

 Total = CALCULATE(SUM('Data'[#]); ALL('Data'[Metric])) 

但是,如何获得Metric XSUM(#)聚合,我以后可以使用它来计算其他度量的比率?

到目前为止我所做的

作为我创build此表的一个步骤来获得聚合度量标准A

 Table = ADDCOLUMNS( SUMMARIZE('Data'; 'Data'[GroupAndMetric]; 'Data'[Year]; 'Data'[MonthNo]); "Count"; CALCULATE(SUM('Data'[#]); 'Data'[GroupAndMetric] = "Group A - Metric A") ) 

任何帮助赞赏。

我认为有一个更简单的方法来获得您的预期结果,但我假设您的数据是完全相同的张贴在OP。

创build以下度量来计算每个度量标准的给定上下文中的先前值和当前值。

总和[#]

 CurrentValue = SUM(Data[#]) 

当前组

 CurrentGroup = FIRSTNONBLANK(Data[Group],0) 

当前的度量标准

 CurrentMetric = FIRSTNONBLANK(Data[Metric],0) 

这个月:

 CurrentMonth = FIRSTNONBLANK(Data[Month],0) 

这将计算以前的度量标准

 PrevMetric = IF ( [CurrentMetric] = "Metric A", BLANK (), IF ( [CurrentMetric] = "Metric B", "Metric A", IF ( [CurrentMetric] = "Metric C", "Metric B", BLANK () ) ) ) 

计算比率计算所需的以前的度量和#

 Previous # Sum = CALCULATE ( SUM ( Data[#] ), FILTER ( ALL ( Data), COUNTROWS ( FILTER ( Data, EARLIER ( Data[Metric] ) = [PrevMetric] && EARLIER ( Data[Group] ) = [CurrentGroup] && EARLIER ( Data[Month] ) = [CurrentMonth] ) ) ) ) 

最后计算一下比例:

 % Ratio = DIVIDE([CurrentValue], [Previous # Sum]) 

你会得到一堆措施,但你只需要使用matrix中的百分比:

在这里输入图像说明

让我知道这是否有帮助。

有可能(很多)更好的方法做到这一点,但这里有一个方法:

要做一个度量B除以度量A(例如):

 Metric B to Metric A = DIVIDE ( CALCULATE ( SUM ( Data[#] ), FILTER ( Data, Data[Metric] = "Metric B" ) ), CALCULATE ( SUM ( Data[#] ), ALL ( Data[Metric] ), Data[Metric] = "Metric A" ), BLANK () ) 

第一个CALCULATE(分子)返回空白,如果数据透视表没有过滤到度量B.第二个CALCULATE(除数)返回度量A的总和(跟随其他应用的filter,所以它不会总结例如,在另一个组中的度量B,只要组在您的数据透视表上)。 如果我们查看除B之外的任何度量标准,则整个分部将是空白的,因为分子将是空白的。 最后一个空白说,如果没有度量A(即除以零),那么结果也将是空白的。

假设2个这样的措施,你可以把它们合并成一个列:

 Final Ratio = IF ( NOT ( ISBLANK ( [Metric B to Metric A] ) ) && NOT ( ISBLANK ( [Metric C to Metric B] ) ), BLANK (), IF ( NOT ( ISBLANK ( [Metric B to Metric A] ) ), [Metric B to Metric A], IF ( NOT ( ISBLANK ( [Metric C to Metric B] ) ), [Metric C to Metric B], BLANK () ) ) 

这第一部分说,如果两个措施不是空白,返回一个空白(即我不希望小组总数没有意义)。 然后它通过每个指标,并说如果它不是空白,则显示它。 否则,显示空白。 由于每个基础度量仅返回单个给定度量的值,因此应该起作用。