Предположим, у меня есть следующая таблица:
TableA =
DATATABLE (
"Year", INTEGER,
"Group", STRING,
"Value", DOUBLE,
{
{ 2015, "A", 2 },
{ 2015, "B", 8 },
{ 2016, "A", 9 },
{ 2016, "B", 3 },
{ 2016, "C", 7 },
{ 2017, "B", 5 },
{ 2018, "B", 6 },
{ 2018, "D", 7 }
}
)
Мне нужна мера, которая возвращает верхнюю Group
на основе ее Value
, которая работает внутри или вне контекста фильтра Year
.То есть его можно использовать в матричном визуале, например, (включая строку «Итого»):
Нетрудно найти максимальное значение с помощьюDAX:
MaxValue = MAX(TableA[Value])
или
MaxValue = MAXX(TableA, TableA[Value])
Но как лучше всего найти Group
, который соответствует этому значению?
Я пробовалthis:
Top Group = LOOKUPVALUE(TableA[Group],
TableA[Year], MAX(TableA[Year]),
TableA[Value], MAX(TableA[Value]))
Однако для строки Total это не работает, и я бы предпочел не использовать Year
в показателе, если это возможно (вероятно, есть другие столбцы, о которых нужно беспокоиться вреальный сценарий).
Примечание: Я даю пару решений в ответах ниже, но я бы хотел увидеть и другие подходы.
В идеале было бы неплохо, если бы в функции MAXX
был дополнительный аргумент, который бы указывал, какой столбец возвращать после нахождения максимума, во многом как в функции Excel MAXIFS .