LOOKUPVALUE

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Возвращает значение строки, которая соответствует всем критериям, заданным одним или несколькими условиями поиска.

Синтаксис

LOOKUPVALUE (
    <result_columnName>,
    <search_columnName>,
    <search_value>
    [, <search2_columnName>, <search2_value>]…
    [, <alternateResult>]
)

Параметры

Срок Определение
result_columnName Имя существующего столбца, содержащего возвращаемое значение. Это не может быть выражением.
search_columnName Имя существующего столбца. Он может находиться в той же таблице, что и result_columnName или в связанной таблице. Это не может быть выражением. Можно указать несколько пар search_columnName и search_value.
search_value Значение для поиска в search_columnName. Можно указать несколько пар search_columnName и search_value.
alternateResult (Необязательно) Значение, возвращаемое, когда контекст для result_columnName фильтруется до нуля или нескольких отдельных значений. Если функция не указана, функция возвращается BLANK , когда result_columnName фильтруется до нуля значений, или ошибка, если контекст для result_columnName имеет несколько разных значений.

Возвращаемое значение

Значение result_columnName в строке, где все пары search_columnName и search_value имеют точное совпадение.

Если совпадение не соответствует всем значениям поиска, функция возвращает BLANK или alternateResult (если задано). Другими словами, функция не возвращает значение подстановки, если только некоторые из критериев соответствуют.

Если несколько строк соответствуют значениям поиска и значениям в result_columnName этих строках идентичны, возвращается это значение. Однако при result_columnName возврате разных значений функция возвращает ошибку или alternateResult (если задано).

Замечания

  • Если связь существует между таблицей, содержащей результирующий столбец и таблицы, содержащие столбцы поиска, в большинстве случаев использование RELATED функции LOOKUPVALUE является более эффективной и обеспечивает более высокую производительность.

  • Можно указать несколько пар search_columnName и search_value.

  • Параметры search_value и alternateResult вычисляются перед итерацию функции по строкам таблицы поиска.

  • Избегайте использования ISERROR или IFERROR записи ошибки, возвращаемой LOOKUPVALUE. Если некоторые входные данные функции приводят к ошибке, если не удается определить одно выходное значение, при условии alternateResult , что параметр является наиболее надежным и самым высоким способом обработки ошибки.

  • Параметр alternateResult возвращает ошибку, если указан в вычисляемом столбце Power Pivot.

  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Примеры в этой статье можно использовать с примером модели Adventure Works DW 2020 Power BI Desktop. Сведения о получении модели см. в разделе DAXпримера модели.

Пример 1

В этом примере LOOKUPVALUE выполняется поиск средней ставки для валюты, используемой для оплаты заказа на день размещения заказа:

Exchange Rate =
LOOKUPVALUE (
    'Currency Rate'[Average Rate],
    'Currency Rate'[CurrencyKey], [CurrencyKey],
    'Currency Rate'[DateKey], [OrderDateKey]
)

Для поиска даты и валюты заказа для правильной даты и валюты требуется средняя ставка. OrderDateKey и CurrencyKey — это ключи, используемые для поиска средней ставки в таблице "Ставка валюты".

Вы можете использовать курс обмена для вычисления суммы продаж в локальной валюте с помощью следующих способов:

Sales Amount Local Currency =
[Sales Amount] * [Exchange Rate]

Пример 2

В этом примере следующий вычисляемый столбец, определенный в таблице sales Sales, использует функцию для возврата значений каналов из таблицы заказа на продажу.

CHANNEL =
LOOKUPVALUE (
    'Sales Order'[Channel],
    'Sales Order'[SalesOrderLineKey], [SalesOrderLineKey]
)

Однако в этом случае связь между таблицами заказа на продажу и продаж более эффективна для использования RELATED функции.

CHANNEL =
RELATED ( 'Sales Order'[Channel] )