

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

# OData 服務 (非 ODP 來源)
<a name="sap-odata-non-odp-services"></a>

## 完整載入
<a name="sap-odata-non-odp-full-load"></a>

對於非 ODP (營運資料佈建) 系統，**完整載入**涉及從來源系統擷取整個資料集，並將其載入目標系統。由於非 ODP 系統本質上不支援 deltas 等進階資料擷取機制，因此程序非常簡單，但可能會耗費大量資源，具體取決於資料大小。

## 增量載入
<a name="sap-odata-non-odp-incremental-load"></a>

對於不支援 **ODP (營運資料佈建)** 的系統或實體，可透過實作時間戳記型機制來追蹤和擷取變更，手動管理增量資料傳輸。

**時間戳記型增量傳輸**

對於啟用非 ODP 的實體 (或未使用 ENABLE\_CDC 旗標的已啟用 ODP 的實體)，我們可以在連接器中使用 `filteringExpression` 選項來指示要擷取資料的 `datetime` 間隔。此方法依賴於資料中的時間戳記欄位，表示上次建立/修改每個記錄的時間。

**範例**

擷取 2024-01-01T00：00：00.000 之後變更的記錄

```
sapodata_df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "filteringExpression": "LastChangeDateTime >= 2024-01-01T00:00:00.000"
    }, transformation_ctx=key)
```

注意：在此範例中，`LastChangeDateTime` 欄位表示上次修改每個記錄的時間。實際欄位名稱可能會因您的特定 SAP OData 實體而有所不同。

若要在後續執行中取得新的資料子集，可以使用新的時間戳記來更新 `filteringExpression`。一般而言，這是先前擷取資料的最大時間戳記值。

**範例**

```
max_timestamp = get_max_timestamp(sapodata_df)  # Function to get the max timestamp from the previous run
next_filtering_expression = f"LastChangeDateTime > {max_timestamp}"

# Use this next_filtering_expression in your next run
```

在下一節中，我們將提供自動化方法來管理這些時間戳記型增量傳輸，無需在執行之間手動更新篩選表達式。