

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

# Delta Token 型增量傳輸
<a name="sap-odata-incremental-transfers"></a>

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

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

1. 建立 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 狀態管理指令碼](sap-odata-state-management-script.md) 一節。

## Delta Token 失效
<a name="sap-odata-invalidation"></a>

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

`Could not open data access via extraction API RODPS_REPL_ODP_OPEN` 