У меня есть переменная, как показано ниже
VAR First_Higest_number = MAX( 'DF'[Number_Column] )
и я хотел бы найти Second_Higest_number
в DAX. Как с этим обойтись? Спасибо заранее.
Вы можете сначала воспользоваться поиском, так как это похоже на дублирование VAR Second_Higest_number = MINX ( TOPN ( 2, 'DF', 'DF'[Number_Column] ), 'DF'[Number_Column] )
Другой вариант:
var Second_Higest_number =
CALCULATE(
MAX('DF'[Number_Column]),
'DF'[Number_Column] < First_Higest_number
)
Или:
var Second_Higest_number =
CALCULATE(
MAX('DF'[Number_Column]),
FILTER( 'DF', 'DF'[Number_Column] < MAX(First_Higest_number) )
)
Примечание. Этот метод выглядит быстрее и требует меньше вычислительных затрат, чем использование
INDEX
,TOPN
или чего-то еще. С помощью простой таблицы с числами от 1 до 25 000 000 использованиеINDEX
даже не работает (проблема с ресурсами), но эти меры возвращают значения через ~ 100 мс или меньше. Недостаток по сравнению с INDEX заключается в том, что вы не можете легко выбрать N-е значение, но для второго по величине это очень эффективно.