

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# OData Layanan (Sumber Non-ODP)
<a name="sap-odata-non-odp-services"></a>

## Beban penuh
<a name="sap-odata-non-odp-full-load"></a>

Untuk sistem non-ODP (Operational Data Provisioning), **Full Load** melibatkan ekstraksi seluruh dataset dari sistem sumber dan memuatnya ke dalam sistem target. Karena sistem non-ODP tidak secara inheren mendukung mekanisme ekstraksi data canggih seperti delta, prosesnya mudah tetapi dapat intensif sumber daya tergantung pada ukuran data.

## Beban tambahan
<a name="sap-odata-non-odp-incremental-load"></a>

Untuk sistem atau entitas yang tidak mendukung **ODP (Operational Data Provisioning)**, transfer data inkremental dapat dikelola secara manual dengan menerapkan mekanisme berbasis stempel waktu untuk melacak dan mengekstrak perubahan.

**Transfer Inkremental Berbasis Timestamp**

Untuk entitas berkemampuan non-ODP (atau untuk entitas yang diaktifkan ODP yang tidak menggunakan flag ENABLE\_CDC), kita dapat menggunakan `filteringExpression` opsi di konektor untuk menunjukkan `datetime` interval yang ingin kita ambil data. Metode ini bergantung pada bidang stempel waktu dalam data Anda yang mewakili kapan setiap catatan terakhir dibuat/dimodifikasi.

**Contoh**

Mengambil catatan yang berubah setelah 2024-01-01T 00: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)
```

Catatan: Dalam contoh ini, `LastChangeDateTime` adalah bidang yang mewakili kapan setiap rekaman terakhir diubah. Nama bidang yang sebenarnya dapat bervariasi tergantung pada OData entitas SAP spesifik Anda.

Untuk mendapatkan subset data baru dalam proses berikutnya, Anda akan memperbarui `filteringExpression` dengan stempel waktu baru. Biasanya, ini akan menjadi nilai stempel waktu maksimum dari data yang diambil sebelumnya.

**Contoh**

```
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
```

Di bagian selanjutnya, kami akan memberikan pendekatan otomatis untuk mengelola transfer inkremental berbasis stempel waktu ini, menghilangkan kebutuhan untuk memperbarui ekspresi pemfilteran secara manual di antara proses.