按标准和顺序排列的最高价值

Top value by criteria and order

我正在尝试在 Power BI 中计算具有多个条件和顺序的最大值。

我已经调用函数来创建一个按年份、分支机构、组和类型不考虑公司的前 1 名的列。

TOP1 = CALCULATE(MAX(data[Value]);
      FILTER(ALLEXCEPT(data;data[Company];
      data[Year] = data[Year] 
      && data[Branch] = data_segmento_anual[Branch]
      && data_segmento_anual[Group] = data_segmento_anual[Group]
      && data_segmento_anual[Bond] = data_segmento_anual[Bond]
      && data_segmento_anual[Type] = data_segmento_anual[Type]))

那么结果:

YEAR    COMPANY         BRANCH  GROUP     Value     TOP1
2016    BANCO DO BRASIL RISK    RETAIL    4061567   4061567
2016    BANCO DO BRASIL ACUM    RETAIL    1901920   1901920
2017    BANCO DO BRASIL RISK    CORPORATE 439499    439499
2017    BANCO DO BRASIL RISK    RETAIL    356231    356231
2016    BRADESCO        RISK    CORPORATE 347369    347369
2016    BANCO DO BRASIL RISK    RETAIL    310920    4061567
2016    BANCO DO BRASIL ACUM    CORPORATE 12091     12091
2016    BANCO DO BRASIL RISK    RETAIL    1021      4061567
2017    BANCO DO BRASIL RISK    CORPORATE 446       439499

但我想插入另一列,即第二、第三、第五……更大的价值等等。结果将是:

YEAR    COMPANY         BRANCH  GROUP     Value   TOP1    TOP2
2016    BANCO DO BRASIL RISK    RETAIL    4061567 4061567 310920
2016    BANCO DO BRASIL ACUM    RETAIL    1901920 1901920 NA
2017    BANCO DO BRASIL RISK    CORPORATE 439499  439499  446
2017    BANCO DO BRASIL RISK    RETAIL    356231  356231  NA
2016    BRADESCO        RISK    CORPORATE 347369  347369  NA
2016    BANCO DO BRASIL RISK    RETAIL    310920  4061567 310920
2016    BANCO DO BRASIL ACUM    CORPORATE 12091   12091   NA
2016    BANCO DO BRASIL RISK    RETAIL    1021    4061567 310920
2017    BANCO DO BRASIL RISK    CORPORATE 446     439499  446

您可以在计算列中使用 Earlier() 函数来引用当前行的值。

查看以下两个计算列如何满足您的要求(您需要更改名称以适合您的数据集):

V2 = CALCULATE(max(Test[V1]),
FILTER(all(Test),
Test[V1] < earlier(Test[V1]) 
&& EARLIER(Test[C2]) = Test[C2] 
&& EARLIER(Test[C3]) = Test[C3]))

_

V3 = CALCULATE(max(Test[V2]),
FILTER(all(Test),
Test[V2] < earlier(Test[V2]) 
&& EARLIER(Test[C2]) = Test[C2] 
&& EARLIER(Test[C3]) = Test[C3]))