
Qlik Senseに取り込んだデータを予め用意した規則をもとに一括で置換したいということはないでしょうか?
こんな時に便利なMappingプレフィックスとApplyMap関数の使い方をご紹介します。
▼利用例
「商品番号」を「商品名」に置換したい
バラバラの表記を統一したい(株式会社、(株)、㈱→株式会社)
売上テーブルの「商品番号」を商品テーブルの「単価」に置換して利用したい
目次
※本記事は「2022年06月時点のSaaS」で作成しています。
はじめに
まずは置換前と置換後の値を持つ「マッピングテーブル」を用意します。
今回は「商品テーブル」をマッピングテーブルとし、以下の置換処理を行います。
■置換処理
売上テーブルの「商品番号」を「単価」に置換する
売上テーブルの「商品番号」を「単価」に置換し、「単価-売価」とした「値引額」を作成する
■元データ
商品テーブル:

売上テーブル:

■置換後の結果

スクリプト記述例
//「商品番号」と「単価」を持つ商品テーブルをマッピングテーブルとして取り込みます。
商品テーブル:
Mapping
LOAD
商品番号,
単価
FROM [lib://スペース名:DataFiles/Mapping.xlsx]
(ooxml, embedded labels, table is 商品);
//「商品番号」を「単価」に置き換えた「単価」、
// 置き換えた「単価」から「売価」を引いた「値引額」を作成します。
売上:
LOAD
売上実績,
商品番号,
売価,
ApplyMap('商品テーブル', 商品番号) as 単価,
ApplyMap('商品テーブル', 商品番号) - 売価 as 値引額
FROM [lib://スペース名:DataFiles/Mapping.xlsx]
(ooxml, embedded labels, table is 売上明細);解説
Mappingプレフィックス
LOAD文の前にMappingと指定すると、そのテーブルはマッピングテーブルとなります。
マッピングテーブルの作成ルールは以下の通りです。
2列のテーブルであること
1列目に置換前の値、2列目に置換後の値を持つこと
後からApplyMap関数で参照するため、マッピングテーブルには必ずテーブル名を付けること
(LOAD文の前にテーブル名:をつける)
マッピングテーブルは置換処理にのみに使用されますので、データロードが完了すると自動的に削除されます。
ApplyMap関数
ApplyMap関数でマッピングテーブルをもとに値を一括置換します。
●構文
ApplyMap('マッピングテーブル名', 置換する項目)※マッピングテーブル名はシングルクォートで囲みます。
●記述例
ApplyMap('商品テーブル', 商品番号)※マッピングテーブル「商品テーブル」を使用して、「商品番号」を「単価」に置換する場合の例です。
さいごに
用意した規則をもとに一括で置換したい場合はMappingとApplyMap関数をご利用ください!
また、ApplyMap関数ではなくMapSubstring関数を使うことで、部分一致による置換も行えます。
気になる方はMapSubstring関数のヘルプページをご覧ください。