Accéder au contenu principal

Tables de modifications

Vous pouvez utiliser les outils de votre point de terminaison cible pour obtenir des informations via les métadonnées des tables de modifications. Ces données sont définies par les colonnes d'en-tête ajoutées au schéma de table de modifications. Ces en-têtes sont décrits dans le tableau ci-dessous.

Pour chaque table cible de la tâche de réplication, une table de modifications portant le nom correspondant est gérée dans la base de données avec les tables cibles. Pour plus d'informations, consultez Utilisation de tables de modifications. Une table de modifications contient les colonnes de table d'origine, ainsi que des colonnes d'en-tête. Les colonnes d'en-tête contiennent un préfixe afin que le nom ne soit pas en conflit avec les noms de colonne de table source. Le préfixe par défaut est header__. Pour savoir comment modifier ce préfixe, voir la liste Tables de modifications sous Métadonnées dans les paramètres de tâche. Le tableau suivant répertorie les colonnes d'en-tête de table de modifications par défaut.

Nom de colonne Type Description

[header__]change_seq

varchar (35)

Séquenceur de modifications à croissance monotonique commun à toutes les tables de modifications d'une tâche. Le format de la séquence de modifications est le suivant :

YYYYMMDDHHmmSShhxxxxxxxxxxxxxxxxxxx

où :

  • YYYY est l'année à quatre chiffres (par exemple, 2012)
  • MM est le mois à deux chiffres (plage de 01 à 12)
  • DD est le jour à deux chiffres (plage de 01 à 31)

  • HH est l'heure du jour (plage de 00 à 23)
  • mm sont les minutes de l'heure (plage de 00 à 59)
  • SS sont les secondes des minutes (plage de 00 à 59)
  • hh sont les centièmes des secondes (plage de 00 à 99)
  • xxxxxxxxxxxxxxxxxxx est un numéro de modification à 19 chiffres préfixé de zéro (global par tâche)

La partie horaire fait généralement référence à l'heure de validation de la transaction qui inclut l'enregistrement de modification. Qlik Talend Data Integration contient la logique qui maintient la monotonicité du numéro séquentiel de sorte que la modification ou l'ajustement de l'heure du point de terminaison puisse entraîner le fait que plusieurs modifications semblent se produire au même horodatage, mais avec un numéro de modification croissant.

La valeur xxx...xxx est généralement le numéro de modification interne de l'enregistrement de données, à l'exception du fait que, pour les enregistrements BEFORE-IMAGE, il s'agit du même numéro de modification que celui de l'enregistrement UPDATE correspondant (par exemple, si le numéro de modification de BEFORE-IMAGE est 1000 et si le numéro de modification de UPDATE est 1001, les deux ont 1001). Cela permet une simple jointure gauche externe entre la table et la valeur elle-même lorsqu'à gauche on scanne jusqu'au point dans le temps, mais qu'on filtre operation=before-image, et qu'à droite on joint au même niveau change_seq avec change_oper égal à 'B'.

[header__]change_oper

varchar (1)

Type d'opération. Il peut s'agir de l'un des types suivants :

  • I : INSERT
  • D : DELETE
  • U : UPDATE
  • B : Before Image

[header__] change_mask

varbinary (128)

Le masque de modifications indique les colonnes de données de la table de modifications associées aux colonnes modifiées dans la table source.

La position du bit dans le masque de modifications est basée sur l'ordinal de colonne de la table de modifications. Cela signifie que s'il existe 5 colonnes d'en-tête, elles occupent les bits 0 à 4 et la première colonne de données est le bit 5 dans le masque de modifications.

Le masque de modifications est une colonne binaire (un tableau d'octets) représentant le masque de modifications dans l'ordre petit-boutiste (little endian) :

Octet 0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

Octet 1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

Dans cet exemple, bit#N indique que la colonne de table de modifications de l'ordinal N est associée à une colonne qui a changé dans la table source. Si le masque de mise à jour est 11000 et si l'ordinal de colonne est 3, cela signifie que la colonne n'a pas changé.

Voici une description de la sémantique des bits :

  • Pour les enregistrements INSERT, l'ensemble des colonnes insérées ont l'ensemble de bits associé.
  • Pour les enregistrements DELETE, seules les colonnes de clé primaire (ou d'index unique) ont l'ensemble de bits associé. Cela permet à un applicateur de créer une instruction DELETE sans avoir à rechercher les champs de clé primaire auprès d'une autre source.
  • Pour les enregistrements BEFORE-IMAGE, tous les bits sont vides (le masque de modifications peut être vide).
  • Pour les enregistrements UPDATE, chaque colonne dont la valeur a changé entre BEFORE-IMAGE et UPDATE aura un ensemble de bits associé.

Pour l'efficacité de l'espace et du traitement, les valeurs nulles peuvent être retirés du nombre effectif d'octets stockés dans le masque de modifications. Cela signifie qu'il n'est pas nécessaire de stocker les zéros de fin. La logique de traitement doit tenir compte de ce point.

[header__] stream_position

varchar (128)

Position du flux CDC source.

[header__] operation

varchar (12)

Opération associée à l'enregistrement de modification. Il peut s'agir de l'une des valeurs suivantes :

  • INSERT
  • UPDATE
  • DELETE
  • BEFOREIMAGE

[header__] transaction_id

varchar (32)

ID de la transaction à laquelle appartient l'enregistrement de modification.

La valeur est une chaîne hex de l'ID de transaction de 128 bits.

[header__] timestamp

timestamp

Horodatage UTC de la modification d'origine (il se peut que la valeur soit approximative).

Note Informations Avec la source PostgreSQL, l'horodatage est connu uniquement après la validation. Par conséquent, tant que les modifications ne sont pas validées dans les tables sources, la date par défaut est affichée (par ex., 1970-01-01).

[header__] partition_name

chaîne

Nom de la partition créée sur la cible lorsque Modifier la partition de données est activé. Le nom de partition se compose de l'heure de début et de l'heure de fin de la partition.

Exemple :

20170313T123000_20170313T170000

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !