【问题标题】:Calculate percentage difference between consecutive rows - Power BI计算连续行之间的百分比差异 - Power BI
【发布时间】:2021-08-26 06:05:33
【问题描述】:

我有一个结构如下的表:

Forecast Type     Group     Forecast 
June 00             A          120
July 01             A          125
June 00             B          250
July 01             B          222
June 00             C          308
June 01             C          270

我想通过按“预测类型”分组并通过汇总“预测”来将其可视化为矩阵。然后,我想创建一个计算列或指标,其中包含预测类型之间的百分比差异。如果用户使用切片器按“组”过滤,则也应相应更新。这是选择所有组时矩阵的样子:

                  Forecast      Difference in EUR      Percentage Difference
June 00           678                  null                        null            
July 01           617                  -61                          -9%

通过创建索引列并使用以下方法,我能够通过一些研究创建“欧元差”变量:

Difference in EUR = 
VAR RowAbove=
    CALCULATE (
        SUM ('Forecast Development'[Forecast]),
            FILTER ('Forecast Development', 'Forecast Development'[Index] = EARLIER ('Forecast Development'[Index]) -1))
    RETURN
    'Forecast Development'[Forecast] - RowAbove

但是,我无法通过使用此计算列公式来创建百分比。此外,在“欧元差值”列中,第一行不为空,因为我没有另一个值来计算差值。 我还尝试通过创建另一个计算列并过滤掉 6 月 00 日的“预测类型”来强制第一行为空,但显然我不能这样做。

我也不确定如何创建索引,现在我只是正常地从 1 到 6。但也许每次组更改时我都需要重新启动索引?那么,1,2,1,2,1,2?

我是 Power BI 的新手,希望能得到帮助。谢谢!

【问题讨论】:

    标签: powerbi dax percentage metrics calculated-columns


    【解决方案1】:

    如果您的 [预测类型] 最后总是包含有效数字,那么我们可以这样计算:

    Diff = 
    var __CurrentType = value( RIGHT(SELECTEDVALUE(Sheet1[Forecast Type]),2))
    var _prevForecast = CALCULATE( sum(Sheet1[Forecast]), filter(all(Sheet1[Forecast Type]), value( RIGHT(Sheet1[Forecast Type],2)) = __CurrentType -1 ))
    var __currForecast = CALCULATE(sum(Sheet1[Forecast]))
    return
    if (ISBLANK(_prevForecast), BLANK(),
    __currForecast - _prevForecast)
    
    
    Percentage%% = 
    var __CurrentType = value( RIGHT(SELECTEDVALUE(Sheet1[Forecast Type]),2))
    var _prevForecast = CALCULATE( sum(Sheet1[Forecast]), filter(all(Sheet1[Forecast Type]), value( RIGHT(Sheet1[Forecast Type],2)) = __CurrentType -1 ))
    var __currForecast = CALCULATE(sum(Sheet1[Forecast]))
    return
    DIVIDE(__currForecast, _prevForecast)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多