在資料載入指令碼中使用跨維度資料表
跨維度資料表是一種常見的表格類型,包含兩個標頭資料正交清單之間的值矩陣。如果您想要將資料關聯至其他表格,這通常並非最佳的資料格式。
本主題說明了您如何能夠取消樞紐跨維度資料表,即使用 crosstable 前置詞 (對資料載入指令碼中的 LOAD 陳述式) 將其部分轉置為列。
使用一個限定資料行取消樞紐跨維度資料表
一個跨維度資料表前面通常會有多個限定資料行,應該以直接的方式讀取這些資料行。在此情況中有一個限定資料行 Year,以及每個月的銷售資料矩陣。
Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|
2008 | 45 | 65 | 78 | 12 | 78 | 22 |
2009 | 11 | 23 | 22 | 22 | 45 | 85 |
2010 | 65 | 56 | 22 | 79 | 12 | 56 |
2011 | 45 | 24 | 32 | 78 | 55 | 15 |
2012 | 45 | 56 | 35 | 78 | 68 | 82 |
如果此表格只是載入 Qlik Sense,結果會是一個欄位用於 Year,然後每個月份各一個欄位。這通常不是您想要的。您大概會偏好只產生三個欄位:
- 此情況中的限定資料行 Year 在上述表格中以綠色標記。
- 此情況中以月份名稱 Jan - Jun 表示的屬性欄位,以黃色標記。此欄位可適當命名為 Month。
- 資料矩陣值以藍色標記。在此情況中它們代表銷售資料,因此可適當命名為 Sales。
例如,在 LOAD 或 SELECT 陳述式前面加上 crosstable 前置詞即可達到這個目的:
crosstable (Month, Sales) LOAD * from ex1.xlsx;
這樣會在 Qlik Sense 中建立下列表格:
Year | Month | Sales |
---|---|---|
2008 | 一月 | 45 |
2008 | 二月 | 65 |
2008 | 三月 | 78 |
2008 | 四月 | 12 |
2008 | 五月 | 78 |
2008 | 六月 | 22 |
2009 | 一月 | 11 |
2009 | 二月 | 23 |
... | ... | ... |
使用兩個限定資料行取消樞紐跨維度資料表
在此情況中,左邊有兩個限定資料行,後面接著矩陣資料行。
Salesman | Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|---|
A | 2008 | 45 | 65 | 78 | 12 | 78 | 22 |
A | 2009 | 11 | 23 | 22 | 22 | 45 | 85 |
A | 2010 | 65 | 56 | 22 | 79 | 12 | 56 |
A | 2011 | 45 | 24 | 32 | 78 | 55 | 15 |
A | 2012 | 45 | 56 | 35 | 78 | 68 | 82 |
B | 2008 | 57 | 77 | 90 | 24 | 90 | 34 |
B | 2009 | 23 | 35 | 34 | 34 | 57 | 97 |
B | 2010 | 77 | 68 | 34 | 91 | 24 | 68 |
B | 2011 | 57 | 36 | 44 | 90 | 67 | 27 |
B | 2012 | 57 | 68 | 47 | 90 | 80 | 94 |
限定資料行的數目可在 crosstable 前置詞中指定為第三個參數,如下所示:
crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;
這樣會在 Qlik Sense 中建立下列結果:
銷售員 | Year | Month | Sales |
---|---|---|---|
A | 2008 | 一月 | 45 |
A | 2008 | 二月 | 65 |
A | 2008 | 三月 | 78 |
A | 2008 | 四月 | 12 |
A | 2008 | 五月 | 78 |
A | 2008 | 六月 | 22 |
A | 2009 | 一月 | 11 |
A | 2009 | 二月 | 23 |
... | ... | ... | ... |