結合の代替としてのマッピング

Qlik SenseJoin プレフィックスは、データ モデルで複数のデータ テーブルを組み合わせる強力な方法です。ただし、組み合わされたテーブルが大きくなり、パフォーマンスに問題が生じる可能性があるという欠点もあります。そこで、別のテーブルから単一の値を探す必要がある場合など、Join の代わりにマッピングを使用することができます。結合ではテーブルのレコード数が変わるため、計算のスピードダウンとエラーの原因になる可能性がある不要なデータのロードを回避できます。

マッピング テーブルは、比較項目 (入力) とマッピング値項目 (出力) という 2 つの列で構成されます。

この例では注文テーブル (Orders), を使用しており、顧客の国を把握する必要があります。この情報は、顧客テーブル (Customers) に保管されています。

Orders データ テーブル
OrderID OrderDate ShipperID Freight CustomerID
12987 2007-12-01 1 27 3
12988 2007-12-01 1 65 4
12989 2007-12-02 2 32 2
12990 2007-12-03 1 76 3
Customers データ テーブル
CustomerID 名前 ...
1 DataSales Spain ...
2 BusinessCorp Italy ...
3 TechCo Germany ...
4 Mobecho France ...

顧客の国 (Country) を見つけるには、以下のようなマッピング テーブルが必要です。

マッピング テーブル
CustomerID
1 Spain
2 Italy
3 Germany
4 France

MapCustomerIDtoCountry という名前を付けたマッピング テーブルは、以下のようにスクリプトで定義されます。

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

次に、注文テーブルをロードする際に、ApplyMap 関数を使用してマッピングを適用します。

Orders: LOAD *, ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country From Orders ;

ApplyMap 関数の 3 番目のパラメータは、マッピング テーブルで値が見つからない場合に何を返すのか定義するために使われます。この例では、Null() です。

この結果、テーブルは次のようになります。

結果テーブル
OrderID OrderDate ShipperID Freight CustomerID
12987 2007-12-01 1 27 3 Germany
12988 2007-12-01 1 65 4 France
12989 2007-12-02 2 32 2 Italy
12990 2007-12-03 1 76 3 Germany