# Metadaten- und Datennachrichten

In diesem Thema werden die Struktur und der Inhalt der Metadaten- und Datennachrichten beschrieben, die vom Kafka-Ziel Konnektor generiert werden.

## Metadatennachricht

Metadatennachricht

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| schemaId | String | Der eindeutige Bezeichner des Avro-Schemas. |
| lineage | Struktur | Informationen über den Ursprung der Daten (Qlik Talend Data Integration-Server, Aufgabe, Tabelle usw.) |
| server | String | Der Name des Qlik Talend Data Integration-Servers. |
| task | String | Der Name der Aufgabe. |
| schema (Schemaname) | String | Der Name des Datenbankschemas. |
| table (Tabellenname) | String | Der Name der Tabelle. |
| tableVersion | Ganze Zahl | Qlik Talend Data Integration verwaltet eine Versionsnummer der Struktur der Quelltabelle. Bei einer DDL-Änderung an der Quelle wird die Version erhöht und eine neue Metadatennachricht generiert. |
| timestamp | String | Das Datum und die Uhrzeit der Metadatennachricht. |
| tableStructure | Struktur | Beschreibt die Struktur der Tabelle. |
| tableColumns | Struktur | Enthält die Liste der Spalten und deren Eigenschaften. |
| {columns} | Struktur | Für jede Spalte ein Datensatz mit den unten stehenden Eigenschaften. |
| ordinal | Ganze Zahl | Die Position der Spalte im Datensatz. |
| type | String | Der Spaltendatentyp. |
| length | Ganze Zahl | Die maximale Größe der Daten (in Byte), die für die Spalte zulässig ist. |
| precision | Ganze Zahl | Für den Datentyp NUMERIC die maximale Anzahl von Stellen, die zur Darstellung des Werts erforderlich sind. |
| scale | Ganze Zahl | Für den Datentyp NUMERIC die maximale Anzahl Stellen rechts neben dem Dezimalpunkt, die für eine Zahl zulässig sind. |
| primaryKeyPosition | Ganze Zahl | Die Position der Spalte im Primärschlüssel oder eindeutigen Index der Tabelle. Der Wert ist Null, wenn die Spalte nicht zum Primärschlüssel der Tabelle gehört. |
| dataSchema | String | Das Avro-Schema zum Deserialisieren der Datennachrichten. |

## Datennachricht

Datennachricht

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| schema (Name) | String | Der Name des Quelldatenbankschemas, das die replizierte(n) Quelltabelle(n) enthält. |
| table (Name) | String | Der Name der Quelltabelle. |
| headers | Struktur | Informationen zum aktuellen Datensatz. |
| operation (Vorgang) | Enum | Der Vorgangstyp.<br><br>Vollständiges Laden – Erstmaliges Laden der Quelldaten in die Zielthemen<br><br>REFRESH – Einfügen eines Datensatzes in das Ziel während des vollständigen Ladens<br><br>CDC – Wendet Quelltabellenänderungen auf das relevante Thema an<br><br>INSERT – Einfügen eines neuen Zieldatensatzes<br><br>UPDATE – Aktualisieren eines vorhandenen Zieldatensatzes<br><br>DELETE – Löschen eines Zieldatensatzes |
| changeSequence (Sequenz ändern) | String | Ein monoton zunehmender Änderungssequenzierer, der allen Änderungstabellen einer Aufgabe gemeinsam ist.<br><br>Verwenden Sie dieses Feld, um die Datensätze in chronologischer Reihenfolge zu sortieren.<br><br>Gilt nur für CDC-Vorgänge. |
| timestamp (Zeitstempel) | String | Der ursprüngliche UTC-Zeitstempel der Änderung.<br><br>Gilt nur für CDC-Vorgänge. |
| streamPosition | String | Die CDC-Quellstream-Position.<br><br>Gilt nur für CDC-Vorgänge. |
| transactionId (Transaktions-ID) | String | Die ID der Transaktion, zu der der Änderungsdatensatz gehört.<br><br>Verwenden Sie dieses Feld, um alle Änderungen einer bestimmten Transaktion zu sammeln.<br><br>Gilt nur für CDC-Vorgänge. |
| changeMask (Änderungsmaske) | String | Gibt an, welche Datenspalten in der Quelltabelle geändert wurden.<br><br>Die Änderungsmaske ist ein String aus Hexadezimalstellen, der eine Bitmaske von Datenspalten in Little-Endian-Reihenfolge darstellt. Die Bit-Position in der Änderungsmaske basiert auf der Spalten-Ordinalen in der Metadatennachricht der Änderungstabelle.<br><br>Wenn also 10 Datenspalten vorhanden sind, belegen sie die Bits 0 bis 9 in der Bit-Maske.<br><br>Wenn die UPDATE-Maske 0B hexadezimal ist, was 1011 binär entspricht, bedeutet dies, dass die Spalten an den Ordinalen 1, 2 und 4 geändert wurden.<br><br>Das folgende Beispiel beschreibt die Bit-Semantik:<br><br><ul> <li>Für INSERT-Datensätze haben alle eingefügten Spalten den zugeordneten Bitsatz.</li> <li>Für DELETE-Datensätze haben nur Primärschlüsselspalten (bzw. eindeutige Indexspalten) den zugeordneten Bit-Satz. 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.</li> <li>Für UPDATE-Datensätze enthält jede Spalte mit einem geänderten Wert den zugeordneten Bit-Satz.</li> </ul><br><br>Informationshinweis<br><br>LOB-Spalten sind nicht im changeMask-Bit enthalten. |
| columnMask (Spaltenmaske) | String | Zeigt an, welche Datenspalten in der Nachricht vorhanden sind. Normalerweise umfasst dies alle Tabellenspalten.<br><br>Informationshinweis<br><br>Bei verschieben von einer Oracle-Quelle ohne vollständige zusätzliche Protokollierung sind einige Spalten möglicherweise nicht in den Daten vorhanden, da sie nicht verschoben werden konnten.<br><br>Die Spaltenmaske ist ein String aus Hexadezimalstellen, der eine Bitmaske von Datenspalten in Little-Endian-Reihenfolge darstellt. Die Bit-Position in der Spaltenmaske basiert auf der Spalten-Ordinalen in der Metadatennachricht dieser Tabelle.<br><br>Dies ermöglicht dem Anwender, einen Nullwert, der der *tatsächliche* Wert der Spalte ist, von einem Nullwert zu unterscheiden, der eine Spalte darstellt, die nicht aus der Quelldatenbank verschoben werden konnte. |
| externalSchemaId | String | Die Schema-ID. Sie wird nur angezeigt, wenn das Kontrollkästchen Externen Schema-ID-Header einschließen aktiviert ist.<br><br>Da sich die Schema-ID ändert, sooft eine DDL in der Quelltabelle ausgeführt wird, können Nutzeranwendungen anhand dieser Informationen feststellen, ob sich das Nachrichtenschema geändert hat. |
| transactionEventCounter (Transaktionsereigniszähler) | Lang | Die Sequenznummer des aktuellen Vorgangs in der Transaktion.<br><br>Sie kann verwendet werden, um die Reihenfolge der Vorgänge innerhalb einer Transaktion zu bestimmen. |
| transactionLastEvent (Letztes Transaktionsereignis) | Boolesch | „True“ gibt an, dass es der letzte Datensatz in der Transaktion ist, wohingegen „False“ angibt, dass nicht alle Datensätze verarbeitet wurden. |
| Daten | Struktur | Die Daten des Tabellendatensatzes |
| {columns} |  | Die Spaltennamen und Werte im aktuellen Datensatz. |
| beforeData | Struktur | Die Daten des Tabellendatensatzes vor der Änderung |
| {columns} |  | Die Spaltennamen und Werte vor der Änderung.<br><br>Gilt für den UPDATE-Vorgang. |