View a markdown version of this page

Delta Token 型增量傳輸 - AWS Glue

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Delta Token 型增量傳輸

對於支援其已啟用 ODP 的實體,若要使用變更資料擷取 (CDC) 啟用增量傳輸,請遵循下列步驟:

  1. 在指令碼模式下建立增量傳輸任務。

  2. 建立 DataFrame 或 Glue DynamicFrame 時,需要傳遞選項 "ENABLE_CDC": "True"。此選項可確保您會收到來自 SAP 的 Delta Token,其可用於後續擷取變更的資料。

Delta Token 會出現在 DELTA_TOKEN 資料欄中 dataframe 的最後一列。此字符可用作後續呼叫中的連接器選項,以逐步擷取下一組資料。

範例

  • 建立 DynamicFrame 時,我們會將 ENABLE_CDC 旗標設定為 true。注意:ENABLE_CDC 預設為 false,如果您不想初始化 delta queue,則不需要傳送此旗標或將其設定為 true。未將此旗標設定為 true 將導致完整的載入擷取。

    sapodata_df = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "entityName", "ENABLE_CDC": "true" }, transformation_ctx=key) # Extract the delta token from the last row of the DELTA_TOKEN column delta_token_1 = your_logic_to_extract_delta_token(sapodata_df) # e.g., D20241029164449_000370000
  • 擷取的 delta token 可以作為選項進行傳遞,以擷取新事件。

    sapodata_df_2 = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "entityName", // passing the delta token retrieved in the last run "DELTA_TOKEN": delta_token_1 } , transformation_ctx=key) # Extract the new delta token for the next run delta_token_2 = your_logic_to_extract_delta_token(sapodata_df_2)

請注意,其中存在 DELTA_TOKEN 的最後一個記錄不是來自來源的交易記錄,而是僅用於傳遞 delta token 值。

除了 DELTA_TOKEN 之外,dataframe 的每一列都會傳回下列欄位。

  • GLUE_FETCH_SQ:這是一個序列欄位,按照記錄接收順序從 EPOC 時間戳記產生,對於每個記錄都是唯一的。如果您需要了解或建立來源系統中的變更順序,則可以使用此功能。只有啟用 ODP 的實體才會出現此欄位。

  • DML_STATUS:這會顯示來源中所有新插入和更新記錄的 UPDATED,以及已從來源中刪除之記錄的 DELETED

如需有關如何管理狀態和重複使用 delta token 以透過範例擷取變更記錄的詳細資訊,請參閱 使用 SAP OData 狀態管理指令碼 一節。

Delta Token 失效

Delta Token 與服務集合和使用者相關聯。如果針對相同的服務集合和使用者啟動具有 “ENABLE_CDC” : “true” 的新初始提取,則 SAP OData 服務將使先前初始化後簽發的所有之前的 delta token 失效。使用過期的 delta token 叫用連接器將導致例外狀況:

Could not open data access via extraction API RODPS_REPL_ODP_OPEN