Индекс DAX и функция сопоставления?

#dax #powerpivot

Вопрос:

Я пытаюсь использовать функцию LOOKUPVALUE, но у меня более одного идентификатора, и я возвращаю ошибку «Таблица с несколькими значениями была предоставлена там, где ожидалось одно значение».

Например: мне нужно заполнить все строки в «Measure_id».

Идентификатор группы ID Описание Идентификатор измерения
112233 0 Закрыть 12345
112233 12345 Открыть 12345
112233 0 Закрыть 12345
223344 0 Закрыть 23456
223344 0 Закрыть 23456
223344 23456 Открыть 23456
112233 12345 Открыть 12345

Комментарии:

1. Какова ваша конечная цель? Как выглядят ваши данные?

Ответ №1:

LOOKUPVALUE не совместим в измерении DAX. Вы можете заменить его следующим.

 _return = 
VAR _1 =
    MAX ( 'fact'[Group_ID] )
VAR _2 =
    CALCULATE (
        MAX ( 'fact'[ID] ),
        ALL ( 'fact' ),
        FILTER ( VALUES ( 'fact'[Group_ID] ), 'fact'[Group_ID] = _1 )
    )
RETURN
    _2
 

Решение

Ответ №2:

Более простой способ вычисления этого-использовать ALLEXCEPT() в такой мере:

 Measure = 
CALCULATE ( 
    MAX ( 'Table'[ID] ) , 
    ALLEXCEPT ( 'Table' , 'Table'[Group_ID] )
)
 

Это дает тот же результат, что и @smpa01, но является гораздо более эффективным показателем, примерно на 30-40% быстрее в этом наборе данных, согласно DAX Studio анализу.