

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Transferts incrémentiels basés sur des jetons Delta
<a name="sap-odata-incremental-transfers"></a>

Pour activer le transfert incrémentiel à l’aide de la capture des données de modification (CDC) pour les entités compatibles ODP qui le prennent en charge, procédez comme suit :

1. Créez la tâche de transfert incrémentiel en mode script.

1. Lorsque vous créez le DataFrame or Glue DynamicFrame, vous devez passer l'option`"ENABLE_CDC": "True"`. Cette option garantit que vous recevrez un jeton Delta de la part de SAP, qui pourra être utilisé pour extraire ultérieurement les données modifiées.

Le jeton Delta sera présent dans la dernière ligne du dataframe, dans la colonne DELTA\_TOKEN. Ce jeton peut être utilisé comme option de connecteur lors des appels suivants pour récupérer de manière incrémentielle le prochain jeu de données.

**Exemple**
+ Nous avons défini le `ENABLE_CDC` drapeau sur`true`, lors de la création du DynamicFrame. Remarque : `ENABLE_CDC` est `false` par défaut, si vous ne souhaitez pas initialiser la file d’attente Delta, vous n’avez pas besoin d’envoyer cet indicateur ou de le définir sur true. Le fait de ne pas définir cet indicateur sur true entraînera une extraction de chargement complet.

  ```
  sapodata_df = glueContext.create_dynamic_frame.from_options(
      connection_type="SAPOData",
      connection_options={
          "connectionName": "connectionName",
          "ENTITY_NAME": "entityName",
          "ENABLE_CDC": "true"
      }, transformation_ctx=key)
  
  # Extract the delta token from the last row of the DELTA_TOKEN column
  delta_token_1 = your_logic_to_extract_delta_token(sapodata_df) # e.g., D20241029164449_000370000
  ```
+ Le jeton Delta extrait peut être transmis en option pour extraire de nouveaux événements.

  ```
  sapodata_df_2 = glueContext.create_dynamic_frame.from_options(
      connection_type="SAPOData",
      connection_options={
          "connectionName": "connectionName",
          "ENTITY_NAME": "entityName",
          // passing the delta token retrieved in the last run
          "DELTA_TOKEN": delta_token_1
      } , transformation_ctx=key)
  
  # Extract the new delta token for the next run
  delta_token_2 = your_logic_to_extract_delta_token(sapodata_df_2)
  ```

Notez que le dernier enregistrement, dans lequel le `DELTA_TOKEN` est présent, n’est pas un enregistrement transactionnel provenant de la source et n’est là que dans le but de transmettre la valeur du jeton Delta.

Outre `DELTA_TOKEN`, les champs suivants sont renvoyés dans chaque ligne du dataframe. 
+ **GLUE\_FETCH\_SQ** : il s’agit d’un champ de séquence, généré à partir de l’horodatage EPOC dans l’ordre dans lequel l’enregistrement a été reçu, et qui est unique pour chaque enregistrement. Il peut être utilisé si vous avez besoin de connaître ou d’établir l’ordre des modifications dans le système source. Ce champ ne sera présent que pour les entités compatibles ODP.
+ **DML\_STATUS** : cela affichera `UPDATED` pour tous les enregistrements récemment insérés et mis à jour à partir de la source, ainsi que `DELETED` pour les enregistrements supprimés de la source.

Pour plus de détails sur la façon de gérer l’état et de réutiliser le jeton Delta pour extraire les enregistrements modifiés à l’aide d’un exemple, reportez-vous à la section [Utilisation du script de gestion OData d'état SAP](sap-odata-state-management-script.md).

## Invalidation de jeton Delta
<a name="sap-odata-invalidation"></a>

Un jeton Delta est associé à la collection de services et à un utilisateur. Si un nouveau pull with initial `“ENABLE_CDC” : “true”` est lancé pour la même collection de services et pour le même utilisateur, tous les jetons delta émis à la suite d'une initialisation précédente seront invalidés par le service SAP OData . L’invocation du connecteur avec un jeton Delta expiré entraînera une exception : 

`Could not open data access via extraction API RODPS_REPL_ODP_OPEN` 