LOOKUPVALUE
1 つまたは複数の検索条件で指定した条件をすべて満たす行の値を返します。
構文
LOOKUPVALUE(
<result_columnName>,
<search_columnName>,
<search_value>
[, <search2_columnName>, <search2_value>]…
[, <alternateResult>]
)
パラメーター
項目 | 定義 |
---|---|
result_columnName | 返される値を含む既存の列の名前。 これを式にすることはできません。 |
search_columnName | 既存の列の名前。 result_columnName と同じテーブルまたは関連テーブルに指定できます。 これを式にすることはできません。 |
search_value | search_columnName で検索する値。 |
alternateResult | (省略可能) result_columnName のコンテキストが、ゼロまたは複数の個別の値にフィルター処理されたときに返される値。 指定しない場合、関数では、result_columnName がゼロ値にフィルター処理されている場合は BLANK、複数の個別の値の場合はエラーが返されます。 |
戻り値
search_column と search_value のすべてのペアが完全一致する行の result_column の値。
すべての検索値に一致するものがない場合は、BLANK または alternateResult (指定されている場合) が返されます。 つまり、一部の条件のみが一致する場合、この関数では参照値を返しません。
検索値が複数の行と一致する場合、および result_column 値が同一であるすべての場合に、その値が返されます。 しかし、result_column で異なる値が返された場合は、エラーまたは alternateResult (指定されている場合) が返されます。
解説
結果と検索のテーブル間にリレーションシップが存在する場合は、ほとんどのケースで、LOOKUPVALUE ではなく RELATED 関数を使用する方が効率的で、パフォーマンスが向上します。
search_value および alternateResult パラメーターは、関数が検索テーブルの行を反復処理する前に評価されます。
LOOKUPVALUE によって返されたエラーを取得するために、ISERROR 関数または IFERROR 関数を使用しないようにしてください。 関数への一部の入力によって、1 つの出力値を決定できないときにエラーが発生する場合は、alternateResult パラメーターを指定することが最も信頼性が高く、パフォーマンスに優れたエラー処理の方法です。
PowerPivot 計算列で指定した場合、alternateResult パラメーターはエラーをスローします。
この関数は、計算列または行レベルのセキュリティ (RLS) ルールで使用される場合、DirectQuery モードでの使用はサポートされません。
例
この記事の例は、Adventure Works DW 2020 Power BI Desktop のサンプル モデルで使用できます。 モデルを取得するには、「DAX サンプル モデル」を参照してください。
Sales テーブルで定義されている次の計算列は、LOOKUPVALUE 関数を使用して、Sales Order テーブルからチャネル値を返します。
CHANNEL = LOOKUPVALUE('Sales Order'[Channel],'Sales Order'[SalesOrderLineKey],[SalesOrderLineKey])
ただし、この場合、Sales Order と Sales のテーブル間にリレーションシップがあるため、RELATED 関数を使用する方が効率的です。
CHANNEL = RELATED('Sales Order'[Channel])