連結
連結とは、2 つのテーブルを 1 つにまとめる操作のことです。
2 つのテーブルを連結するには、テーブルを上下に重ね合わせます。その際、各テーブルにそれぞれ固有の列名を持つ列が 1 つ必要となります。データは変更されず、作成されるテーブルには元の 2 つのテーブルの合計と同じ数のレコードが含まれます。複数の連結操作を連続で実行して、複数のテーブルを連結したテーブルを作成できます。
自動連結
ロードされた複数のテーブルの項目名と項目数が完全に一致する場合、Qlik Sense はさまざまなステートメントのコンテンツを 1 つのテーブルに連結します。
自動連結させるためには、項目の数と名前は、完全に同じでなければなりません。2 つの LOAD ステートメントの順番は任意ですが、テーブルには、最初にロードされたテーブルの名前が与えられます。
次の手順を実行します。
- Scripting Tutorial アプリでデータ ロード エディターを開きます。
- Dates タブをクリックします。
- [データのロード] をクリックします。
- スクリプト セクション Dates の新しい行で、Table2 の LOAD ステートメントをコピーします。これによりデータが 2 回ロードされます。2 つ目のテーブルに Table2a という名前をつけます。
- [データのロード] をクリックします。
- [データ モデル ビューア] を開きます。
- [プレビューの表示] をクリックします。
これまでに記述したロード スクリプトに基づき、Qlik Sense は 628 行を Dates.xlsx データ ファイルから Table2 にロードします。
データ ロード進捗状況ウィンドウ

既存のスクリプトを削除して、以下のスクリプトをコピーして貼り付けることもできます。
Table2:
LOAD
"Date",
Month (Date) as "Month",
Quarter,
"Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Table2a:
LOAD
"Date",
Month (Date) as "Month",
Quarter,
"Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
これで、スクリプトは次のようになります。
Dates タブのロード スクリプト
![クリックしてフル サイズを表示 [日付] タブのロード スクリプト。](../../Resources/Images/tutorial-load_dates_concat-cloud-rev.png)
Qlik Sense は Table2 をロードせず、続いて Table2a をロードしません。その代わり、Table2a の項目名と項目数が Table2 と同じであることを認識します。次に Table2a のデータを Table2 に追加し、テーブル Table2a を削除します。その結果、Table2 の行数が 1,256 行になります。
データ ロード進捗状況ウィンドウでの連結

Table2 のみが作成されています。Table2 を選択します。 このテーブルには 1256 行あります。
データ モデル ビューアに表示された Table2

強制連結
複数のテーブルにまったく同じ項目セットが存在しない場合でも、Qlik Sense は 2 つのテーブルを強制的に連結できます。強制連結は、スクリプトで Concatenate プレフィックスを使用すると実行できます。このプレフィックスは、特定のテーブルを別の名前のテーブルまたは一番最近に作成されたテーブルに連結します。
次の手順を実行します。
- Table2a の LOAD ステートメントを編集し、Concatenate を追加して Week をコメント アウトします。
- [データのロード] をクリックします。
- [データ モデル ビューア] を開きます。
- データ モデル ビューアで Table2 をクリックし、次に [プレビュー] をクリックします。
- Table2 の Week をクリックします。プレビューには、この項目に Null でない値が 628 個あることを示されます。しかし、他の項目をクリックすると、Null でない値の数は 1256 と表示されます。Week は Table2 から 1 回のみロードされています。結果として生成されるテーブルのレコード件数は、Table2 と Table2a に含まれるレコードの合計となります。
スクリプトは次のようになります。
Table2a:
Concatenate LOAD
"Date",
Month (Date) as "Month",
Quarter,
// "Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Week をコメント アウトすることで、テーブルがまったく同じにならないようにします。
ご覧のように、Table2a は作成されていません。
テーブルには Date、Month、Quarter、Week、および Year という項目があります。項目 Week が表示されたままになっているのは、Table2 からロードされているためです。
連結の防止
ロードされた複数のテーブルの項目名と項目数が完全に一致する場合、Qlik Sense はさまざまなステートメントのコンテンツを 1 つのテーブルに連結します。このような動作は NoConcatenate ステートメントによって防ぐことができます。関連付けられた LOAD または SELECT ステートメントでロードされたテーブルは、既存のテーブルに連結されません。
次の手順を実行します。
- 2 つのテーブルのコンテンツを完全に分離させるには、Table2a の LOAD ステートメントに NoConcatenate を追加し、一致する項目に基づいて Qlik Sense が合成キーを生成しないように、項目の名前を変更します。Table2 の Week をコメント解除して 2 つのテーブルの項目を同じにします。
- [データのロード] をクリックします。
- [データ モデル ビューア] を開きます。
- 連結の実演は以上で終了です。Table2a はもう必要ありません。Table2a の LOADステートメントからすべての行を削除し、[データのロード] をクリックします。
スクリプトは次のようになります。
Table2:
LOAD
"Date",
Month (Date) as "Month",
Quarter,
"Week",
"Year"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
Table2a:
NoConcatenate LOAD
"Date" as "Date2",
Month (Date) as "Month2",
Quarter as "Quarter2",
"Week" as "Week2",
"Year" as "Year2"
FROM [lib://DataFiles/Dates.xlsx]
(ooxml, embedded labels, table is Dates);
これで 2 つのテーブルが完全に分離されました。
データ モデル ビューアに表示された Table2 と Table 2a
