# 連結

連結とは、2 つのテーブルを 1 つにまとめる操作のことです。

2 つのテーブルを連結するには、テーブルを上下に重ね合わせます。その際、各テーブルにそれぞれ固有の列名を持つ列が 1 つ必要となります。データは変更されず、作成されるテーブルには元の 2 つのテーブルの合計と同じ数のレコードが含まれます。複数の連結操作を連続で実行して、複数のテーブルを連結したテーブルを作成できます。

## 自動連結

ロードされた 2 つ以上のテーブルのフィールド名とフィールド数が完全に一致する場合、アプリケーションはさまざまなステートメントのコンテンツを 1 つのテーブルに連結します。

自動連結させるためには、項目の数と名前は、完全に同じでなければなりません。2 つの LOAD ステートメントの順番は任意ですが、テーブルには、最初にロードされたテーブルの名前が与えられます。

次の手順を実行します。

1. Scripting Tutorial アプリケーションで [データ ロード エディター] を開きます。
2. Date タブをクリックします。
3. [データのロード] をクリックします。

   ここまでに作成したロード スクリプトに基づいて、アプリケーションは Dates.xlsx データ ファイルから Table2 に 628 行をロードします。

   データ ロード進捗状況ウィンドウ

   データ ロード進捗状況ウィンドウ

   データ ロード進捗状況ウィンドウ ![データ ロード進捗状況ウィンドウ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-load-progress-dates.png)
4. スクリプト セクション Dates の新しい行で、LOAD の Table2 ステートメントをコピーします。これによりデータが 2 回ロードされます。2 つ目のテーブルに Table2a という名前をつけます。

   既存のスクリプトを削除して、以下のスクリプトをコピーして貼り付けることもできます。
   ```
   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 タブのロード スクリプト

   Dates タブのロード スクリプト

   DatesDates タブのロード スクリプト ![\[日付\] タブのロード スクリプト。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-load_dates_concat-cloud-rev.png)
5. [データのロード] をクリックします。

   アプリケーションは Table2 をロードせず、続いて Table2a をロードしません。その代わり、Table2a の項目名と項目数が Table2 と同じであることを認識します。次に Table2a のデータを Table2 に追加し、テーブル Table2a を削除します。その結果、Table2 の行数が 1,256 行になります。

   データ ロード進捗状況ウィンドウでの連結

   データ ロード進捗状況ウィンドウでの連結

   データ ロード進捗状況ウィンドウでの連結 ![データ ロード進捗状況ウィンドウでの連結。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-load-progress-dates-concat.png)
6. [データ モデル ビューア] を開きます。
7. [プレビューの表示] をクリックします。

   Table2 のみが作成されています。Table2 を選択します。このテーブルには 1256 行あります。

   データ モデル ビューアに表示された Table2

   データ モデル ビューアに表示された Table2

   データ モデル ビューアデータ モデル ビューアに表示された Table2Table2 ![データ モデル ビューアに表示された Table2。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_data_model_viewer_table2.png)

## 強制連結

2 つ以上のテーブルのフィールド設定が完全に一致していない場合でも、アプリケーションにそれらのテーブルを連結させることができます。強制連結は、スクリプトで Concatenate プレフィックスを使用すると実行できます。このプレフィックスは、特定のテーブルを別の名前のテーブルまたは一番最近に作成されたテーブルに連結します。

次の手順を実行します。

1. LOAD の Table2a ステートメントを編集し、Concatenate を追加して Week をコメント アウトします。

   スクリプトは次のようになります。
   ```
   Table2a:
   					Concatenate LOAD
   					"Date",
   					Month (Date) as "Month",
   					Quarter,
   					// "Week",
   					"Year"
   					FROM [lib://DataFiles/Dates.xlsx]
   				(ooxml, embedded labels, table is Dates);
   ```

   Week をコメント アウトすることで、テーブルがまったく同じにならないようにします。
2. [データのロード] をクリックします。
3. [データ モデル ビューア] を開きます。

   ご覧のように、Table2a は作成されていません。
4. データ モデル ビューアで Table2 をクリックし、次に [プレビュー] をクリックします。

   テーブルには Date、Month、Quarter、Week、および Year という項目があります。項目 Week が表示されたままになっているのは、Table2 からロードされているためです。
5. Week の Table2 をクリックします。プレビューには、この項目に Null でない値が 628 個あることを示されます。しかし、他の項目をクリックすると、Null でない値の数は 1256 と表示されます。Week は Table2 から 1 回のみロードされています。結果として生成されるテーブルのレコード件数は、Table2 と Table2a に含まれるレコードの合計となります。

## 連結の防止

ロードされた 2 つ以上のテーブルのフィールド名とフィールド数が完全に一致する場合、アプリケーションはさまざまなステートメントのコンテンツを 1 つのテーブルに連結します。このような動作は NoConcatenate ステートメントによって防ぐことができます。関連付けられた LOAD または SELECT ステートメントでロードされたテーブルは、既存のテーブルに連結されません。

次の手順を実行します。

1. 2 つのテーブルのコンテンツを完全に分離させるには、Table2a の LOAD ステートメントに NoConcatenate を追加し、一致するフィールドに基づいてアプリケーションが合成キーを作成しないように項目名を変更します。Week の Table2 をコメント解除して 2 つのテーブルの項目を同じにします。

   スクリプトは次のようになります。
   ```
   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. [データのロード] をクリックします。
3. [データ モデル ビューア] を開きます。

   これで 2 つのテーブルが完全に分離されました。

   データ モデル ビューアに表示された Table2 と Table 2a

   データ モデル ビューアに表示された Table2 と Table 2a

   データ モデル ビューアに表示された Table2Table2 と Table 2aTable 2a ![データ モデル ビューアに表示された Table2 と Table 2a。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-data-model-sales-noconcat.png)
4. 連結の実演は以上で終了です。Table2a はもう必要ありません。LOAD の Table2aステートメントからすべての行を削除し、[データのロード] をクリックします。