按标准和顺序排列的最高价值
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]))
我正在尝试在 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]))