PowerPivot の最も強力な機能の 1 つは、テーブル間のリレーションシップを作成し、関連テーブルを使用して関連データを参照またはフィルター処理する機能です。 テーブルから関連する値を取得するには、データ分析式 (DAX) で指定PowerPivot言語を使用します。 DAX はリレーショナル モデルを使用するため、別のテーブルまたは列の関連する値または対応する値を簡単かつ正確に取得できます。 VLOOKUP を使い慣れた Excel場合、 PowerPivot のこの機能は似ていますが、実装がはるかに簡単です。
集計列の一部として、またはピボットテーブルまたはピボットテーブルで使用するメジャーの一部としてルックアップを行う数式をピボットグラフ。 詳細については、次のトピックを参照してください。
このセクションでは、ルックアップ用に提供される DAX 関数と、関数の使い方の例について説明します。
注: 使用するルックアップ操作またはルックアップ数式の種類によっては、最初にテーブル間のリレーションシップを作成する必要がある場合があります。
ルックアップ関数について
別のテーブルから照合データまたは関連データを参照する機能は、現在のテーブルに何らかの識別子しか存在しませんが、必要なデータ (製品価格、名前、その他の詳細な値など) が関連テーブルに格納されている場合に特に便利です。 また、別のテーブルに現在の行または現在の値に関連する複数の行がある場合にも便利です。 たとえば、特定の地域、店舗、販売担当者に関連付いているすべての売上を簡単に取得できます。
配列に基づく VLOOKUP や、複数の一致する値の最初の値を取得する LOOKUP などの Excel ルックアップ関数とは対照的に、DAX はキーで結合されたテーブル間の既存のリレーションシップに従って、完全に一致する 1 つの関連値を取得します。 DAX は、現在のレコードに関連するレコードのテーブルを取得できます。
注: リレーショナル データベースを使い慣れた場合は、transact- PowerPivot の入れ子になったサブ選択ステートメントと同様に、 PowerPivot の参照を考SQL。
1 つの関連する値の取得
RELATED 関数は、現在のテーブルの現在の値に関連する別のテーブルから 1 つの値を返します。 必要なデータを含む列を指定し、関数はテーブル間の既存のリレーションシップに従って、関連テーブルの指定された列から値をフェッチします。 場合によっては、関数はリレーションシップのチェーンに従ってデータを取得する必要があります。
たとえば、現在の出荷の一覧が現在の配送先に含Excel。 ただし、一覧には従業員 ID 番号、注文 ID 番号、運送会社 ID 番号だけが含まれているので、レポートが読みにくいです。 必要な追加の情報を取得するには、そのリストを PowerPivot のリンク テーブルに変換し、EmployeeID を EmployeeKey フィールドに、ResellerID を ResellerKey フィールドに照合して、Employee テーブルと Reseller テーブルとのリレーションシップを作成します。
リンク テーブルにルックアップ情報を表示するには、次の数式を使用して 2 つの新しい計算列を追加します。
= RELATED('Employees'[EmployeeName])
= RELATED('Resellers'[CompanyName])
ルックアップ前の今日の出荷
OrderID |
EmployeeID |
ResellerID |
---|---|---|
100314 |
230 |
445 |
100315 |
15 |
445 |
100316 |
76 |
108 |
Employees テーブル
EmployeeID |
従業員 |
リセラー |
---|---|---|
230 |
Kuppa Vamsi |
モジュール サイクル システム |
15 |
Pilar Ackeman |
モジュール サイクル システム |
76 |
Kim Ralls |
関連付けられている自転車 |
今日の出荷とルックアップ
OrderID |
EmployeeID |
ResellerID |
従業員 |
リセラー |
---|---|---|---|---|
100314 |
230 |
445 |
Kuppa Vamsi |
モジュール サイクル システム |
100315 |
15 |
445 |
Pilar Ackeman |
モジュール サイクル システム |
100316 |
76 |
108 |
Kim Ralls |
関連付けられている自転車 |
この関数は、リンク テーブルと Employees テーブルと Resellers テーブルの間のリレーションシップを使用して、レポートの各行の正しい名前を取得します。 関連する値を計算に使用することもできます。 詳細と例については、RELATED 関数 に関する ページを参照してください。
関連する値の一覧の取得
RELATEDTABLE 関数は既存のリレーションシップに従い、指定したテーブルのすべての一致する行を含むテーブルを返します。 たとえば、各リセラーが今年発注した注文の数を確認したいとします。 次の数式を含む新しい計算列を Resellers テーブルに作成できます。この列は、ResellerSales_USD テーブル内の各リセラーのレコードを検索し、各リセラーによって発注された個々の注文の数をカウントします。
=COUNTROWS(RELATEDTABLE(ResellerSales_USD))
この数式では、RELATEDTABLE 関数はまず、現在のテーブルのリセラーごとに ResellerKey の値を取得します。 (テーブル間の既存のリレーションシップが使用 PowerPivot 、数式のどこにも ID 列を指定する必要はない)。 RELATEDTABLE 関数は、各リセラーに関連ResellerSales_USDテーブルからすべての行を取得し、行をカウントします。 2 つのテーブル間にリレーションシップ (直接または間接) がない場合は、テーブルからすべての行ResellerSales_USDされます。
サンプル データベースのリセラー のモジュール サイクル システムの場合、売上テーブルには 4 つの注文が含め、この関数は 4 を返します。 関連付けられている自転車の場合、リセラーは売上を持たないので、関数は空白を返します。
リセラー |
このリセラーの売上テーブルのレコード |
|
---|---|---|
モジュール サイクル システム |
リセラー ID |
SalesOrderNumber |
445 |
SO53494 |
|
445 |
SO71872 |
|
445 |
SO65233 |
|
445 |
SO59000 |
|
リセラー ID |
SalesOrderNumber |
|
関連付けられている自転車 |
注: RELATEDTABLE 関数は 1 つの値ではなくテーブルを返すので、テーブルに対して操作を実行する関数の引数として使用する必要があります。 詳細については 、「RELATEDTABLE 関数」を参照してください。