Qlik 指令碼處理器
使用 Qlik 指令碼建立或轉換輸入。
Qlik 指令碼處理器可用於直接在文字編輯器中輸入 Qlik 指令碼來準備資料,或在用作輸入時載入資料。針對更進階的使用者,如果您喜歡在操作表格時手動編碼某些運算,則可以從整個 Qlik 語法中受益。
使用
-
要在資料流程中使用指令碼處理器,您在編輯器中新增的程式碼必須與傳入資料的架構以及到目前為止已執行的準備動作一致。此外,指令碼需要遵循一定的規則:
-
指令碼必須包含 resident 陳述式才能使用來自輸入流程的表格。
resident tablename
如需更多資訊,請參閱載入。
-
您需要包含一個 NoConcatenate 陳述式。
NoConcatenate LOAD A,B
如需詳細資訊,請參閱 NoConcatenate。
-
新增要執行的特定運算的指令碼後,必須在末尾包含 drop table 陳述式以刪除傳入表格並僅保留產生的輸出。
drop table tablename
如需詳細資訊,請參閱 Drop table。
- 當使用處理器作為輸入節點時,最多可以有兩個輸出流程,以載入兩個不同的表格。
- 當使用處理器作為中間節點時,可以有多個輸入流程和最多兩個輸出流程。
屬性
屬性 | 設定 |
---|---|
指令碼 |
在文字編輯器中輸入您的 Qlik 指令碼,其中包含下列預留位置以及所需的陳述式。
輸入表格的名稱列示在指令碼編輯器上方。 這些名稱對應於連線到處理器的輸入。 |
若要重新命名處理器或編輯其描述,請按一下屬性面板中處理器名稱旁的 編輯圖示。
範例
-
將具有相同架構的多個表格載入到流程的一個輸入中。此範例使用目錄中的兩個 .txt 檔案,具有四個相同的欄位,但內容不同:
[MyTable_1]: NOCONCATENATE LOAD [id], [firstname], [lastname], [nationality] FROM [lib://DataFiles/MyTable_1.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq); //[MyTable_2]: CONCATENATE([MyTable_1]) LOAD [id], [firstname], [lastname], [nationality] FROM [lib://DataFiles/MyTable_2.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq); [Union1]: NOCONCATENATE LOAD DISTINCT [id], [firstname], [lastname], [nationality] RESIDENT [MyTable_1];
或者,您可以執行相同的操作,但這次新增一個欄位,以追蹤哪些資料來自哪個格,並產生一個整數作為 ID 號碼:
[MyTable_1]: NOCONCATENATE LOAD 'table1' as source_table, [firstname], [lastname], [nationality] FROM [lib://DataFiles/MyTable_1.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq); [MyTable_2]: CONCATENATE (MyTable_1) LOAD 'table2' as source_table, [firstname], [lastname], [nationality] FROM [lib://DataFiles/MyTable_2.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq); [NewTable]: LOAD recno() as id, * RESIDENT MyTable_1; drop table MyTable_1;
如需詳細資訊,請參閱串連。
-
建立一個包含可編輯資料的內嵌表格作為流程的輸入:
MyTable: Load * Inline [ Country, Year, Sales Argentina, 2014, 66295.03 Argentina, 2015, 140037.89 Austria, 2014, 54166.09 Austria, 205,182739.87 ];
如需詳細資訊,請參閱使用內嵌載入來載入資料。
-
向資料新增新欄位:
MyTable: NoConcatenate Load *, 1 as newfield Resident [name of input table]; Drop Table [name of input table];