NoConcatenate
NoConcatenate 前置詞會強制將具有相同欄位集的兩個載入表格在自動串連時視為兩個個別的內部表格。
語法:
NoConcatenate( loadstatement | selectstatement )
根據預設,若表格載入後包含相同數量的欄位,將欄位名稱對應稍早載入到指令碼中的表格時,Qlik Sense 即會自動串連這兩個表格。即使第二個表格的名稱不同,還是會發生此情況。
但是,若指令碼前置詞 NoConcatenate 在 LOAD 陳述式前納入,或是選取第二個表格的陳述式,即會分開載入這兩個表格。
NoConcatenate 的一般使用案例即是當您必須建立臨時的表格副本,才能針對該副本執行一些臨時轉換,同時保留原始資料的副本。NoConcatenate 確保您可以在不隱含新增回來源表格的情況下,製作該副本。
區域設定
除非另有說明,否則此主題中的範例皆使用下列日期格式:MM/DD/YYYY。日期格式是在資料載入指令碼的 SET DateFormat 陳述式中指定。由於地區設定和其他因素,您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式,以滿足您的需求。或者,您可以在載入指令碼中變更格式,以符合這些範例。
應用程式中的預設地區設定是根據安裝 Qlik Sense 之電腦或伺服器的地區系統設定。若您存取的 Qlik Sense 伺服器設定為瑞典,資料載入編輯器將會對日期、時間和貨幣使用瑞典文地區設定。這些地區格式設定與 Qlik Sense 使用者介面中顯示的語言無關。Qlik Sense 顯示的語言將與您正在使用的瀏覽器相同。
範例 | 結果 |
---|---|
Source: LOAD A,B from file1.csv; CopyOfSource: NoConcatenate LOAD A,B resident Source; |
已載入將 A 和 B 作為量值的表格。第二個具有相同欄位的表格係使用 NoConcatenate 變數分開載入。 |
範例 1 – 隱含串連
概覽
在此範例中,您會以連續順序新增兩個載入指令碼。
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
-
傳送至名為 Transactions 之表格中具有日期和金額的初始資料集。
第一個載入指令碼
Transactions:
LOAD
*
Inline [
id, date, amount
1, 08/30/2018, 23.56
2, 09/07/2018, 556.31
3, 09/16/2018, 5.75
4, 09/22/2018, 125.00
5, 09/22/2018, 484.21
6, 09/22/2018, 59.18
7, 09/23/2018, 177.42
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
-
id
-
date
-
amount
id | 日期 | 金額 |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
第二個載入指令碼
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
-
具有相同欄位的第二個資料集傳送至名為 Sales 的表格中。
Sales:
LOAD
*
Inline [
id, date, amount
8, 10/01/2018, 164.27
9, 10/03/2018, 384.00
10, 10/06/2018, 25.82
11, 10/09/2018, 312.00
12, 10/15/2018, 4.56
13, 10/16/2018, 90.24
14, 10/18/2018, 19.32
];
結果
載入資料並前往表格。
id | 日期 | 金額 |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
8 | 10/01/2018 | 164.27 |
9 | 10/03/2018 | 384.00 |
10 | 10/06/2018 | 25.82 |
11 | 10/09/2018 | 312.00 |
12 | 10/15/2018 | 4.56 |
13 | 10/16/2018 | 90.24 |
14 | 10/18/2018 | 19.32 |
指令碼執行時,因為兩個資料集共用相同數量的欄位且欄位名稱相同,所以 Sales 表格會隱含串連至現有的 Transactions 表格上。雖然第二個表格名稱標記嘗試命名結果集 ‘Sales’,還是會發生此情況。
您可以透過觀察資料載入進度記錄,發現銷售資料集隱含串連。
範例 2 – 使用案例情境
概覽
在此案例情境,您有:
-
具有以下項目的交易資料集:
-
id
-
日期
-
金額(單位為 GBP)
-
-
具有以下項目的貨幣表格:
-
USD 至 GBP 的轉換匯率
-
-
具有以下項目的第二個交易資料集:
-
id
-
日期
-
金額(單位為 USD)
-
您會以連續順序載入五個指令碼。
-
第一個載入指令碼包含具有日期和 GBP 金額的初始資料集,其傳送至名為 Transactions 的表格中。
-
第二個載入指令碼包含:
-
第二個具有日期和 USD 金額的資料集,其傳送至名為 Transactions_in_USD 的表格中。
-
noconcatenate 前置詞放置在 Transactions_in_USD 資料集的 LOAD 陳述式前,以預防隱含串連的情況。
-
-
第三個載入指令碼包含用於建立 Transactions_in_USD 表格中 GBP 和 USD 之間貨幣匯率的 join 前置詞。
-
第四個載入指令碼包含將 Transactions_in_USD 新增至初始 Transactions 表格的 concatenate 前置詞。
-
第五個載入指令碼包含將其資料串連至 Transactions 表格之 Transactions_in_USD 表格移除的 drop table 陳述式。
第一個載入指令碼
Transactions:
Load * Inline [
id, date, amount
1, 12/30/2018, 23.56
2, 12/07/2018, 556.31
3, 12/16/2018, 5.75
4, 12/22/2018, 125.00
5, 12/22/2018, 484.21
6, 12/22/2018, 59.18
7, 12/23/2018, 177.42
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
- id
- date
- amount
id | 日期 | 金額 |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
表格顯示具有 GBP 金額的初始資料集。
第二個載入指令碼
Transactions_in_USD:
NoConcatenate
Load * Inline [
id, date, amount
8, 01/01/2019, 164.27
9, 01/03/2019, 384.00
10, 01/06/2019, 25.82
11, 01/09/2019, 312.00
12, 01/15/2019, 4.56
13, 01/16/2019, 90.24
14, 01/18/2019, 19.32
];
結果
載入資料並前往表格。
id | 日期 | 金額 |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 19.32 |
您會看到 Transactions_in_USD 表格的第二個資料集已新增。
第三個載入指令碼
此載入指令碼將 USD 至 GBP 的貨幣匯率聯結至 Transactions_in_USD 表格。
Join (Transactions_in_USD)
Load * Inline [
rate
0.7
];
結果
載入資料並前往資料模型檢視器。選取 Transactions_in_USD 表格,然後您會看到每筆現有記錄都有 0.7 的「匯率」欄位值。
第四個載入指令碼
使用 Resident 載入時,此載入指令碼即會在金額轉換至 USD 後將 Transactions_in_USD 表格串連至 Transactions 表格。
Concatenate (Transactions)
LOAD
id,
date,
amount * rate as amount
Resident Transactions_in_USD;
結果
載入資料並前往表格。您會看到第八至第十四行中 GBP 金額的新項目。
id | 日期 | 金額 |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 268.80 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 18.074 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 218.40 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 3.192 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 63.168 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 13.524 |
14 | 01/18/2019 | 19.32 |
第五個載入指令碼
此載入指令碼會捨棄第四個載入指令碼結果表格中的複製項目,只留下金額為 GBP 的項目。
drop tables Transactions_in_USD;
結果
載入資料並前往表格。
id | 日期 | 金額 |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
9 | 01/03/2019 | 268.80 |
10 | 01/06/2019 | 18.074 |
11 | 01/09/2019 | 218.40 |
12 | 01/15/2019 | 3.192 |
13 | 01/16/2019 | 63.168 |
14 | 01/18/2019 | 13.524 |
載入第五個載入指令碼後,結果表格會顯示存在兩個交易資料集中完整的十四筆交易;但是,交易 8 至 14 會將其金額轉換為 GBP。
如果我們移除用於第二個載入指令碼中 Transactions_in_USD 前的 NoConcatenate 前置詞,指令碼將會失敗並出現錯誤:「找不到表格 'Transactions_in_USD'」。這是因為 Transactions_in_USD 表格已自動串連至原始的 Transactions 表格上。