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

新增 SQL 轉換

您可以在轉換任務中納入基於 SQL 的表格。SQL 轉換可讓您在管道中輸入 SQL SELECT 查詢,以定義複雜或簡單轉換。您也可以讓 SQL 助理使用生成式 AI 根據文字提示產生查詢。若執行初始載入或增量載入,您也可以使用巨集以調整要執行的查詢。

如需更多關於建立轉換任務的資訊,請參閱 轉換資料

新增 SQL 轉換

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

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

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

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

    就會顯示編輯 SQL 轉換

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

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

  3. 按一下 執行查詢

    這將會擷取中繼資料以及資料預覽。

  4. 檢閱參數中的參數。

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

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

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

  6. 若您滿意查詢結果,按一下儲存並關閉。資料集即已新增至目標清單,您可預覽。

編輯 SQL 查詢

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

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

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

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

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

資訊備註您可以使用 SQL 助理以使用生成式 AI 產生查詢。如需詳細資訊,請參閱從文字提示產生 SQL 轉換SQL 助理無法用於 Qlik Cloud 政府

若使用增量載入,則執行初始載入或增量載入時,您可以使用巨集以調整要執行的查詢。

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

鍵盤快速鍵

資訊備註鍵盤快速鍵的表示方式為假設您在 Windows 中工作。若使用 macOS,請使用 Command 替代 Ctrl。
  • Ctrl+F 搜尋及取代

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

  • Ctrl+Enter 執行查詢

  • Ctrl+Z 復原

  • Ctrl+Y 重做

預覽結果

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

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

必須向您指派下列角色,您才能預覽資料:

  • 連線所在空間中的可以檢視資料

  • 專案所在空間中的可以檢視

就會顯示使用資料樣本的結果。您可以透過列數設定要在樣本中納入多少資料列。

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

篩選結果

您可以依據一或多個欄位篩選結果。

  • 按一下第一個要篩選的欄位上的 更多,然後按一下 篩選

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

    您可以按一下 新增篩選器 來新增更多欄位篩選器。

篩選器只會影響現有的樣本資料。

排序結果

您可以依特定欄排序資料樣本。

  • 按一下要排序的欄上的 更多,然後選取 遞增排序遞減排序

排序只會影響現有的樣本資料。若您使用篩選器僅納入 2024 年的訂單,並反轉排序順序,則樣本資料仍然只會包含 2024 年的訂單。

管理顯示的欄

您可以選取要在結果中顯示哪些欄。當您儲存轉換時,不會儲存此選取項目。

  • 按一下欄上的 更多,然後按一下隱藏欄,以隱藏欄。

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

參數

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

當您執行下列動作時,參數會自動對應:

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

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

  • 參數名稱符合 物件 中資料表的資料表名稱。

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

您可以對應至

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

  • 目前結構

  • 目標物件

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

提示備註可用參考取代參數,使查詢更加易讀。變更參數中的值,SELECT 查詢中的參考也會變更。

中繼資料

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

  • 金鑰欄中設定主要金鑰。

  • 可為 Null 欄中設定欄是否可為 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 搭配 *,因為這可能會在每次查詢執行時傳回不同的欄。若結構描述中有變更,請據此變更查詢並重新執行描述表格。然後您可以編輯欄並調整表格。

    此頁面是否對您有幫助?

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