# 使用 Crosstable 前置詞

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

## Crosstable 前置詞

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

產品表格

| 產品 | 2014 年 1 月 | 2014 年 2 月 | 2014 年 3 月 | 2014 年 4 月 | 2014 年 5 月 | 2014 年 6 月 |
| --- | --- | --- | --- | --- | --- | --- |
| 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 表格含有 Product 欄位，每個月份各一個欄位

ProductProduct 表格含有 ProductProduct 欄位，每個月份各一個欄位 ![產品表格含有產品欄位，每個月份各一個欄位。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-before.png)

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

Product 表格含有 Product、Month 和 Sales 欄位

Product 表格含有 Product、Month 和 Sales 欄位

ProductProduct 表格含有 ProductProduct、MonthMonth 和 SalesSales 欄位 ![產品表格含有產品、月份和銷售欄位。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-after.png)

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

請執行下列動作：

1. 建立新的應用程式並稱之為進階指令碼教學課程。

2. 在資料載入編輯器中新增新的指令碼區段。

3. 命名區段 Product。

4. 在右側功能表的 DataFiles 之下，按一下選取資料。

5. 上傳然後選取 Product.xlsx。

6. 在從以下項目選取資料視窗中選取 Product 表格。

   提示備註在欄位名稱下，確保已選取內嵌欄位名稱，以便載入資料時包含表格欄位的名稱。

7. 按一下 新增。

   您的指令碼應如下所示：

   ```
   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);	
   ```

8. 按一下載入資料。

9. 開啟資料模型檢視器。資料模型應如下所示：

   Product 表格含有 Product 欄位，每個月份各一個欄位

   Product 表格含有 Product 欄位，每個月份各一個欄位

   ProductProduct 表格含有 ProductProduct 欄位，每個月份各一個欄位 ![產品表格含有產品欄位，每個月份各一個欄位。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-before.png)

10. 在資料載入編輯器中，按一下 Product 索引標籤。

11. 在 LOAD 陳述式之上輸入下列內容：

    ```
    CrossTable(Month, Sales)
    ```

12. 按一下載入資料。

13. 開啟資料模型檢視器。資料模型應如下所示：

    Product 表格含有 Product、Month 和 Sales 欄位

    Product 表格含有 Product、Month 和 Sales 欄位

    ProductProduct 表格含有 ProductProduct、MonthMonth 和 SalesSales 欄位 ![產品表格含有產品、月份和銷售欄位。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-data-model-after.png)

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

    在 Qlik Sense 的表格中，資料呈現如下：

    表格中顯示使用 Crosstable 前置詞載入的資料

    表格中顯示使用 Crosstable 前置詞載入的資料

    表格中顯示使用 CrosstableCrosstable 前置詞載入的資料![表格中顯示使用 Crosstable 前置詞載入的資料。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-sense-table.png)

    例如，您現在可以使用資料建立條形圖：

    條形圖中顯示使用 Crosstable 前置詞載入的資料

    條形圖中顯示使用 Crosstable 前置詞載入的資料

    條形圖中顯示使用 CrosstableCrosstable 前置詞載入的資料![條形圖中顯示使用 Crosstable 前置詞載入的資料。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-crosstable-sense-chart.png)

資訊備註若要進一步瞭解 Crosstable，請在 Qlik Community 中參閱此篇部落格貼文：[Crosstable 載入](https://community.qlik.com/t5/Qlik-Design-Blog/The-Crosstable-Load/ba-p/1468083)。 行為會在 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;

如您所見，關鍵字 TABLE 和 FIELD 可以是單數或複數。