Zu Hauptinhalt springen

Änderungstabellen

Sie können die Tools für Ihren Zielendpunkt verwenden, um Informationen anhand der Metadaten in den Änderungstabellen zu erhalten. Diese Daten sind durch die Kopfzeilenspalten definiert, die zum Änderungstabellenschema hinzugefügt werden. Diese Kopfzeilen werden in der folgenden Tabelle beschrieben.

Für jede Zieltabelle in der Replikationsaufgabe wird eine Änderungstabelle mit dem entsprechenden Namen in der Datenbank mit den Zieltabellen gepflegt. Weitere Informationen finden Sie unter Arbeiten mit Änderungstabellen. Eine Änderungstabelle enthält die Originaltabellenspalten und die Kopfzeilenspalten. Die Kopfzeilenspalten enthalten ein Präfix, sodass der Name nicht mit den Spaltennamen der Quelltabelle konfliktiert. Das Standardpräfix ist header__. Weitere Informationen zum Ändern dieses Präfix finden Sie in der Auflistung Änderungstabellen unter „Metadaten“ in den Aufgabeneinstellungen. In der folgenden Tabelle sind die Standardkopfzeilenspalten der Änderungstabellen aufgelistet.

Spaltenname Typ Beschreibung

[header__]change_seq

varchar (35)

Ein monoton zunehmender Änderungssequenzierer, der allen Änderungstabellen einer Aufgabe gemeinsam ist. Die Änderungssequenz hat folgendes Format:

YYYYMMDDHHmmSShhxxxxxxxxxxxxxxxxxxx

Hierbei gilt:

  • YYYY ist das Jahr mit vier Stellen (z. B. 2012)
  • MM ist der Monat mit zwei Stellen (von 01 bis 12)
  • DD ist der Tag mit zwei Stellen (von 01 bis 31)

  • HH ist die Stunde des Tages (von 00 bis 23)
  • mm ist die Minute der Stunde (von 00 bis 59)
  • SS ist die Sekunde der Minute (von 00 bis 59)
  • hh ist das Hundertstel der Sekunde (von 00 bis 99)
  • xxxxxxxxxxxxxxxxxxx ist eine 19-stellige Änderungsnummer mit vorangestellter Null (pro Aufgabe global).

Der Uhrzeit-Teil bezieht sich in der Regel auf die Commit-Uhrzeit der Transaktion, die den Änderungsdatensatz umfasst. Das Qlik Talend Data Integration enthält Logik, die die Monotonie der Sequenznummer beibehält. Wenn also die Endpunktuhrzeit angepasst wird, kann dies zu mehreren Änderungen führen, die den gleichen Zeitstempel zu haben scheinen, aber mit ansteigender Änderungsnummer.

Das xxx...xxx ist in der Regel die interne Änderungsnummer des Datensatzes, mit der Ausnahme, dass es sich bei BEFORE-IMAGE-Datensätzen um die gleiche Änderungsnummer wie bei dem entsprechenden UPDATE-Datensatz handelt (wenn z. B. die Änderungsnummer für BEFORE-IMAGE 1000 und diejenige von UPDATE 1001 ist, erhalten beide 1001). Dies ermöglicht einen einfachen Left-Outer-Join zwischen der Tabelle und sich selbst, wobei links bis zum Zeitpunkt gescannt, aber operation=before-image herausgefiltert wird, und rechts wird der Join bei der gleichen change_seq vorgenommen, wobei die change_oper „B“ ist.

[header__]change_oper

varchar (1)

Der Vorgangstyp. Es kann einer der folgenden sein:

  • I: INSERT
  • D: DELETE
  • U: UPDATE
  • B: Vor dem Image

[header__] change_mask

varbinary (128)

Die Änderungsmaske gibt an, welche Datenspalten in der Änderungstabelle mit Spalten verknüpft sind, die in der Quelltabelle geändert wurden.

Die Bit-Position in der Änderungsmaske basiert auf der Spalten-Ordinalen in der Änderungstabelle. Wenn also 5 Kopfzeilenspalten vorhanden sind, belegen sie die Bits 0 bis 4, und die erste Datenspalte ist Bit 5 in der Änderungsmaske.

Die Änderungsmaske ist eine binäre Spalte (ein Byte-Array), die die Änderungsmaske in Little-Endian-Reihenfolge darstellt:

Byte 0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

Byte 1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

In diesem Beispiel gibt bit#N an, dass die Änderungstabellenspalte von Ordinale N sich auf eine Spalte bezieht, die in der Quelltabelle geändert wurde. Wenn die Aktualisierungsmaske 11000 und die Spalten-Ordinale 3 ist, wurde die Spalte nicht geändert.

Das folgende Beispiel beschreibt die Bit-Semantik:

  • Für INSERT-Datensätze haben alle eingefügten Spalten den zugeordneten Bitsatz.
  • Für DELETE-Datensätze haben nur Primärschlüsselspalten (bzw. eindeutige Indexspalten) den zugeordneten Bitsatz. Somit ist es möglich, einen DELETE-Befehl zu erstellen, ohne zuerst nach den Primärschlüsselfeldern in einer anderen Quelle suchen zu müssen.
  • Für BEFORE-IMAGE-Datensätze sind alle Bits gelöscht (die Änderungsmaske kann leer sein).
  • Für UPDATE-Datensätze enthält jede Spalte, deren Wert zwischen BEFORE-IMAGE und UPDATE geändert wurde, den zugeordneten Bitsatz.

Um Platz zu sparen und die Verarbeitungseffizienz zu erhöhen, kann die tatsächlich in der Änderungsmaske gespeicherte Bytezahl um Nullen gekürzt werden. Das bedeutet, dass nachgestellte Nullen nicht gespeichert werden müssen. Die Verarbeitungslogik muss dies berücksichtigen.

[header__] stream_position

varchar (128)

Die CDC-Quellstream-Position.

[header__] operation

varchar (12)

Der mit dem Änderungsdatensatz verknüpfte Vorgang. Dies kann einer der folgenden sein:

  • INSERT
  • UPDATE
  • DELETE
  • BEFOREIMAGE

[header__] transaction_id

varchar (32)

Die ID der Transaktion, zu der der Änderungsdatensatz gehört.

Der Wert ist eine Hex-Zeichenfolge der 128-Bit-Transaktions-ID.

[header__] timestamp

Zeitstempel

Der ursprüngliche UTC-Änderungszeitstempel (kann ein ungefährer Wert sein).

Informationshinweis Bei PostgreSQL-Quellen wird der Zeitstempel erst nach dem Commit bekannt. Daher wird das Standarddatum (z. B. 1970-01-01) angezeigt, bis das Commit der Änderungen in den Quelltabellen abgeschlossen ist.

[header__] partition_name

String

Der Name der Partition, die im Ziel erstellt wird, wenn Änderungsdatenpartitionierung aktiviert ist. Der Partitionsname setzt sich aus der Start- und Enduhrzeit der Partition zusammen.

Beispiel:

20170313T123000_20170313T170000

Hat diese Seite Ihnen geholfen?

Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!