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à.
A pieno carico
Per i sistemi non ODP (Operational Data Provisioning), un Full Load prevede l'estrazione dell'intero set di dati dal sistema di origine e il suo caricamento nel sistema di destinazione. Poiché i sistemi non ODP non supportano intrinsecamente meccanismi avanzati di estrazione dei dati come i delta, il processo è semplice ma può richiedere molte risorse a seconda delle dimensioni dei dati.
Caricamento incrementale
Per i sistemi o le entità che non supportano ODP (Operational Data Provisioning), il trasferimento incrementale dei dati può essere gestito manualmente implementando un meccanismo basato su timestamp per tracciare ed estrarre le modifiche.
Trasferimenti incrementali basati su timestamp
Per le entità non abilitate per ODP (o per le entità abilitate per ODP che non utilizzano il flag ENABLE_CDC), possiamo usare un'filteringExpression
opzione nel connettore per indicare l'intervallo per il quale vogliamo recuperare i dati. datetime
Questo metodo si basa su un campo timestamp nei dati che indica quando ogni record è stato creato/modificato l'ultima volta.
Esempio
Recupero di record modificati dopo il 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)
Nota: in questo esempio, LastChangeDateTime
è il campo che rappresenta l'ultima modifica di ogni record. Il nome effettivo del campo può variare a seconda dell' OData entità SAP specifica.
Per ottenere un nuovo sottoinsieme di dati nelle esecuzioni successive, è necessario aggiornarlo filteringExpression
con un nuovo timestamp. In genere, questo sarebbe il valore massimo del timestamp dei dati recuperati in precedenza.
Esempio
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
Nella prossima sezione, forniremo un approccio automatizzato per gestire questi trasferimenti incrementali basati sul timestamp, eliminando la necessità di aggiornare manualmente l'espressione di filtraggio tra le esecuzioni.