跳到主要內容
串連

在此頁面

串連

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

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

自動串連

如果兩個或多個已載入表格的欄位名稱和欄位數目完全相同,Qlik Sense 會自動將不同陳述式的內容串連成一個表格。

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

請執行下列動作:

  1. Scripting Tutorial 應用程式中開啟資料載入編輯器
  2. 按一下 Dates 標籤。
  3. 按一下載入資料
  4. 根據您目前撰寫的載入指令碼,Qlik Sense 可從 Dates.xlsx 資料檔案將 628 行載入 Table2

    資料載入進度視窗
    Data load progress window

  5. 在區段 Dates 的指令碼中的新行,複製並貼上 Table2LOAD 陳述式。這將會造成資料載入兩次。命名第二個表格 Table2a
  6. 您也可以刪除現有的指令碼,並複製和貼上下列內容:

    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 索引標籤中的載入指令碼
    Load script in Dates tab.

  7. 按一下載入資料
  8. Qlik Sense 不會載入 Table2 然後 Table2a。而是會辨識 Table2a 的欄位名稱和欄位數目與 Table2 相同。接著會將 Table2a 的資料新增至 Table2,然後刪除表格 Table2a。結果是 Table2 現在有 1,256 行。

    資料載入進度視窗中的串連
     Concatenation in data load progress window.

  9. 開啟資料模型檢視器
  10. 按一下顯示預覽
  11. 只建立了 Table2。選取 Table2。表格有 256 列。

    顯示 Table2 的資料模型檢視器
    Data model viewer showing Table2.

強制串連

即使兩個或多個表格沒有完全相同的一組欄位,還是可以強制 Qlik Sense 串連這兩個表格。這是在指令碼中使用 Concatenate 前置詞來達成,如此會串連一個表格與另一個具名的表格,或是最近建立的表格。

請執行下列動作:

  1. 編輯 Table2aLOAD 陳述式,新增 Concatenate 和註解 Week
  2. 您的指令碼現在應如下所示:

    Table2a: Concatenate LOAD "Date", Month (Date) as "Month", Quarter, // "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    透過註解 Week,我們可確保表格不會完全相同。

  3. 按一下載入資料
  4. 開啟資料模型檢視器
  5. 您現在可以看到沒有建立 Table2a

  6. 按一下資料模型檢視器中的 Table2,然後按一下預覽
  7. 表格有欄位 DateMonthQuarterWeekYear。欄位 Week 仍然顯示,原因是該欄位是從 Table2 載入。

  8. 按一下 Table2 中的 Week。預覽顯示欄位的非 Null 值數目為 628。不過,若您按一下任何其他欄位,您會看見非 Null 值的數目為 1256。Week 僅從 Table2 載入一次。值或記錄的數目是 Table2Table2a 中的記錄數目加總。

防止串連

如果兩個或多個已載入表格的欄位名稱和欄位數目完全相同,Qlik Sense 會自動將不同陳述式的內容串連成一個表格。這可透過 NoConcatenate 陳述式避免。以相關聯的 LOADSELECT 陳述式載入的表格就不會與現有的表格串連。

請執行下列動作:

  1. 若要能夠完全分離兩個表格的內容,請將 NoConcatenate 新增至 Table2a 中的 LOAD 陳述式,並重新命名欄位,讓 Qlik Sense 不會根據相符欄位建立合成鍵。取消註解 Table2 中的 Week,讓兩個表格具有相同欄位。
  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); 

  3. 按一下載入資料
  4. 開啟資料模型檢視器
  5. 您現可看見完全區分了兩個表格。

    顯示 Table2Table 2a 的資料模型檢視器
    Data model viewer showing Table2 and Table 2a.

  6. 由於已完成示範串連,我們將不再需要 Table2a。刪除 Table2aLOAD 陳述式中的所有列,然後按一下載入資料