À partir de la version V3.0, Hologres prend en charge l'actualisation manuelle ou automatique des données des tables dynamiques via l'instruction REFRESH DYNAMIC TABLE.
Utilisez REFRESH DYNAMIC TABLE pour mettre à jour une table dynamique avec les dernières données à la demande, sans attendre la prochaine actualisation automatique planifiée. Cette approche est utile pour des mises à jour ponctuelles ou lorsque l'intervalle d'actualisation de la table est long et que vous avez besoin des données immédiatement.
Hologres prend en charge deux modes d'actualisation :
Actualisation manuelle : Exécutez
REFRESH DYNAMIC TABLEune fois.Actualisation automatique : Configurez une politique d'actualisation dans l'instruction
CREATE DYNAMIC TABLE. L'actualisation s'exécute selon une planification.
Syntaxe
-- Supported in all versions
REFRESH DYNAMIC TABLE [<schema_name>.]<table_name>;
-- Supported from V3.1
REFRESH [OVERWRITE] DYNAMIC TABLE [<schema_name>.]<table_name>
[PARTITION (<partition_key> = '<partition_value>')]
[WITH (
refresh_mode = '{full|incremental}',
cascading = {true|false}
)];
Paramètres
| Paramètre | Description |
|---|---|
schema_name |
Nom du schéma contenant la table. |
table_name |
Nom de la table non partitionnée ou de la table enfant partitionnée à actualiser. |
OVERWRITE |
Efface l'état actuel avant d'exécuter l'actualisation. Pour le mode d'actualisation incrémentielle, cela relance l'actualisation depuis le début sans conserver l'état précédent. Pris en charge à partir de la version V3.1. |
PARTITION (<partition_key> = '<partition_value>') |
Spécifie la partition à actualiser. partition_key correspond à la clé de partition ; partition_value représente la valeur de partition cible. Requis pour les tables partitionnées. Une seule partition peut être actualisée par instruction. |
refresh_mode = '{full|incremental}' |
Remplace le mode d'actualisation pour cette opération. Pris en charge à partir de la version V3.1. |
cascading = {true|false} |
Indique si l'actualisation de cette table dynamique déclenche également l'actualisation de ses tables dynamiques en aval. Pris en charge à partir de la version V5.0. Valeurs valides :
REFRESH DYNAMIC TABLE retourne dès que cette table est actualisée et n'attend pas les actualisations en aval. Ce paramètre prend effet uniquement lorsque les dépendances en aval sont établies par freshness = 'upstream'. Pour plus d'informations, consultez Créer une table dynamique. |
computing_resource = '{serverless|local|<warehouse_name>}' |
Spécifie la ressource de calcul pour l'actualisation. Par défaut : serverless. Consultez Définir les ressources de calcul pour l'actualisation des tables dynamiques pour plus de détails. |
Valeurs computing_resource :
| Valeur | Description |
|---|---|
serverless |
Utilise des ressources serverless. Valeur par défaut. |
local |
Utilise les ressources de l'instance. |
<warehouse_name> |
Utilise l'entrepôt virtuel spécifié. Pris en charge à partir de la version V4.0.7. Pour les actualisations manuelles, utilise par défaut l'entrepôt virtuel actuellement connecté si non spécifié. Pour les actualisations automatiques, utilise l'entrepôt virtuel connecté lors de la création de la table dynamique. |
Comportement d'actualisation par instruction
Lorsqu'une table dynamique dispose d'un mode d'actualisation établi (incrémentiel ou complet), l'effet de chaque instruction d'actualisation manuelle dépend du mode actuel de la table.
Les combinaisons incompatibles — telles que la demande d'une actualisation incrémentielle sur une table en actualisation complète, ou vice versa — renvoient une erreur, car les deux modes gèrent les modifications de données de manière fondamentalement incompatible.
| Instruction | Table en mode d'actualisation incrémentielle | Table en mode d'actualisation complète |
|---|---|---|
REFRESH |
Exécute une actualisation incrémentielle. | Exécute une actualisation complète. |
REFRESH OVERWRITE |
Relance l'actualisation incrémentielle sans conserver l'état précédent. | Exécute une actualisation complète. |
REFRESH WITH (refresh_mode = 'full') |
Renvoie une erreur. | Exécute une actualisation complète. |
REFRESH WITH (refresh_mode = 'incremental') |
Exécute une actualisation incrémentielle. | Renvoie une erreur. |
REFRESH OVERWRITE WITH (refresh_mode = 'incremental') |
Relance l'actualisation incrémentielle sans conserver l'état précédent. | Renvoie une erreur. |
REFRESH OVERWRITE WITH (refresh_mode = 'full') |
Exécute une actualisation complète et arrête l'actualisation incrémentielle. | Exécute une actualisation complète. |
Limitations
Tables partitionnées régulières
Seule la syntaxe de base
REFRESH DYNAMIC TABLEest prise en charge.L'actualisation de la table parent n'est pas prise en charge. Actualisez chaque table enfant individuellement.
Tables partitionnées logiques
Si
refresh_modeest spécifié dans une actualisation manuelle, le système modifie le mode d'actualisation de cette partition vers le mode spécifié. L'actualisation automatique ne s'exécute plus pour cette partition par la suite.Après l'exécution de
OVERWRITE, l'état de la partition est effacé et la partition spécifiée est entièrement actualisée.
Général
Pour les tables partitionnées, vous devez spécifier la partition. Une seule partition peut être actualisée par instruction.