LOOKUPVALUE
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 のコンテキストが、ゼロまたは複数の個別の値にフィルター処理されたときに返される値。 指定しない場合、関数は、result_columnName が 0 の値までフィルター処理された場合は BLANK を返し、result_columnName のコンテキストに複数の個別の値がある場合はエラーを返します。 |
戻り値
search_columnName と search_value のすべてのペアが完全一致する行の result_columnName の値。
すべての検索値に一致するものがない場合は、BLANK または alternateResult (指定されている場合) が返されます。 つまり、一部の条件が一致するだけでは、この関数は参照値を返しません。
複数の行が検索値と一致し、これらの行の result_columnName の値が同じ場合、その値が返されます。 しかし、result_columnName が異なる値を返す場合は、エラーまたは alternateResult (指定されている場合) が返されます。
注釈
結果列を含むテーブルと検索列を含むテーブル間にリレーションシップが存在する場合は、ほとんどのケースで、LOOKUPVALUE ではなく RELATED 関数を使用する方が効率的で、パフォーマンスが向上します。
search_columnName と search_value の複数のペアを指定できます。
search_value および alternateResult パラメーターは、関数が検索テーブルの行を反復処理する前に評価されます。
LOOKUPVALUE によって返されたエラーを取得するために、ISERROR 関数または IFERROR 関数を使用しないようにしてください。 関数への一部の入力によって、1 つの出力値を決定できないときにエラーが発生する場合は、alternateResult パラメーターを指定することが最も信頼性が高く、パフォーマンスに優れたエラー処理の方法です。
alternateResult パラメーターは Power Pivot 計算列で指定した場合、エラーを返します。
この関数は、計算列または行レベルのセキュリティ (RLS) ルールで使用される場合、DirectQuery モードでの使用はサポートされません。
例 1
次の例では、LOOKUPVALUE を使用して、注文が行われた日に注文の支払いに使用される通貨の Average Rate を検索します。
Exchange Rate =
LOOKUPVALUE (
'Currency Rate'[Average Rate],
'Currency Rate'[CurrencyKey], [CurrencyKey],
'Currency Rate'[DateKey], [OrderDateKey]
)
正しい日付と通貨の Average Rate を見つけるには、Order Date と Currency の両方が必要です。 OrderDateKey と CurrencyKey は、Currency Rate テーブルの Average Rate を調べるために使用されるキーです。
Exchange Rate を使用して、次の方法で現地通貨での Sales Amount を計算できます。
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])