Qlik 指令碼處理器
使用 Qlik 指令碼建立或轉換輸入。
Qlik 指令碼處理器可讓您直接在文字編輯器中輸入 Qlik 指令碼以準備資料,或在作為輸入使用時載入資料。針對較進階的使用者,如果您偏好在操作表格時手動編寫特定作業的程式碼,您可以從整個 Qlik 語法中獲益。
使用方式
-
為了在資料流程中使用指令碼處理器,您在編輯器中新增的程式碼必須與傳入資料的結構描述,以及到目前為止已執行的準備動作保持一致。此外,指令碼需要遵循特定規則:
-
指令碼必須包含 resident 陳述式,才能使用來自輸入流程的表格。
resident tablename如需詳細資訊,請參閱 Load。
-
您需要包含 NoConcatenate 陳述式。
NoConcatenate LOAD A,B如需詳細資訊,請參閱 NoConcatenate。
-
在為您想要執行的特定作業新增指令碼之後,您必須在結尾包含 drop table 陳述式,以捨棄傳入的表格並僅保留產生的輸出。
drop table tablename如需詳細資訊,請參閱 Drop table。
- 將處理器作為輸入節點使用時,您最多可以有兩個輸出流程,以載入兩個不同的表格。
- 將處理器作為中介節點使用時,您可以有多個輸入流程和最多兩個輸出流程。
- 您在一個資料流程中最多可以使用 50 個 Qlik 指令碼處理器。
屬性
| 屬性 | 組態 |
|---|---|
| 指令碼 |
在文字編輯器中輸入您的 Qlik 指令碼,其中包含具有必要陳述式的下列預留位置。 您的輸入表格名稱會列在指令碼編輯器上方。它們對應於連接到處理器的輸入。按一下表格名稱以將其直接插入指令碼中。 |
若要重新命名處理器或編輯其說明,請將滑鼠游標停留在 屬性 面板中要變更的名稱或說明上,然後按一下 編輯 圖示。
使用精簡檢視
在右側面板中,您可以對處理器執行快速更新,而無需開啟完整的編輯器。您可以:
-
直接在指令碼中輸入文字。
-
透過在輸入表格下按一下輸入表格,將其新增至指令碼。
如需更多選項和進階功能,請開啟指令碼編輯器。請參閱 使用指令碼編輯器。
使用指令碼編輯器
按一下組態面板中的 開啟編輯器 按鈕會開啟強大的指令碼編輯器,以協助您撰寫 Qlik 指令碼。輕鬆插入表格、欄位名稱或函數、開啟文件、插入指令碼,並檢查指令碼的有效性。
在左側面板中,您可以檢視目前載入至資料流程中的表格和欄位,並瀏覽各種 Qlik 指令碼函數。此面板分為三個索引標籤:
-
表格,其中列出流程中載入的表格。將滑鼠游標停留在任何表格名稱上,然後按一下 + 以將其直接插入指令碼中。
-
欄位,其中列出流程中此時可用的欄位。將滑鼠游標停留在任何欄位名稱上,然後按一下 + 以將其直接插入運算式中。
-
函數,您可以在其中瀏覽 Qlik 函數。您可以使用搜尋欄位來尋找特定函數,或使用 函數類別 下拉式清單來篩選它們。
將滑鼠游標停留在任何函數上,然後按一下 + 以將其直接插入運算式中。
-
如果您選取 解說指南 切換開關,按一下函數時將會顯示簡短說明和文件連結。
-
在頂部面板中,您可以啟用或停用三個工具,以在撰寫指令碼時協助和引導您,使用捷徑從其他檔案插入指令碼,以及使用復原和重做按鈕來修正潛在的錯誤。
-
搜尋和取代,以自動尋找特定值並在需要時取代它們。
-
說明模式,將您在指令碼中撰寫的任何函數轉換為可點擊的連結,這些連結會將您帶往文件。
-
自動完成,在您輸入時顯示建議,並附有函數的簡短說明和範例。
-
包含指令碼,以插入指令碼。請參閱 將其他指令碼插入載入指令碼。
底部面板會說明指令碼的任何潛在錯誤,例如不正確的欄位名稱或無效的運算式。
當狀態面板顯示綠色的 確定 時,表示您的指令碼有效。按一下 確認 以將此指令碼用於您的 Qlik 指令碼處理器,並返回資料流程編輯器。然後您可以驗證處理器組態。
範例
-
將具有相同結構描述的多個表格載入為流程的一個輸入。此範例使用目錄中的兩個 .txt 檔案,具有相同的欄位,但內容不同。此外,此運算式將新增一個欄位以追蹤哪些資料來自哪個表格,並產生一個整數作為 ID 號碼:
[MyTable_1]: 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;如需詳細資訊,請參閱 Concatenate。
-
建立具有可編輯資料的內嵌表格作為流程的輸入:
MyTable: Load * Inline [ Country, Year, Sales Argentina, 2014, 66295.03 Argentina, 2015, 140037.89 Austria, 2014, 54166.09 Austria, 205,182739.87 ];如需詳細資訊,請參閱 使用內嵌載入來載入資料。
-
從資料夾載入所有檔案作為流程的輸入。此範例會逐一查看資料夾中具有指定延伸的所有檔案,並將它們載入到單一表格中。將資料連線名稱和資料夾路徑取代為您自己的值,並視需要調整檔案延伸和格式設定:
SET vFolderPath = 'lib://YourDataConnection/FolderName'; FOR EACH vFile IN filelist('$(vFolderPath)/*.csv') LOAD * FROM [$(vFile)] (txt, utf8, embedded labels, delimiter is ','); NEXT如需詳細資訊,請參閱 For each..next。