全角を半角に変換して取り込む方法_Mapping関数
更新日:2023年9月26日
全角の日付が混じっている日付項目に対してデータ型変換関数を使用すると、
全角の日付はNULL値となるため、Qlik Sense のシート上に表示することができません。
LOAD
Date(Date#(日付,'YYYY年MM月DD日')) as 日付
FROM [lib://demo/Book1.xlsx]
(ooxml, embedded labels, table is Sheet1);
そのため、日付項目に全角が混じっている場合は Qlik Sense 側で全角を半角に変換して
日付データをとり込む必要あります。
Mapping プレフィックスと MapSubString 関数を利用することで全角の値を半角に
変換して取り込むことが可能です。
マッピングテーブルによる文字列の置き換え処理の記述例を以下に記載 いたします。
こちらの内容でデータを読み込むと、「加工後項目」は すべて半角文字となり、
Resident 句を使用して「加工後項目」のデータ型を 変換しています。
※細かい処理の説明はコメントで記載しております。
マッピング:
// テーブル名を設定します。後に MapSubString 関数の引数で使用します。
Mapping
// マッピングテーブルとして使用するため Mapping プレフィックスを指定します。
LOAD 全角, // 1番目に、変換前の文字列をもつ項目を指定します。
半角 // 2番目に、変換後の文字列をもつ項目を指定します。
// MapSubString 関数で文字列は左から右にマップされるためです。
Inline [
全角,半角
0,0
1,1
2,2
3,3
4,4
5,5
6,6
7,7
8,8
9,9
];
//Inlineはデータ ロード エディタ上で 簡易的なデータを作成できる機能です。
// 加工するデータを取り込みます。
data:
LOAD
日付 as 加工前項目,
// 比較のために加工前の項目を取り込んでいます。
MapSubString('マッピング',日付) as 加工後項目
// マッピングテーブル「map_charactor」にもとづいて文字列を変換します。
FROM [lib://demo/Book1.xlsx]
(ooxml, embedded labels, table is Sheet1);
join
LOAD
加工前項目,
Date(Date#(加工後項目,'YYYY年MM月DD日'),'YYYY年MM月DD日') as 日付型変換後項目
//データ型変換関数を使用するため、Resident句で一時テーブルから加工後項目を再読み込みしています。
Resident data;
<解説>
・Mapping プレフィックス
対象データをマッピングテーブルとして使用するために LOAD または SELECT ステートメントの 前に指定します。 マッピング テーブルは 2 列構成で、1 列目には比較値(変換前)、2 列目は マッピング値(変換後) を取り込みます。 なお、マッピング テーブルは一時的にメモリに保存され、
スクリプト 実行後に自動的に削除されます。
今回は、半角文字に置き換えるため、記述例ではインラインロードで「全角,半角」という順番で 読み込んでいます。 実装時には、Excel ファイルや CSV ファイルを用意してご対応 いただくことも 可能です。
・MapSubString('マッピング',日付)
MapSubString 関数は、先に読み込んだマッピング テーブルに基づき、 指定した項目(または数式)の
一部を置き換えます。 第 1 引数にはマッピングテーブル名を指定し、第 2 引数で対処となる項目
(または数式)を指定します。 なお、テーブル名は単一引用符で囲む必要があります。
今回はマッピングテーブル「マッピング」を使用して、「日付」の文字列にある「全角」の値を 「半角」の値に変換しています。
上記の処理で全角→半角に変換した「加工後項目」を作成した後に Date 関数で変換した「日付型変換後項目」を作成しています。「日付型変換後項目」を作成することで
Qlik Sense 側で日付型の項目であると認識し、Year 関数や Month 関数などを利用する
こともできます。
今回は数字の置き換えでしたが、MapSubString 関数を利用することでカタカナ等の
置き換えもできます。
是非試してみてください!
Comments