新增 SQL 轉換 | Qlik Cloud 說明
跳到主要內容 跳至補充內容

新增 SQL 轉換

您可以在轉換任務中包含基於 SQL 的表格。SQL 轉換允許您將 SQL SELECT 查詢輸入到管道中,以定義複雜或簡單的轉換。您可以讓 SQL assistant 使用生成式 AI 從文字提示生成查詢。您還可以使用巨集來調整要執行的查詢,無論是執行初始載入還是增量載入。

如需建立轉換任務的詳細資訊,請參閱 轉換資料

新增 SQL 轉換

若要在 轉換 資料任務中新增 SQL 轉換:

  1. 轉換 中,選取要包含在查詢中的資料集,然後按一下 新增 SQL 轉換

    名稱 中設定轉換的名稱。如需其他設定的詳細資訊,請參閱 設定

    準備好建立 SQL 轉換時,按一下 新增

    系統將會顯示 編輯 SQL 轉換

  2. 在查詢窗格中編寫查詢以傳回基於 SQL 的表格。

    如需詳細資訊,請參閱 編輯 SQL 查詢

  3. 按一下 執行查詢

    這將會獲取中介資料 and 資料預覽。

  4. 檢閱 參數 中的參數。

    如需詳細資訊,請參閱 參數

  5. 中介資料 中設定主索引鍵。

    如需詳細資訊,請參閱 中介資料

  6. 對查詢結果滿意時,按一下 儲存並關閉。資料集現在已新增至目標清單,您可以對其進行預覽。

編輯 SQL 查詢

在查詢窗格中輸入查詢以傳回基於 SQL 的表格。該查詢只能從您選取的來源資料集中讀取,但您可以使用 新增 新增更多來源資料集。

  • 您可以建立陳述式以從 物件 載入資料集。按一下 更多,然後按一下 在編輯器中生成 select 陳述式

  • 您可以按一下 更多,然後按一下 複製,將資料集的名稱複製到剪貼簿。

  • 按一下 > 將資料集或資料行名稱移至編輯器。

  • 按一下 搜尋 在編輯器中搜尋和取代文字。

資訊備註您可以使用 SQL assistant 透過生成式 AI 生成查詢。如需詳細資訊,請參閱 從文字提示產生 SQL 轉換SQL assistantQlik Cloud 政府 中不可用。

如果使用增量載入,您可以使用 巨集 來調整要執行的查詢,無論是執行初始載入還是增量載入。

如需詳細資訊,請參閱 使用巨集調整查詢以適應載入類型

鍵盤快速鍵

資訊備註鍵盤快速鍵是以您在 Windows 中工作為前提進行說明的。對於 macOS,請使用 Command 代替 Ctrl。
  • Ctrl+F 搜尋和取代

  • Ctrl+/ 註解/取消註解目前行

  • Ctrl+Enter 執行查詢

  • Ctrl+Z 復原

  • Ctrl+Y 重做

預覽結果

您可以在 結果 中使用資料樣本來預覽結果。

資訊備註必須在 管理 中的租用戶層級啟用資料預覽。您可以在 設定功能控制 下找到 資料整合 中檢視資料 選項。

您必須獲指派以下角色才能預覽資料:

  • 在連線所在的空間中具有 可檢視資料 權限。

  • 在專案所在的空間中具有 可檢視 權限。

系統將會顯示使用資料樣本的結果。您可以使用 列數 設定樣本中要包含的資料列數。

  • 按一下 上次執行的查詢 以查看上次執行查詢的上次執行時間和持續時間。

篩選結果

您可以按一或多個資料行篩選結果。

  • 按一下要篩選的第一個資料行上的 更多,然後按一下 篩選

    選取要使用的運算子以及要篩選的值。

    您可以按一下 新增篩選器 新增更多資料行篩選器。

篩選器將僅影響現有的樣本資料。

排序結果

您可以按特定資料行對資料樣本進行排序。

  • 按一下要排序的資料行上的 更多,然後按一下 遞增排序遞減排序

排序將僅影響現有的樣本資料。如果您使用篩選器僅包含 2024 年的訂單並反轉排序順序,則樣本資料仍將僅包含 2024 年的訂單。

管理顯示的資料行

您可以選取要在結果中顯示的資料行。儲存轉換時不會儲存該選取。

  • 按一下資料行上的 更多,然後按一下 隱藏資料行 以隱藏資料行。

  • 按一下任何資料行上的 更多,然後按一下 顯示的資料行 以管理所有資料行的顯示。

參數

按一下 參數 以變更 SELECT 查詢中的參數。參數應對應至來源或目標物件。

在以下情況下,參數會自動對應:

  • 物件 中使用 在編輯器中生成 select 陳述式

  • 按一下 > 將資料集或資料行名稱移至編輯器。

  • 參數名稱與 物件 中表格的表格名稱相符。

資訊備註如果您使用任意參數名稱,則必須手動對應參數。只有與資料集名稱相符的參數名稱才會自動對應。

您可以對應至

  • 歷程記錄類型 2 結構 (_history)

  • 目前結構

  • 目標物件

    您只能在增量巨集內定義參數時對應目標物件。

提示備註您可以使用參考取代參數,使查詢更容易閱讀。變更 參數 中的值,SELECT 查詢 中的參考也會隨之變更。

中介資料

您可以在 中介資料 中編輯中介資料設定。

  • 索引鍵 資料行中設定主索引鍵。

    您可以按一下 建議並驗證索引鍵 獲取合適主索引鍵的建議並驗證索引鍵。

  • 可為 Null 資料行中設定資料行是否可為 Null。

  • 選取資料行並按一下 編輯 以設定資料行名稱、索引鍵、可為 Null 和資料類型。

建議和驗證索引鍵

您可以按一下 建議並驗證索引鍵 獲取合適主索引鍵的建議並驗證索引鍵。完整的 SQL 查詢必須至少執行過一次。

  • 如果您已選擇加入跨區域推論,則會使用 GenAI 來建議索引鍵。這允許 Qlik Cloud 將推論請求傳送到您的租用戶區域之外。如需推論處理位置的詳細資訊和最新資訊,請參閱 啟用跨區域推斷

    資訊備註Qlik 不控制產生的輸出。由於 GenAI 的性質,在未經檢閱或編輯的情況下,回應產生的 SQL 可能無法滿足您的需求。根據 Qlik 客戶合約的條款,產生的查詢被視為「內容」。
    Qlik Cloud 政府備註

    GenAI 輔助的索引鍵建議在 Qlik Cloud 政府 中不可用。

    如果未啟用 GenAI,將根據來源資料表資料以程式設計方式建議索引鍵。

  • 驗證將一律在不使用 GenAI 的情況下,透過執行 SQL 查詢來確保沒有重複值或 NULL 值來執行。

    資訊備註驗證僅在查詢已傳回資料時可用。
  • 建議並驗證索引鍵

    這將會檢閱查詢和來源資料表索引鍵,並建議有效的主索引鍵。此作業可能需要一些時間。

  • 驗證索引鍵

    這將會驗證現有的主索引鍵,以確保其唯一且非 NULL。此作業可能需要一些時間。

  • 建議但不驗證

    這將會檢閱查詢和來源資料表索引鍵,並在不進行驗證的情況下建議主索引鍵。在套用索引鍵之前,請手動檢閱並驗證。

執行查詢

您可以在開發期間的任何時間按一下 執行查詢 來執行查詢。首次執行查詢時,將會擷取中介資料。執行查詢後,您可以前往 中介資料 並設定主索引鍵,這是完成轉換所必需的。

資訊備註如果編輯器包含多個查詢,您可以透過選取查詢並按一下 執行查詢 來執行單個查詢。

使用巨集調整查詢以適應載入類型

如果使用增量載入,您可以使用 巨集 來調整要執行的查詢,無論是執行初始載入還是增量載入。

選取巨集並在相應的子句中新增查詢。

  • Q_RUN_INCREMENTAL 新增一個子句,您可以在其中放置僅在執行增量載入時才執行的查詢。

  • Q_RUN_INITIAL_LOAD 新增一個子句,您可以在其中放置僅在執行初始載入時才執行的查詢。

您不需要為每個巨集指定完整的查詢。您可以根據您的使用案例調整或新增程式碼。

使用案例: 使用日期範圍的增量篩選器:

在此使用案例中,需要使用自訂 SQL 轉換一組訂單資料。由於這是一個大型資料集,您希望包含增量篩選,以確保增量載入僅考慮過去 12 小時內的訂單。

這是基本查詢:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

這是增量執行期間要套用的篩選器,其中您僅考慮過去 12 小時內新增的訂單:

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
提示備註實作基於 SQL 的表格時,建議將資料表名稱取代為 ${TABLE} 標記法。這可以防止硬式編碼資料庫和結構描述名稱,這些名稱可能會因環境而異,例如從開發環境移至生產環境時。

這是完整的查詢,使用篩選器巨集並將資料表名稱取代為 ${TABLE} 標記法:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() ) {{/QLIK_FUNC_IF}}

這會產生初始載入查詢:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

以及增量載入查詢:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() )

使用案例: 使用目標中的資料進行增量篩選:

在此使用案例中,需要使用自訂 SQL 轉換一組訂單資料。由於訂單是一個大型資料集,您希望包含增量篩選,以確保增量載入僅考慮比目標資料表中的資料更新的訂單詳細資料記錄。您還希望標記某個資料列是由初始載入還是增量載入處理的。

資訊備註如您在此範例中所見,巨集可用於調整初始載入或增量載入查詢的任何部分。

這是基本查詢:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

這是增量執行期間要套用的篩選器。“ORDERS_DERIVED” 是目標資料集的名稱。

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”.”myTrasformTask”.”ORDERS_DERIVED” )
提示備註增量載入也可以將 ${TABLE} 標記法對應至轉換任務建立的目標物件。

這是完整的查詢,使用篩選器巨集,並將資料表名稱取代為 ${TABLE} 標記法。如果載入是初始載入,則 LOADED_BY 設定為 INIT,如果載入是增量載入,則設定為 INCR

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, {{#QLIK_FUNC_IF Q_RUN_INITIAL_LOAD}} ‘INIT’ as LOADED_BY {{/QLIK_FUNC_IF}} {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} ‘INCR’ as LOADED_BY {{/QLIK_FUNC_IF}} FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} ) {{/QLIK_FUNC_IF}}

這會產生初始載入查詢:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INIT’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

以及增量載入查詢:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INCR’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} )

設定

按一下 設定 以編輯 SQL 轉換的設定。

  • 名稱中輸入目標資料集的名稱。

    您也可以在說明中新增較長的說明。

  • 具體化中,選取是否應具體化轉換的輸出。您可以選擇繼承資料任務設定中的設定。

    • 開啟將會建立表格,並且將會處理相關的 ELT 處理。

    • 關閉將會建立即時執行轉換的檢視。

  • 歷史資料儲存 (類型 2) 中,選擇是否要保留歷史資料。您可以選擇繼承資料任務設定中的設定。此設定要求具體化處於啟用狀態。

  • 增量載入可讓您套用篩選條件或其他條件,以減少使用巨集處理的資料集,藉此調整對於增量資料載入的查詢。只有在資料具體化為表格時,才能使用增量載入

    • 增量載入開啟

      首次執行任務將會執行初始載入,將所有查詢結果插入目標表格中。後續執行將會執行增量載入,運用您為增量處理定義的篩選條件或特定條件。在增量載入期間,任務只會以更新或插入方式處理資料,不會管理刪除。

    • 增量載入關閉

      首次執行任務將會執行初始載入,將所有查詢結果插入目標表格中。後續執行將會與目標表格比較,並處理新的、已變更或已刪除的記錄,以處理所有查詢結果。

    資訊備註若查詢將會選取應存在於目標中的所有記錄,請將增量載入設定為關閉。將會在目標中刪除未選取的記錄。
  • 最佳做法

    • 新增 SQL 轉換時,不會自動定義主索引鍵。在 資料集 索引標籤中將索引鍵新增至資料集。

    • 請勿手動在轉換後的輸出中建立資料行標頭。

    • 避免使用帶有 * 的 SELECT,因為這可能會在每次執行查詢時傳回不同的資料行。如果結構描述發生變更,請相應地變更查詢並再次執行 描述資料表。然後您可以編輯資料行並調整資料表。

    此頁面是否對您有幫助?

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