Datensatzarchitektur in einem Qlik Open Lakehouse
Wenn Sie Datensätze in einem Qlik Open Lakehouse generieren, werden Speichertabellen, Änderungstabellen und Ansichten automatisch von Qlik Talend Data Integration generiert. Sie können diese Ansichten abfragen, um auf aktuelle und historische Daten zuzugreifen, die im offenen Iceberg-Tabellenformat gespeichert sind.
Eine intuitive und geführte Benutzeroberfläche unterstützt Sie bei der Erstellung, Modellierung und Ausführung von Daten-Pipelines. Sie können automatisch Schemas für Operational Data Stores (ODS) und Historical Data Stores (HDS) ohne manuelle Codierung generieren.
Architektur für eine Qlik Open Lakehouse-Daten-Pipeline unter Verwendung von Qlik Data Gateway – Datenbewegung. Die Daten werden in S3 bereitgestellt und in einem Iceberg Open Lakehouse gespeichert. Optional können die Tabellen, wie unten gezeigt, in einem Data Warehouse gespiegelt werden.

Schemas
Artefakte werden in einem internen Schema und einem Datenaufgabenschema generiert.
-
Das interne Schema enthält eine physische Tabelle mit mehreren Partitionen.
-
Das Datenaufgabenschema enthält die Ansichten, die Sie für die Nutzung der Daten verwenden können.
Wenn ein Schema mit mehr als einer Datenaufgabe verknüpft ist, muss jede Datenaufgabe ein eindeutiges Präfix für Tabellen und Ansichten verwenden. Sie können das Präfix in den Datenaufgabeneinstellungen festlegen.
Es werden nur interne Schemas für Benennungskonflikte geprüft. Bei anderen Schemas müssen Sie sicherstellen, dass keine Benennungskonflikte in den Tabellennamen bestehen. Die optimale Vorgehensweise ist die Benennung des internen Schemas mit dem gleichen Namen wie das Datenaufgabenschema, aber mit dem Namenszusatz _internal. Dadurch wird sichergestellt, dass jede Schema-Präfix-Kombination eindeutig ist.
Tabellen
Für jede Quelltabelle wird eine Tabelle im internen Schema mit dem Suffix _internal erstellt, wobei das folgende Format verwendet wird:
<INTERNAL_SCHEMA>.<TABLE_NAME>_internal
Diese Tabelle enthält fünf Partitionen, die jeweils einen bestimmten Zweck bei der Verarbeitung und Speicherung der Daten erfüllen. Jede Partition nutzt eine Teilmenge der Tabellenspalten entsprechend ihrer Rolle im Lebenszyklus der Daten.
Der interne Datensatz ist so strukturiert, dass eingehende Daten aus Ihrem Quellsystem effizient verwaltet werden können. Er unterstützt das Einlesen in Echtzeit und eine Verlaufsverfolgung. Der Datenfluss wird über mehrere spezialisierte Partitionen verwaltet, die im Folgenden beschrieben werden:
-
Partition Changes: Einlesen in Echtzeit
Alle Änderungen aus dem Quellsystem – Einfügungen, Aktualisierungen und Löschungen – werden zunächst an die Partition Changes angehängt.
-
Die Partition fungiert als unbearbeitetes Änderungsprotokoll und liefert einen vollständigen Überblick über die Quellaktivität, bevor irgendwelche Umwandlungen stattfinden.
-
Jede Änderung ist mit einem Typ (I, U oder D) gekennzeichnet, der angibt, wie sie verarbeitet wird.
-
Ereignisse werden in der Quelle erfasst, sobald sie auftreten. Die Partition wird nahezu in Echtzeit aktualisiert.
-
Die Partition Changes ist verfügbar, wenn die folgenden Einstellungen auf die Lake-Bereitstellungsdatenaufgabe angewendet wurden.
-
Auf der Registerkarte Allgemein ist die Aktualisierungsmethode auf CDC festgelegt.
-
Vollständiges Laden ist aktiviert.
-
-
-
Partition Asset_state: Verfolgen des Fortschritts
Wenn Änderungen eingelesen werden, protokolliert die Partition Asset_state zwei wichtige Zeitstempel:
-
Wann die Änderungen zuletzt an die Partition Changes angehängt wurden.
-
Wann die Änderungen zuletzt auf die Partition Current angewendet wurden.
Dies ermöglicht einen vollständigen Einblick in die Synchronisierungs-Pipeline und hilft bei der Überwachung oder Fehlerbehebung bei Verzögerungen.
-
-
Partition Current: Neuestes Replikat der Quelle
Änderungen aus der Partition Changes werden regelmäßig auf die Partition Current angewendet, um eine aktuelle, für Abfragen optimierte Kopie der Quelldaten zu erhalten.
-
Eine Hintergrundaufgabe wird automatisch ausgeführt, um diese Aktualisierungen zu übernehmen. Dieser Vorgang basiert auf dem Volumen der kumulierten Änderungen und nicht auf einem festen Zeitplan.
-
Der anfängliche vollständige Ladevorgang wird direkt in die Partition Current geschrieben.
-
Diese Partition spiegelt den aktuellen Zustand der Daten wider und ist für effiziente Abfragen konzipiert.
-
-
Partition Prior (HDS): Verlaufsdaten
Wenn ein Datensatz in der Partition Current aktualisiert oder gelöscht wird, wird eine Kopie der vorherigen Version in die Partition Prior geschrieben.
-
Datensätze enthalten Metadaten, einschließlich des Änderungsverlaufs und des Datumsbereichs, in dem die Daten gültig sind.
-
Sich langsam ändernde Dimensionen des Typs 2 (SCD2) werden unterstützt.
-
Die Partition Prior ist verfügbar, wenn die Option Verlaufsdatensätze und Änderungsdatensatzarchiv aufbewahren auf der Registerkarte Allgemein in den Einstellungen der Speicherdatenaufgabe aktiviert ist.
-
Wenn eine aktualisierte Version eines Datensatzes in die Partition Current aufgenommen wird, wird der vorherige Datensatz zur Nachverfolgung in die Partition Prior verschoben.
-
-
Partition Reload
Die Partition Reload dient als temporärer Bereitstellungsbereich bei manuellen oder geplanten vollständigen Ladevorgängen:
-
Neue Daten werden zuerst in die Partition Reload geschrieben.
-
Regelmäßige Wartungsaufgaben löschen alle ausstehenden Änderungen, bevor sie pausiert werden.
-
Die Daten werden mit der Partition Current verglichen, und nur die Unterschiede werden in die Partition Current verschoben.
-
Die Partition Reload wird gelöscht, wenn der Vorgang abgeschlossen ist.
Dieser Prozess gewährleistet eine minimale Unterbrechung des Hauptdatensatzes während des vollständigen Ladevorgangs.
-
Partition Current
| Feld | Typ | Beschreibung |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | Hash aller primären Schlüssel des Datensatzes. Das Hash-Format ist SHA1. Spalten werden durch ein Rücktastenzeichen getrennt. |
| hdr__from_timestamp | TIMESTAMP |
Zeitstempel in UTC:
|
| hdr__operation | VARCHAR (1) |
Neuester Vorgang dieses Datensatzes.
|
| hdr__inserted_timestamp | TIMESTAMP | UTC-Zeitstempel des ersten Zeitpunkts, zu dem der Schlüssel hinzugefügt wurde. Bei Verwendung des vollständigen Ladens ist dies die Startzeit des vollständigen Ladens. |
| hdr__modified_timestamp | TIMESTAMP | UTC-Zeitstempel, wann die letzte Aktualisierung vorgenommen wurde. |
Partition Prior
| Feld | Typ | Beschreibung |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | Hash aller primären Schlüssel des Datensatzes. |
| hdr__from_timestamp | TIMESTAMP | Zeitstempel in UTC. |
| hdr__to_timestamp | TIMESTAMP | Zeitstempel in UTC. |
| hdr__operation | STRING (1) |
Neuester Vorgang dieses Datensatzes.
|
| hdr__was_current_from_timestamp | TIMESTAMP | Zeitstempel in UTC für den ersten Zeitpunkt, zu dem der Datensatz aktuell war. |
| hdr__was_current_to_timestamp | TIMESTAMP | Zeitstempel in UTC für den letzten Zeitpunkt, zu dem der Datensatz aktuell war. |
Partition Changes
| Feld | Typ | Beschreibung |
|---|---|---|
| hdr__change_identifier | VARCHAR (50) |
Die Änderungskennung ist eine Zeichenkette mit zwei Teilen:
|
| hdr__operation | VARCHAR (1) |
Neuester Vorgang dieses Datensatzes.
|
| hdr__timestamp | TIMESTAMP | Zeitstempel in UTC. |
| hdr__key_hash | BINARY (20) | Hash aller primären Schlüssel des Datensatzes. |
| hdr__inserted_timestamp | TIMESTAMP | UTC-Zeitstempel des Zeitpunkts, zu dem die Änderung von Qlik verarbeitet wurde. |
Partition Asset_state
| Feld | Typ | Beschreibung |
|---|---|---|
| hdr__apply_change_identifier | VARCHAR (50) | Der Änderungsbezeichner der letzten Änderung, die auf die Partition Current angewendet wurde. |
| hdr__copy_change_identifier | VARCHAR (50) | Der Änderungsbezeichner der letzten Änderung, die an die Partition Changes angehängt wurde. |
Partition Reload
Die von der Partition Reload verwendeten Spalten sind identisch mit denen der Partition Current.
Aufrufe
Alle erstellten Ansichten werden nahezu in Echtzeit aktualisiert. Die folgenden Ansichten sind verfügbar, um Abfragen und Berichte zu vereinfachen:
Aktuell
Die Ansicht „Aktuell“ spiegelt den letzten Stand der Daten wider. Diese Ansicht stellt ein Replikat der Quelltabelle dar, das nahezu in Echtzeit aktualisiert wird. Sie führt die Daten aus den Partitionen Current und Changes zusammen.
Name: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>
Es werden keine Kopfzeilenspalten zur Tabellenstruktur hinzugefügt.
Verlauf
Eine Ansicht „Verlauf“ wird im Datenobjektschema für jede ausgewählte Quelltabelle generiert, wenn Verlauf in den Datenaufgabeneinstellungen aktiviert ist. Die Ansicht „Verlauf“ führt die Daten aus den Partitionen Prior und Changes zusammen. Sie bietet einen vollständigen zeitlichen Verlauf der Änderungen, ideal für Audits oder Verlaufsanalysen.
Name: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>
Die folgenden Kopfzeilenfelder werden zur Ansicht „Verlauf“ hinzugefügt.
| Feld | Typ | Beschreibung |
|---|---|---|
| hdr__key_hash | BINARY (20) | Hash aller primären Schlüssel des Datensatzes. |
| hdr__from_timestamp | TIMESTAMP | Der Zeitstempel, an dem die Änderung im Quellsystem vorgenommen wurde. Dies zeigt an, wann der Benutzer die Änderung ursprünglich vorgenommen hat. |
| hdr__to_timestamp | TIMESTAMP | Der Zeitstempel, an dem die Änderung im Quellsystem rückgängig gemacht oder aktualisiert wurde. |
| hdr__store | VARCHAR (10) |
Hier wird angegeben, wo sich der Datensatz befindet:
|
| hdr__operation | STRING (1) |
Neuester Vorgang dieses Datensatzes.
|
| hdr__deleted | BIT | Hier wird auf der Grundlage, ob hdr__operation auf D oder d steht, angegeben, ob der Datensatz vorläufig gelöscht wird. |
| hdr__was _current_from_timestamp | TIMESTAMP | Die Uhrzeit (UTC), zu der diese Zeile in die Partition Current aufgenommen wurde. Dies ist in der Regel der Zeitpunkt, an dem der Speicherauftrag ausgeführt und die Änderung übernommen wurde. |
| hdr__was _current_to_timestamp | TIMESTAMP | Die Uhrzeit (UTC), zu der die Zeile aus der Tabelle Current entfernt wurde, z. B. aufgrund einer neueren Version. |