Высочайшее значение по критериям и порядку - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь вычислить максимальное значение с несколькими условиями и порядком в Power BI.

Я вызвал функцию для создания столбца с top1 по годам, филиалам, группам и типам, которые не учитывают компанию.

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

1 Ответ

1 голос
/ 26 июня 2019

Вы можете использовать функцию 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]))

Example

...