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à.
OData Servizi (fonti non ODP)
Caricamento completo
Per i sistemi non ODP (Operational Data Provisioning), un Carico completo 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.
Carico 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 marcature temporali per tracciare ed estrarre le modifiche.
Trasferimenti incrementali basati su marcature temporali
Per le entità non abilitate per ODP (o per le entità abilitate per ODP che non utilizzano il flag ENABLE_CDC), possiamo usare un'opzione filteringExpression nel connettore per indicare l'intervallo datetime per il quale vogliamo recuperare i dati. Questo metodo si basa su un campo timestamp nei dati che indica quando ogni record è stato creato/modificato per l'ultima volta.
Esempio
Recuperare i record modificati dopo 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)
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'entità OData SAP specifica.
Per ottenere un nuovo sottoinsieme di dati nelle esecuzioni successive, è necessario aggiornare filteringExpression con una nuova marcatura temporale. In genere, questo sarebbe il valore massimo della marcatura temporale 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 sulla marcatura temporale, eliminando la necessità di aggiornare manualmente l'espressione di filtraggio tra le esecuzioni.