Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になります。
Qlik Sense Desktop初めて2週間足らずの初心者です。
Qlik Sense Desktopでのテーブル結合スクリプトの記述方法について質問させて頂きます。
トランザクションテーブルとマスタテーブルを
トランザクションを第一テーブルとした左結合(Left JoinかLeft Keep)で構成したいと考えております。
ですが、上手く結合できず、[名称]がNULLのレコードばかりになってしまいました。
(且つ、なぜか一部レコードは正しく結合が出来ている状態です。)
スクリプトの記述内容は下記の通りです。
記述方法やそもそもの考え方に間違いがあればご指摘頂きたく宜しくお願い致します。
①トランザクションテーブルのロード
②マスタテーブルのロード(このときLEFT KEEPを冒頭に記述しています。)
-------------
[トランザクション]:
LOAD
[TRキー1],
[MAキー1] AS [トランザクション.MAキー1],
[MAキー2] AS [トランザクション.MAキー2],
[MAキー1]&[MAキー2] AS [トランザクション.MAキー1-トランザクション.MAキー2-マスタ.MAキー1-マスタ.MAキー2]
FROM (lib//データ接続フォルダ/トランザクションファイル)
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
LEFT KEEP(トランザクション)
[マスタ]:
LOAD
[MAキー1] AS [マスタ.MAキー1],
[MAキー2] AS [マスタ.MAキー2],
[名称],
[MAキー1]&[MAキー2] AS [トランザクション.MAキー1-トランザクション.MAキー2-マスタ.MAキー1-マスタ.MAキー2]
FROM (lib//データ接続フォルダ/マスタファイル)
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
-------------
スクリプト自体は間違っていないと思います。
私が記述するとしたら下記の通りです。
[トランザクション]:
LOAD
[MAキー1]&'-'&[MAキー2] AS [KEY_MASTER],
[TRキー1]
FROM [(lib//データ接続フォルダ/トランザクションファイル]
[txt, codepage is 932, embedded labels, delimiter is spaces, msq];
LEFT JOIN
LOAD
[MAキー1],
[MAキー2],
[名称],
[MAキー1]&'-'&[MAキー2] AS [KEY_MASTER]
FROM [lib//データ接続フォルダ/マスタファイル]
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
MAキーはマスタが正であれば、トランザクション側には必要ないです。
もしくは文字列結合のキー項目を作成しない方法もあります。
[トランザクション]:
LOAD
[TRキー1],
[MAキー1] ,
[MAキー2]
FROM lib//データ接続フォルダ/トランザクションファイル]
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
LEFT JOIN
LOAD
[MAキー1] ,
[MAキー2] ,
[名称]
FROM [lib//データ接続フォルダ/マスタファイル]
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
あとは、データの型式が同じになっていないと結合されません。
MAキーをtextやnumで括ってデータ型を統一すると繋がることがあります。
スクリプト自体は間違っていないと思います。
私が記述するとしたら下記の通りです。
[トランザクション]:
LOAD
[MAキー1]&'-'&[MAキー2] AS [KEY_MASTER],
[TRキー1]
FROM [(lib//データ接続フォルダ/トランザクションファイル]
[txt, codepage is 932, embedded labels, delimiter is spaces, msq];
LEFT JOIN
LOAD
[MAキー1],
[MAキー2],
[名称],
[MAキー1]&'-'&[MAキー2] AS [KEY_MASTER]
FROM [lib//データ接続フォルダ/マスタファイル]
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
MAキーはマスタが正であれば、トランザクション側には必要ないです。
もしくは文字列結合のキー項目を作成しない方法もあります。
[トランザクション]:
LOAD
[TRキー1],
[MAキー1] ,
[MAキー2]
FROM lib//データ接続フォルダ/トランザクションファイル]
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
LEFT JOIN
LOAD
[MAキー1] ,
[MAキー2] ,
[名称]
FROM [lib//データ接続フォルダ/マスタファイル]
(txt, codepage is 932, embedded labels, delimiter is spaces, msq);
あとは、データの型式が同じになっていないと結合されません。
MAキーをtextやnumで括ってデータ型を統一すると繋がることがあります。
返信が遅くなり申し訳御座いません。
スクリプトをご確認下さり
ありがとうございます。
まだ初心者で問題箇所の特定が出来ない状態であったため、
スクリプトに問題ないことをご教授頂き大変助かりました。
発生していた問題につきましては、
別の年月のデータを使用することで対処することが出来ました。
(⇒ そのため、問題箇所はデータにあった可能性が高いと判断しておりますが、
特定までには至りませんでした。)