跳到主要內容
使用 Crosstable 前置詞

在此頁面

使用 Crosstable 前置詞

跨維度資料表是一種常見的表格類型,在兩個標頭資料的正交清單之間具有值矩陣。每當擁有資料的跨維度資料表時,您都可以使用 Crosstable 前置詞轉換資料,並建立所需的欄位。

Crosstable 前置詞

在下面的 Product 表格中,每個月有一個資料行,每個產品有一列。

產品表格
產品 Jan 2014 Feb 2014 Mar 2014 Apr 2014 May 2014 Jun 2014
A 100 98 100 83 103 82
B 284 279 297 305 294 292
C 50 53 50 54 49 51

載入表格時,在輸出的表格中,一個欄位用於 Product,然後每個月份各一個欄位。

Product 表格含有 Product 欄位,每個月份各一個欄位
Product table with Product field, and one field each for the months.

如果您想要分析此資料,最好將所有數字放到一個欄位,所有月份放到另一個欄位。在此情況下,在擁有三個資料行的表格中,每個類別 (Product, Month, Sales) 都有一個欄位。

Product 表格含有 ProductMonthSales 欄位
Product table with Product, Month, and Sales fields.

Crosstable 前置詞將資料轉換為表格,一個資料行表示 Month,另一個表示 Sales。另一種表達方式為它採用了欄位名稱並將其轉換為欄位值。

請執行下列動作:

  1. 建立新的應用程式並稱之為進階指令碼教學課程
  2. 資料載入編輯器中新增新的指令碼區段。
  3. 命名區段 Product
  4. 在右側功能表的 DataFiles 之下,按一下選取資料

  5. 上傳然後選取 Product.xlsx
  6. 從以下項目選取資料視窗中選取 Product 表格。
  7. 提示備註欄位名稱下,確保已選取內嵌欄位名稱,以便載入資料時包含表格欄位的名稱。
  8. 按一下插入指令碼
  9. 您的指令碼應如下所示:

    LOAD Product, "Jan 2014", "Feb 2014", "Mar 2014", "Apr 2014", "May 2014", "Jun 2014" FROM [lib://DataFiles/Product.xlsx] (ooxml, embedded labels, table is Product);

  10. 按一下載入資料
  11. 開啟資料模型檢視器。資料模型應如下所示:
  12. Product 表格含有 Product 欄位,每個月份各一個欄位
    Product table with Product field, and one field each for the months.

  13. 資料載入編輯器中,按一下 Product 索引標籤。
  14. LOAD 陳述式之上輸入下列內容:
  15. CrossTable(Month, Sales)

  16. 按一下載入資料
  17. 開啟資料模型檢視器。資料模型應如下所示:
  18. Product 表格含有 ProductMonthSales 欄位
    Product table with Product, Month, and Sales fields.

    請注意,輸入資料通常只有一個作為限定詞欄位的資料行;作為內部索引鍵 (在上方範例中為 Product)。但是您可以擁有多個。如果是這種情況,所有符合條件的欄位必須在 LOAD 陳述式屬性欄位前面列出,並且 Crosstable 前置詞的第三個參數必須用於定義符合條件欄位的數量。您不能在 Crosstable 關鍵字前面放置前置 LOAD 或前置詞。不過,您可以使用自動串連。

    Qlik Sense 的表格中,資料呈現如下:

    表格中顯示使用 Crosstable 前置詞載入的資料
    Table showing data loaded using Crosstable prefix.

    例如,您現在可以使用資料建立橫條圖:

    橫條圖中顯示使用 Crosstable 前置詞載入的資料
    Bar chart showing data loaded using the Crosstable prefix.

資訊備註若要進一步瞭解 Crosstable,請在 Qlik Community 中參閱此篇部落格貼文:Crosstable 載入。 行為會在 QlikView 的上下文中討論。不過,邏輯同樣適用於 Qlik Sense

數值解譯無法用於屬性欄位。也就是說,如果您的資料行標頭是月份,系統不會自動解譯。解決方法是使用 Crosstable 前置詞建立一個臨時表格,並執行第二次通過來解譯,如以下範例所示。

請注意,這只是範例。在 Qlik Sense 中沒有要完成的附帶活動。

tmpData: Crosstable (MonthText, Sales) LOAD Product, [Jan 2014], [Feb 2014], [Mar 2014], [Apr 2014], [May 2014], [Jun 2014] FROM ... Final: LOAD Product, Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month, Sales Resident tmpData; Drop Table tmpData;

清除記憶體快取

您可以刪除您建立的表格,以清除記憶體快取。當您如之前章節所述載入臨時項目時,您應在不再需要該表格時將其捨棄。例如︰

DROP TABLE Table1, Table2, Table3, Table4; DROP TABLES Table1, Table2, Table3, Table4;

您也可以拖放欄位。例如︰

DROP FIELD Field1, Field2, Field3, Field4; DROP FIELDS Field1, Field2, Field3, Field4; DROP FIELD Field1 from Table1; DROP FIELDS Field1 from Table1;

如您所見,關鍵字 TABLEFIELD 可以是單數或複數。