串連
串連是將兩個表格結合成一個表格的操作。
兩個表格透過一個堆疊在另一個之上的方法進行相加,每個名稱不同的資料行均佔一個資料行。資料沒有變更,產生的表格包含等於兩個原始表格相加的記錄數量。可循序執行數個串連操作,以便產生的表格可串連兩個以上的表格。
自動串連
如果兩個或多個已載入表格的欄位名稱和欄位數目完全相同,Qlik Sense 會自動將不同陳述式的內容串連成一個表格。
欄位的數目和名稱必須完全相同,以便能夠自動串連。兩個 LOAD 陳述式的順序可任意排序,但表格名稱為第一次載入時的名稱。
請執行下列動作:
- 在 Scripting Tutorial 應用程式中開啟資料載入編輯器。
- 按一下 Dates 標籤。
- 按一下載入資料。
- 在區段 Dates 的指令碼中的新行,複製並貼上 Table2 的 LOAD 陳述式。這將會造成資料載入兩次。命名第二個表格 Table2a。
- 按一下載入資料。
- 開啟資料模型檢視器。
- 按一下顯示預覽。
根據您目前撰寫的載入指令碼,Qlik Sense 可從 Dates.xlsx 資料檔案將 628 行載入 Table2。
資料載入進度視窗
![按一下以檢視完整大小 資料載入進度視窗](../../Resources/Images/tutorial-load-progress-dates.png)
您也可以刪除現有的指令碼,並複製和貼上下列內容:
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 行。
資料載入進度視窗中的串連
![按一下以檢視完整大小 資料載入進度視窗中的串連。](../../Resources/Images/tutorial-load-progress-dates-concat.png)
只建立了 Table2。選取 Table2。表格有 256 列。
顯示 Table2 的資料模型檢視器
![按一下以檢視完整大小 顯示 Table2 的資料模型檢視器。](../../Resources/Images/tutorial-data-model-sales-concat.png)
強制串連
即使兩個或多個表格沒有完全相同的一組欄位,還是可以強制 Qlik Sense 串連這兩個表格。這是在指令碼中使用 Concatenate 前置詞來達成,如此會串連一個表格與另一個具名的表格,或是最近建立的表格。
請執行下列動作:
- 編輯 Table2a 的 LOAD 陳述式,新增 Concatenate 和註解 Week。
- 按一下載入資料。
- 開啟資料模型檢視器。
- 按一下資料模型檢視器中的 Table2,然後按一下預覽。
- 按一下 Table2 中的 Week。預覽顯示欄位的非 Null 值數目為 628。不過,若您按一下任何其他欄位,您會看見非 Null 值的數目為 1256。Week 僅從 Table2 載入一次。值或記錄的數目是 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 會自動將不同陳述式的內容串連成一個表格。這可透過 NoConcatenate 陳述式避免。以相關聯的 LOAD 或 SELECT 陳述式載入的表格就不會與現有的表格串連。
請執行下列動作:
- 若要能夠完全分離兩個表格的內容,請將 NoConcatenate 新增至 Table2a 中的 LOAD 陳述式,並重新命名欄位,讓 Qlik Sense 不會根據相符欄位建立合成鍵。取消註解 Table2 中的 Week,讓兩個表格具有相同欄位。
- 按一下載入資料。
- 開啟資料模型檢視器。
- 由於已完成示範串連,我們將不再需要 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);
您現可看見完全區分了兩個表格。
顯示 Table2 和 Table 2a 的資料模型檢視器
![按一下以檢視完整大小 顯示 Table2 和 Table 2a 的資料模型檢視器。](../../Resources/Images/tutorial-data-model-sales-noconcat.png)