Qlik Senseで分析しやすいデータ構造を作る【テーブルの結合:Concatenate】
テーブルの結合とは元々存在するテーブルの末尾に新しい行を追加し、テーブルを1つにまとめることです。
下の図のようなイメージですね。
ファクトテーブルを連結してトランザクションテーブルのように扱ったり、連番のファイルを1つにまとめるときに使います。
1.テーブルの自動結合
Qlik Senseではテーブルに含まれるすべての項目が同じ名前である場合、それらのテーブルは自動で結合が行われます。
下のように、項目名さえ同じであればテーブル名が異なっていても問答無用で結合が行われます。
個人的には、テーブルの自動結合はあまりお勧めしません。
- スクリプトを見直したとき、「テーブルを結合する」とはどこにも書かれていないので結合されたことを忘れてしまいがち
→経験上、自動結合されたことに気づかずに「ロードしたはずのテーブルが消えた!」と慌てやすいです - 後から片方のテーブルに項目を追加したとき、テーブルの結合がされなくなる
(項目が一致しなくなるためです!)
このようにメンテナンス性が悪くなるため、
特別な理由がない限り「このテーブル同士を結合する」ときっちり宣言してロードを行うのが良いスクリプトの書き方だと思います。
テーブルの自動結合が役に立つのはFOR文によるループで連番ファイルを読み込むとき位のものでしょうか。
2.Concatenateで明示的にテーブルを結合
既存のテーブルに対し明示的に結合操作を行う場合、
LOAD文の前にConcatenate(結合するテーブル名)を追加します。
結合するテーブル名の部分を省略すると直前に読み込んだテーブルが結合対象になります(が、テーブル名は明示的に指定しましょう。バグの元です)。
自動結合とは違い一致する項目名が存在しなくてもテーブルの結合が行われ、一致しない部分はNullで埋められます。
3.NoConcatenateで結合せずにテーブルを読み込み
項目名が既存テーブルとすべて同じで、そのままでは自動結合が行われるテーブルを別のテーブルとして読み込むときはLOAD文の前にNoConcatenateを追加します。
自動結合は行われず、2つのテーブルが作成されます。
(もちろん、これらのテーブルは項目名を共有するので「$Syn」テーブルの関連付けが発生します)
この記事は、以上です。