# 串連

串連是將兩個表格結合成一個表格的操作。

兩個表格透過一個堆疊在另一個之上的方法進行相加，每個名稱不同的資料行均佔一個資料行。資料沒有變更，產生的表格包含等於兩個原始表格相加的記錄數量。可循序執行數個串連操作，以便產生的表格可串連兩個以上的表格。

## 自動串連

如果兩個或多個已載入資料表的 欄位名稱與欄位數量完全相同，應用程式將會自動將不同陳述式的內容串連成一個資料表。

欄位的數目和名稱必須完全相同，以便能夠自動串連。兩個 LOAD 陳述式的順序可任意排序，但表格名稱為第一次載入時的名稱。

請執行下列動作：

1. 在 Scripting Tutorial 應用程式中開啟資料載入編輯器。
2. 按一下 Date 標籤。
3. 按一下載入資料。

   根據您目前為止撰寫的 載入指令碼，應用程式會從 Dates.xlsx 資料檔案將 628 行載入至 Table2。

   資料載入進度視窗

   資料載入進度視窗

   資料載入進度視窗 ![資料載入進度視窗](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-load-progress-dates.png)
4. 在區段 Dates 的指令碼中的新行，複製並貼上 LOAD 的 Table2 陳述式。這將會造成資料載入兩次。命名第二個表格 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/zh-TW/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/zh-TW/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/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_data_model_viewer_table2.png)

## 強制串連

即使兩個或多個資料表沒有完全相同的欄位集合，仍然可以強制應用程式串連這兩個資料表。這是在指令碼中使用 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 載入一次。值或記錄的數目是 Table2 和 Table2a 中的記錄數目加總。

## 防止串連

如果兩個或多個已載入資料表的欄位名稱和欄位數量完全相同，應用程式會自動將不同陳述式的內容串連成一個資料表。這可透過 NoConcatenate 陳述式避免。以相關聯的 LOAD 或 SELECT 陳述式載入的表格就不會與現有的表格串連。

請執行下列動作：

1. 若要能夠完全分開兩個資料表的內容，請將 NoConcatenate 新增至 Table2a 中的 LOAD 陳述式，並重新命名欄位，使應用程式不會根據相符欄位建立合成鍵。取消註解 Week 中的 Table2，讓兩個表格具有相同欄位。

   您的指令碼現在應如下所示：
   ```
   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. 開啟資料模型檢視器。

   您現可看見完全區分了兩個表格。

   顯示 Table2 和 Table 2a 的資料模型檢視器

   顯示 Table2 和 Table 2a 的資料模型檢視器

   顯示 Table2Table2 和 Table 2aTable 2a 的資料模型檢視器 ![顯示 Table2 和 Table 2a 的資料模型檢視器。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-data-model-sales-noconcat.png)
4. 由於已完成示範串連，我們將不再需要 Table2a。刪除 LOAD 的 Table2a 陳述式中的所有列，然後按一下載入資料。