

# OData サービス (ODP 非対応ソース）
<a name="sap-odata-non-odp-services"></a>

## フルロード
<a name="sap-odata-non-odp-full-load"></a>

ODP (オペレーショナルデータプロビジョニング) に対応していないシステムの場合、**フルロード**では、ソース システムからデータセット全体を抽出し、ターゲットシステムにロードします。ODP に対応していないシステムは、差分などの高度なデータ抽出メカニズムを本質的にサポートしないため、そのプロセスは単純ですが、データのサイズによってはリソースを大量に消費する可能性があります。

## 増分ロード
<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
```

次のセクションでは、これらのタイムスタンプベースの増分転送を管理するための自動化されたアプローチを提供し、実行間でフィルタリング式を手動で更新する必要がなくなります。