Pour inspecter, auditer ou déboguer des Dynamic Tables dans Hologres, vous devez récupérer les définitions DDL, répertorier toutes les Dynamic Tables d’une instance, tracer la lignée des données, vérifier la consommation de stockage et gérer les tables d’état générées par l’actualisation incrémentielle. Cette rubrique détaille ces tâches.
| Tâche | Description |
|---|---|
| Consulter le schéma d’une Dynamic Table | Récupérez l’instruction DDL d’une Dynamic Table spécifique. |
| Répertorier les Dynamic Tables de l’instance actuelle | Interrogez toutes les Dynamic Tables et leurs modes d’actualisation. |
| Consulter la lignée des données | Tracez les dépendances en amont et en aval à l’aide de la console ou du SQL. |
| Consulter les détails de stockage | Vérifiez la taille de stockage d’une Dynamic Table. |
| Gérer les tables d’état | Comprenez et surveillez la table d’état générée pour l’actualisation incrémentielle. |
Consulter le schéma d’une Dynamic Table
Utilisez hg_dump_script pour récupérer l’instruction DDL d’une Dynamic Table.
SELECT hg_dump_script('[<schema_name>.]<table_name>');
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
schema_name |
Non | Nom du schéma qui contient la Dynamic Table. |
table_name |
Oui | Nom de la Dynamic Table. |
Répertorier les Dynamic Tables de l’instance actuelle
La table système hologres.hg_dynamic_table_properties stocke les métadonnées de toutes les Dynamic Tables de l’instance actuelle.
Pour répertorier toutes les Dynamic Tables et leurs modes d’actualisation :
SELECT dynamic_table_name, property_value
FROM hologres.hg_dynamic_table_properties
WHERE property_key = 'refresh_mode';
Pour afficher toutes les métadonnées d’une Dynamic Table spécifique :
SELECT *
FROM hologres.hg_dynamic_table_properties
WHERE dynamic_table_name = '<dynamic_table_name>';
Colonnes de hg_dynamic_table_properties
| Colonne | Description |
|---|---|
dynamic_table_name |
Nom de la Dynamic Table. |
dynamic_table_namespace |
Schéma qui contient la Dynamic Table. |
property_key |
Nom de la propriété de métadonnée. Par exemple, refresh_mode. |
property_value |
Valeur de la propriété. |
Consulter la lignée des données
La lignée des données indique les tables sources (en amont) d’une Dynamic Table ainsi que les tables ou Dynamic Tables qui en dépendent (en aval). Elle s’avère utile pour diagnostiquer les retards d’actualisation ou évaluer l’impact des modifications de schéma sur un pipeline.
Visualisation
Consultez la lignée sous forme de graphique interactif dans HoloWeb ou DataWorks Data Map :
HoloWeb : Dans la console HoloWeb, accédez à Table Metadata Management > Dynamic Table Management. Dans l’onglet Lineage Information, consultez le graphique de lignée de la Dynamic Table.
DataWorks Data Map : DataWorks Data Map collecte et affiche automatiquement la lignée des données des Dynamic Tables. Pour plus d’informations, consultez Lignée des données.
Méthode SQL
Toutes les requêtes de lignée utilisent la vue système hologres.hg_dynamic_table_dependencies, qui enregistre les dépendances en amont de chaque Dynamic Table.
Colonnes de hg_dynamic_table_dependencies
| Colonne | Description |
|---|---|
dynamic_table_namespace |
Schéma qui contient la Dynamic Table. |
dynamic_table_name |
Nom de la Dynamic Table. |
table_namespace |
Schéma de la dépendance en amont. |
table_name |
Nom de la dépendance en amont. |
dependency |
Type de dépendance. La valeur internal_table indique une dépendance système interne ; excluez cette valeur des requêtes de lignée. |
Consulter la lignée des données d’une seule Dynamic Table
SELECT
d.*,
CASE WHEN k.dynamic_table_namespace IS NOT NULL THEN
'd'
ELSE
c.relkind
END
FROM
hologres.hg_dynamic_table_dependencies d
LEFT JOIN pg_namespace n ON n.nspname = d.table_namespace
LEFT JOIN pg_class c ON c.relnamespace = n.oid
AND c.relname = d.table_name
LEFT JOIN (
SELECT
dynamic_table_namespace,
dynamic_table_name
FROM
hologres.hg_dynamic_table_properties
GROUP BY
1,
2) k ON k.dynamic_table_namespace = d.table_namespace
AND k.dynamic_table_name = d.table_name
WHERE
d.dynamic_table_namespace = '<schema_name>'
AND d.dynamic_table_name = '<dynamic_table_name>'
AND d.dependency <> 'internal_table';
Consulter la lignée des données de toutes les Dynamic Tables
Supprimez les filtres dynamic_table_namespace et dynamic_table_name pour renvoyer les dépendances de toutes les Dynamic Tables de l’instance :
SELECT
d.*,
CASE WHEN k.dynamic_table_namespace IS NOT NULL THEN
'd'
ELSE
c.relkind
END
FROM
hologres.hg_dynamic_table_dependencies d
LEFT JOIN pg_namespace n ON n.nspname = d.table_namespace
LEFT JOIN pg_class c ON c.relnamespace = n.oid
AND c.relname = d.table_name
LEFT JOIN (
SELECT
dynamic_table_namespace,
dynamic_table_name
FROM
hologres.hg_dynamic_table_properties
GROUP BY
1,
2) k ON k.dynamic_table_namespace = d.table_namespace
AND k.dynamic_table_name = d.table_name
WHERE
d.dependency <> 'internal_table';
Comprendre base_table_type
L’expression CASE déduit base_table_type à partir de deux sources : si la dépendance est elle-même une Dynamic Table (trouvée dans hg_dynamic_table_properties), le type est 'd' ; sinon, le type provient de pg_class.relkind. Le tableau suivant décrit les valeurs possibles.
| Valeur | Type de table |
|---|---|
r |
Table ordinaire |
v |
Vue |
m |
Vue matérialisée |
f |
Table étrangère |
d |
Dynamic Table |
Consulter les détails de stockage
Utilisez la fonction hologres.hg_relation_size pour consulter la taille et les détails de stockage d’une Dynamic Table. Pour plus d’informations, consultez Consulter les détails de stockage d’une table.
Gérer les tables d’état
Lorsqu’une Dynamic Table utilise l’actualisation incrémentielle, Hologres crée automatiquement une table d’état au niveau sous-jacent pour accélérer le calcul des données. La table d’état stocke les résultats d’agrégation.
Comportements clés :
La table d’état est stockée dans le groupe de tables par défaut et ne prend pas en charge le resharding.
Si vous basculez le mode d’actualisation de l’incrémentiel vers l’actualisation complète, la table d’état est vidée par défaut.
Pour plus d’informations sur l’actualisation incrémentielle et l’actualisation complète, consultez Dynamic Table.
Consulter l’utilisation du stockage de la table d’état
Exécutez la commande SQL suivante pour obtenir la taille de stockage de la table d’état. Le stockage est facturé au même tarif qu’une table standard. Pour plus d’informations, consultez Présentation de la facturation.
SELECT pg_size_pretty(hologres.hg_dynamic_table_state_size('<dynamic_table_name>'));