1 つ以上の検索条件で指定されたすべての条件を満たす行の値を返します。
構文
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のコンテキストが 0 個以上の個別の値にフィルター処理されるときに返される値。 指定しない場合、関数は、result_columnNameが 0 の値にフィルター処理されるときに BLANK を返します。または、result_columnNameのコンテキストに複数の個別の値がある場合はエラーが返されます。 |
戻り値
result_columnName と search_columnName のすべてのペアが完全に一致する行の search_value の値。
すべての検索値を満たす一致がない場合、関数は BLANK または alternateResult (指定されている場合) を返します。 つまり、一部の条件のみが一致する場合、関数はルックアップ値を返しません。
複数の行が検索値と一致し、これらの行の result_columnName の値が同じ場合、その値が返されます。 ただし、 result_columnName が異なる値を返す場合、関数はエラーまたは alternateResult (指定されている場合) を返します。
備考
結果列を含むテーブルと検索列を含むテーブルの間にリレーションシップが存在する場合、ほとんどの場合、LOOKUPVALUEではなくRELATED関数を使用する方が効率的であり、パフォーマンスが向上します。
search_columnNameとsearch_valueの複数のペアを指定できます。search_valueパラメーターとalternateResultパラメーターは、関数が検索テーブルの行を反復処理する前に評価されます。ISERRORまたはIFERRORを使用して、LOOKUPVALUEによって返されるエラーをキャプチャしないようにします。 1 つの出力値を特定できないときに関数への入力でエラーが発生する場合は、
alternateResultパラメーターを指定することが、エラーを処理するための最も信頼性が高く、最もパフォーマンスの高い方法です。alternateResultパラメーターは、Power Pivot 計算列で指定した場合にエラーを返します。-
この関数は、計算列または行レベル セキュリティ (RLS) 規則で使用する場合、DirectQuery モードでは使用できません。
この記事の例は、Adventure Works DW 2020 Power BI Desktop モデルのサンプルと共に使用できます。 モデルを取得するには、サンプル モデル
例 1
この例では、 LOOKUPVALUE は、注文が行われた日に注文の支払いに使用される通貨の平均レートを検索します。
Exchange Rate =
LOOKUPVALUE (
'Currency Rate'[Average Rate],
'Currency Rate'[CurrencyKey], [CurrencyKey],
'Currency Rate'[DateKey], [OrderDateKey]
)
正しい日付と通貨の平均レートを見つけるには、注文日と通貨の両方が必要です。 OrderDateKey と CurrencyKey は、Currency Rate テーブルの平均レートを検索するために使用されるキーです。
為替レートを使用すると、次の方法で現地通貨で販売金額を計算できます。
Sales Amount Local Currency =
[Sales Amount] * [Exchange Rate]
例 2
この例では、Sales テーブルで定義されている次の計算列は、LOOKUPVALUE 関数を使用して、Sales Order テーブルからチャネル値を返します。
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey], [SalesOrderLineKey]
)
ただし、この場合、 Sales Order テーブルと Sales テーブルの間にリレーションシップが存在するため、 RELATED 関数を使用する方が効率的です。
CHANNEL =
RELATED ( 'Sales Order'[Channel] )