

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo dello script di gestione OData dello stato SAP
<a name="sap-odata-state-management-script"></a>

Per utilizzare lo script di gestione OData dello stato SAP nel tuo AWS Glue lavoro, segui questi passaggi:
+ Scaricare lo script di gestione dello stato: `s3://aws-blogs-artifacts-public/artifacts/BDB-4789/sap_odata_state_management.zip ` dal bucket pubblico Amazon S3.
+ Carica lo script in un bucket Amazon S3 a cui il tuo AWS Glue job dispone delle autorizzazioni di accesso.
+ Fai riferimento allo script nel tuo AWS Glue job: quando crei o aggiorni il AWS Glue job, passa l'`'--extra-py-files'`opzione che fa riferimento al percorso dello script nel tuo bucket Amazon S3. Ad esempio: `--extra-py-files s3://your-bucket/path/to/sap_odata_state_management.py`
+ Importa e usa la libreria di gestione dello stato nei tuoi AWS Glue script di lavoro.

## Esempio di trasferimento incrementale basato su token Delta
<a name="sap-odata-delta-token-incremental-transfer"></a>

Ecco un esempio di come utilizzare lo script di gestione dello stato per i trasferimenti incrementali basati su delta-token:

```
from sap_odata_state_management import StateManagerFactory, StateManagerType, StateType

# Initialize the state manager
state_manager = StateManagerFactory.create_manager(
    manager_type=StateManagerType.JOB_TAG,
    state_type=StateType.DELTA_TOKEN,
    options={
        "job_name": args['JOB_NAME'],
        "logger": logger
    }
)

# Get connector options (including delta token if available)
key = "SAPODataNode"
connector_options = state_manager.get_connector_options(key)

# Use the connector options in your Glue job
df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "true",
        **connector_options
    }
)

# Process your data here...

# Update the state after processing
state_manager.update_state(key, sapodata_df.toDF())
```

## Esempio di trasferimento incrementale basato su marcature temporali
<a name="sap-odata-timestamp-incremental-transfer"></a>

Ecco un esempio di come utilizzare lo script di gestione dello stato per i trasferimenti incrementali basati su delta-token:

```
from sap_odata_state_management import StateManagerFactory, StateManagerType, StateType

# Initialize the state manager
state_manager = StateManagerFactory.create_manager(
    manager_type=StateManagerType.JOB_TAG,
    state_type=StateType.DELTA_TOKEN,
    options={
        "job_name": args['JOB_NAME'],
        "logger": logger
    }
)

# Get connector options (including delta token if available)
key = "SAPODataNode"
connector_options = state_manager.get_connector_options(key)

# Use the connector options in your Glue job
df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "true",
        **connector_options
    }
)

# Process your data here...

# Update the state after processing
state_manager.update_state(key, sapodata_df.toDF())
```

In entrambi gli esempi, lo script di gestione dello stato gestisce la complessità della memorizzazione dello stato (token delta o marcatura temporale) tra le esecuzioni dei processi. Recupera automaticamente l'ultimo stato conosciuto quando ottiene le opzioni del connettore e aggiorna lo stato dopo l'elaborazione, assicurando che ogni esecuzione del processo elabori solo dati nuovi o modificati.