跳到主要內容 跳至補充內容

Qlik 指令碼處理器

使用 Qlik 指令碼建立或轉換輸入。

Qlik 指令碼處理器可用於直接在文字編輯器中輸入 Qlik 指令碼來準備資料,或在用作輸入時載入資料。針對更進階的使用者,如果您喜歡在操作表格時手動編碼某些運算,則可以從整個 Qlik 語法中受益。

使用

  • 要在資料流程中使用指令碼處理器,您在編輯器中新增的程式碼必須與傳入資料的架構以及到目前為止已執行的準備動作一致。此外,指令碼需要遵循一定的規則:

    • 指令碼必須包含 resident 陳述式才能使用來自輸入流程的表格。

      resident tablename

      如需更多資訊,請參閱載入

    • 您需要包含一個 NoConcatenate 陳述式。

      NoConcatenate LOAD A,B

      如需詳細資訊,請參閱 NoConcatenate

    • 新增要執行的特定運算的指令碼後,必須在末尾包含 drop table 陳述式以刪除傳入表格並僅保留產生的輸出。

      drop table  tablename

      如需詳細資訊,請參閱 Drop table

  • 當使用處理器作為輸入節點時,最多可以有兩個輸出流程,以載入兩個不同的表格。
  • 當使用處理器作為中間節點時,可以有多個輸入流程和最多兩個輸出流程。
  • 您可以在資料流程中使用最多 50 個 Qlik 指令碼處理器。
警告備註為了避免資料流程出現錯誤,請確保指令碼處理器產生的表格名稱是唯一名稱,並且與流程中其他處理器產生的表格不同。

屬性

設定
屬性 設定
指令碼

在文字編輯器中輸入您的 Qlik 指令碼,其中包含下列預留位置以及所需的陳述式。

MyTable:
NoConcatenate Load *
Resident [name of input table];
Drop Table [name of input table];

輸入表格的名稱列示在指令碼編輯器上方。 這些名稱對應於連線到處理器的輸入。按一下表格名稱以直接插入指令碼中。

若要重新命名處理器或編輯其描述,請將滑鼠移動到名稱或描述上方,以在屬性面板中變更,並按一下 編輯 編輯圖示。

使用指令碼編輯器

按一下設定面板中的開啟編輯器按鈕,就會開啟強大的指令碼編輯器,以協助您撰寫 Qlik 指令碼。輕鬆插入表格、欄位名稱或函數、開啟文件、從其他 .qvf 檔案插入指令碼,並檢查運算式的有效性。

使用指令碼編輯器撰寫 Qlik 指令碼

在左側面板中,您可以檢視資料流程中目前載入的表格和欄位,並瀏覽各種 Qlik 指令碼函數。此面板分為三個索引標籤:

  • 表格,其中列出流程中載入的表格。將滑鼠指向任意表格名稱並按一下 +,直接將其插入指令碼中。

  • 欄位,其中列出了此流程點可用的欄位。將滑鼠指向任意欄位名稱並按一下 +,直接將其插入運算式中。

  • 函數,您可以在其中瀏覽 Qlik 函數。您可以使用搜尋欄位尋找特定函數,或使用函數類別下拉式清單進行篩選。

    將滑鼠指向任意函數並按一下 +,直接將其插入運算式中。

  • 如果您選取解釋工具指南切換,按一下某個函數時,將顯示簡短的描述和文件連結。

在頂端面板中,您可以啟用或停用三個工具,以協助和引導您撰寫指令碼,使用捷徑從其他檔案插入指令碼,以及復原和重做按鈕,用來修正潛在的錯誤。

  • 搜尋和取代,用來自動尋找特定值並在需要時取代。

    運算式編輯器的搜尋和取代功能

  • 說明模式,用來將您在指令碼中撰寫的任何函數轉換為可點選的連結,帶您前往文件。

    在指令碼編輯器中啟用說明模式

  • 自動完成,用來在您輸入時顯示建議,並附有簡短的描述和函數範例。

    使用自動完成撰寫指令碼函數

  • 包含指令碼,以開啟您的目錄並瀏覽可作為 .qvf 檔案使用的指令碼,然後再插入它們。

    從 qvf 檔案插入指令碼

底部面板描述了指令碼的任何潛在錯誤,例如不正確的欄位名稱或無效的運算式。

驗證工具顯示指令碼錯誤

若狀態面板顯示綠色的確定,表示您的運算式有效。按一下確認,以便在您的 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;

    如需詳細資訊,請參閱串連

  • 建立一個包含可編輯資料的內嵌表格作為流程的輸入:

    MyTable:
    Load * Inline [
    Country, Year, Sales
    Argentina, 2014, 66295.03
    Argentina, 2015, 140037.89
    Austria, 2014, 54166.09
    Austria, 205,182739.87
    ];
    

    如需詳細資訊,請參閱使用內嵌載入來載入資料

  • 如需指令碼運算式的更多範例,請參閱一般陳述式指令碼和圖表函數

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們!