Accéder au contenu principal Passer au contenu complémentaire

Architecture des jeux des données dans un Qlik Open Lakehouse

Lorsque vous générez des jeux de données dans un Qlik Open Lakehouse, des tables de stockage, des tables de modifications et des vues sont automatiquement générées par Qlik Talend Data Integration. Vous pouvez interroger ces vues pour accéder aux données actuelles et historiques stockées au format de table ouverte Iceberg.

L'interface utilisateur intuitive et assistée vous aide à créer, modéliser et exécuter des pipelines de données. Vous pouvez générer automatiquement des schémas pour les magasins de données opérationnelles (Operational Data Stores ou ODS) et les magasins de données historiques (Historical Data Stores ou HDS), sans codage manuel.

Architecture d'un pipeline de données Qlik Open Lakehouse à l'aide de Passerelle de données Qlik - Déplacement des données. Les données sont temporairement déposées dans S3 et stockées dans un Open Lakehouse Iceberg. Éventuellement, comme indiqué ci-dessous, les tables peuvent être mises en miroir dans un data warehouse.

Schémas

Les artefacts sont générés dans un schéma interne et un schéma de tâche de données.

  • Le schéma interne contient une table physique avec plusieurs partitions.

  • Le schéma de tâche de données contient les vues que vous pouvez utiliser pour consommer les données.

    Lorsqu'un schéma est associé à plus d'une tâche de données, chaque tâche de données doit utiliser un préfixe unique pour les tables et les vues. Vous pouvez définir le préfixe dans les paramètres de tâche de données.

Les conflits de nommage sont recherchés uniquement dans les schémas internes. Pour les autres schémas, vous devez vous assurer qu'il n'existe aucun conflit de nommage dans les noms de table. La bonne pratique consiste à donner au schéma interne le même nom que celui du schéma de tâche de données en y ajoutant _internal. Cela garantit que chaque combinaison de schéma et de préfixe est unique.

Note InformationsL'ensemble des tables et vues sont gérées par Qlik Talend Data Integration. N'altérez pas les données à l'aide d'autres outils.

Tables

Pour chaque table source, une table est créée dans le schéma interne avec le suffixe _internal via le format :

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

Cette table contient cinq partitions, chacune ayant une fonction distincte dans la manière dont les données sont traitées et stockées. Chaque partition exploite un sous-ensemble de colonnes de la table en fonction de son rôle dans le cycle de vie des données.

Note InformationsLa table du schéma interne peut être modifiée sans préavis. Dans la mesure du possible, vous devez principalement utiliser les vues pour consommer des données.

Le jeu de données interne est structuré de sorte à gérer efficacement les données entrantes de votre système source, en supportant l'ingestion en temps réel et le suivi historique. Le flux de données est géré par plusieurs partitions spécialisées, chacune étant décrite ci-dessous :

  • Partition Changes : ingestion en temps réel

    Toutes les modifications provenant du système source (insertions, mises à jour et suppressions) commencent par être ajoutées à la partition Changes.

    • Jouant le rôle de journal des modifications brut, la partition fournit un flux complet d'activité source avant toute transformation.

    • À chaque modification est affecté un type (I, U ou D), qui indique la manière dont elle est traitée.

    • Les événements sont capturés auprès de la source à mesure qu'ils se produisent. La partition est mise à jour quasiment en temps réel.

    • La partition Changes est disponible lorsque les paramètres suivants sont appliqués dans la tâche Dépôt temporaire de données dans un lac.

      • Dans l'onglet Général, la Méthode de mise à jour est définie sur CDC.

      • Le Chargement complet est activé.

  • Partition Asset_state : suivi de l'état d'avancement

    À mesure de l'ingestion des modifications, la partition Asset-state consigne deux horodatages clés :

    • La date à laquelle les modifications ont été ajoutées pour la dernière fois à la partition Changes.

    • La date à laquelle les modifications ont été appliquées pour la dernière fois à la partition Current.

    Cela permet d'avoir une visibilité totale sur le pipeline de synchronisation et facilite la surveillance ou le dépannage.

  • Partition Current (ODS) : réplique la plus récente de la source

    Les modifications de la partition Changes sont périodiquement appliquées à la partition Current afin de maintenir une copie des données sources qui soit à jour et optimisée pour les requêtes.

    • Une tâche d'arrière-plan s'exécute automatiquement pour appliquer ces mises à jour. Elle est basée sur le volume des modifications accumulées et non sur une planification fixe.

    • Le Chargement complet initial est écrit directement dans la partition Current.

    • Cette partition reflète l'état actuel des données et est conçue pour garantir l'efficacité des requêtes.

  • Partition Prior (HDS) : données historiques

    Lorsqu'un enregistrement est mis à jour ou supprimé dans la partition Current, une copie de la version précédente est écrite dans la partition Prior. 

    • Les enregistrements contiennent des métadonnées, notamment l'historique des modifications et la plage de dates de validité des données.

    • Ce comportement supporte la dimension à changement lent de type 2 (SCD2).

    • La partition Prior est disponible lorsque l'option Conserver les enregistrements historiques et l'archive des enregistrements des modifications est activée dans l'onglet Général des paramètres de la tâche de données de stockage.

    • Lorsqu'une version mise à jour d'un enregistrement entre dans la partition Current, l'enregistrement précédent est déplacé vers la partition Prior à des fins de suivi de l'historique.

  • Partition Reload

    La partition Reload sert de zone intermédiaire temporaire lors des chargements complets manuels ou planifiés :

    • Les nouvelles données commencent par être écrites dans la partition Reload.

    • Des tâches de maintenance régulières effacent toutes les modifications en attente avant qu'elles ne soient mises en pause.

    • Les données sont comparées à la partition Current et seules les différences sont déplacées vers la partition Current.

    • Une fois l'opération terminée, la partition Reload est effacée.

    Ce processus garantit une perturbation minimale du jeu des données principal lors des opérations de chargement complet.

Partition Current

Champ Type Description
hdr__key_hash VARBINARY (20) Hachage de toutes les clés primaires des enregistrements. Le format de hachage est SHA1. Les colonnes sont séparées par un caractère de retour arrière.
hdr__from_timestamp TIMESTAMP

Horodatage au format UTC :

  • Pour les données extraites d'un chargement complet, il s'agit de l'heure de début du chargement complet.

  • Pour une modification provenant de la partition Changes, il s'agit du champ d'horodatage de l'enregistrement.

hdr__operation VARCHAR (1)

Dernière opération de cet enregistrement.

  • D - supprimé de la partition Changes.

  • U - mis à jour de la partition Changes.

  • I - inséré de la partition Changes.

  • L - inséré par la tâche de chargement complet.

  • d - supprimé de Comparer et appliquer.

  • u - mis à jour de Comparer et appliquer.

  • i - inséré de Comparer et appliquer.

hdr__inserted_timestamp TIMESTAMP Horodatage UTC du premier ajout de la clé. En cas d'utilisation du chargement complet, il s'agit de l'heure de début du chargement complet.
hdr__modified_timestamp TIMESTAMP Horodatage UTC de la dernière mise à jour.

Partition Prior

Champ Type Description
hdr__key_hash VARBINARY (20) Hachage de toutes les clés primaires des enregistrements.
hdr__from_timestamp TIMESTAMP Horodatage au format UTC.
hdr__to_timestamp TIMESTAMP Horodatage au format UTC.
hdr__operation STRING (1)

Dernière opération de cet enregistrement.

  • D - supprimé de la partition Changes.

  • U - mis à jour de la partition Changes.

  • I - inséré de la partition Changes.

  • L - inséré par la tâche de chargement complet.

  • d - supprimé de Comparer et appliquer.

  • u - mis à jour de Comparer et appliquer.

  • i - inséré de Comparer et appliquer.

hdr__was_current_from_timestamp TIMESTAMP Horodatage UTC de la première fois où l'enregistrement est apparu comme actuel.
hdr__was_current_to_timestamp TIMESTAMP Horodatage UTC de la dernière fois où l'enregistrement est apparu comme actuel.

Partition Changes

Champ Type Description
hdr__change_identifier VARCHAR (50)

L'identifiant de la modification est une chaîne composée de deux parties :

  • Horodatage du début d'exécution par lots en millisecondes depuis le 1/1/1970 (chaîne de 10 chiffres).

  • Séquence de modification de la passerelle de réplication (35 caractères).

hdr__operation VARCHAR (1)

Dernière opération de cet enregistrement.

  • D - supprimé de la partition Changes.

  • U - mis à jour de la partition Changes.

  • I - inséré de la partition Changes.

  • L - inséré par la tâche de chargement complet.

  • d - supprimé de Comparer et appliquer.

  • u - mis à jour de Comparer et appliquer.

  • i - inséré de Comparer et appliquer.

hdr__timestamp TIMESTAMP Horodatage au format UTC.
hdr__key_hash BINARY (20) Hachage de toutes les clés primaires des enregistrements.
hdr__inserted_timestamp TIMESTAMP Horodatage UTC de l'heure à laquelle la modification a été traitée par Qlik.

Partition Asset_state

Champ Type Description
hdr__apply_change_identifier VARCHAR (50) Identificateur de modification de la dernière modification appliquée à la partition Current.
hdr__copy_change_identifier VARCHAR (50) Identificateur de modification de la dernière modification ajoutée à la partition Changes.

Partition Reload

Les colonnes utilisées par la partition Reload sont identiques à celles de la partition Current.

Vues

Toutes les vues créées sont mises à jour quasiment en temps réel. Les vues suivantes sont disponibles pour simplifier le lancement de requêtes et la génération de rapports :

Current

La vue Current reflète l'état le plus récent des données. Cette vue représente une réplique de la table source, mise à jour quasiment en temps réel. Elle fusionne les données des partitions Current et Changes.

Nom : <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>

Aucune colonne d'en-tête n'est ajoutée à la structure de la table.

Historique

Une vue Historique est générée dans le schéma de ressources de données pour chaque table source sélectionnée lorsque Historique est activé dans les paramètres de la tâche de données. La vue Historique fusionne les données des partitions Prior et Changes. Elle fournit une chronologie complète des modifications, idéale pour l'audit ou l'analyse historique.

Nom : <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>

Les champs d'en-tête suivants sont ajoutés à la vue Historique :

Champ Type Description
hdr__key_hash BINARY (20) Hachage de toutes les clés primaires des enregistrements.
hdr__from_timestamp TIMESTAMP Horodatage du moment où la modification s'est produite dans le système source. Cela reflète le moment où l'utilisateur a initialement effectué la modification.
hdr__to_timestamp TIMESTAMP Horodatage du moment où la modification a été annulée ou mise à jour dans le système source.
hdr__store VARCHAR (10)

Cela indique l'emplacement de l'enregistrement :

  • CURRENT : si l'enregistrement se trouve dans la partition Current.

  • PRIOR : si l'enregistrement se trouve dans la partition Prior avec les données historiques.

hdr__operation STRING (1)

Dernière opération de cet enregistrement.

  • D - supprimé de la partition Changes.

  • U - mis à jour de la partition Changes.

  • I - inséré de la partition Changes.

  • L - inséré par la tâche de chargement complet.

  • d - supprimé de Comparer et appliquer.

  • u - mis à jour de Comparer et appliquer.

  • i - inséré de Comparer et appliquer.

hdr__deleted BIT Indique si la suppression de l'enregistrement est réversible, selon que l'opération hdr_operation est D ou d.
hdr__was _current_from_timestamp TIMESTAMP Heure (UTC) à laquelle cette ligne est arrivée dans la partition Current. Il s'agit généralement du moment où la tâche de stockage a été exécutée et où la modification a été appliquée.
hdr__was _current_to_timestamp TIMESTAMP Heure (au format UTC) à laquelle la ligne a été retirée de la table Current, par exemple en raison d'une version plus récente.

Note InformationsLes vues Current et Historique s'appuient sur la partition Changes et sont toujours quasiment en temps réel. Toutefois, si les performances de requête sont lentes, cela peut être dû à un grand nombre de modifications qui n'ont pas encore été appliquées dans la partition Current ou Prior. Les deltas non fusionnés nécessitent plus de traitement au moment de la requête, ce qui ralentit l'accès.

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 – faites-le-nous savoir.