OData サービス (ODP 非対応ソース)
フルロード
ODP (オペレーショナルデータプロビジョニング) に対応していないシステムの場合、フルロードでは、ソース システムからデータセット全体を抽出し、ターゲットシステムにロードします。ODP に対応していないシステムは、差分などの高度なデータ抽出メカニズムを本質的にサポートしないため、そのプロセスは単純ですが、データのサイズによってはリソースを大量に消費する可能性があります。
増分ロード
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
次のセクションでは、これらのタイムスタンプベースの増分転送を管理するための自動化されたアプローチを提供し、実行間でフィルタリング式を手動で更新する必要がなくなります。