CREATE EXTERNAL TABLE crée une table externe dans un schéma externe issu de Data Lake Formation 2.0 (DLF 2.0). Seules les tables au format Apache Paimon sont prises en charge.
Limitations
Hologres V3.0 ou version ultérieure est requis.
Les tables externes doivent résider dans un schéma externe issu de DLF 2.0.
Seul le format de table Apache Paimon est pris en charge.
Seuls les formats de fichier ORC et Parquet sont pris en charge.
Syntaxe
CREATE EXTERNAL TABLE [IF NOT EXISTS] <ext_db_name>.<ext_schema_name>.<ext_table_name>
(
[{
<col_name> <col_type> [<col_constraints> [, ...]] |
<table_constraints> [, ...]
}]
)
[LOGICAL PARTITION BY LIST(<col_name> [, ...])]
[
WITH
(
"<property>" = '<value>' [, ...]
)
];
Paramètres de la clause WITH
| Paramètre | Description | Exemple |
|---|---|---|
table_format |
Format de la table externe. Seule la valeur paimon est prise en charge. |
"table_format" = 'paimon' |
file_format |
Format des fichiers de la table externe. Valeurs valides : orc, parquet. |
"file_format" = 'orc' |
bucket |
Nombre de buckets. Les données d'une table non partitionnée, ou celles de chaque partition d'une table partitionnée, sont distribuées entre les buckets pour permettre des lectures et écritures concurrentes. Pour plus de détails, consultez la section Data Distribution. | "bucket" = '1' |
bucket-key |
Colonne utilisée pour distribuer les données dans les buckets. | "bucket-key" = 'id' |
changelog-producer |
Méthode de génération des journaux de modifications (changelogs) sur la table. Ces journaux capturent l'intégralité des enregistrements INSERT, DELETE et UPDATE, à l'instar d'un journal binaire de base de données, et permettent leur consommation en continu par les systèmes en aval. Pour plus de détails, consultez la section Changelog Producer. | "changelog-producer" = 'input' |
Exemples
Créer une table partitionnée dans DLF 2.0
L'exemple suivant crée une table Apache Paimon en mode append-only avec une partition logique basée sur la colonne created_at.
CREATE EXTERNAL TABLE ext_db_dlf.ext_schema_dlf.ext_par_table_dlf(
id TEXT,
created_at BIGINT, -- logical partition key
type TEXT,
actor_id TEXT,
actor_login TEXT,
repo_id TEXT,
repo_name TEXT,
org TEXT,
org_login TEXT
)
LOGICAL PARTITION BY LIST(created_at)
WITH (
"file_format" = 'orc',
"bucket" = 6,
"bucket-key" = 'id' -- distribute data by id across 6 buckets
);
Créer une table non partitionnée dans DLF 2.0
L'exemple suivant crée une table Apache Paimon avec clé primaire. Le paramètre changelog-producer spécifie la méthode de génération des journaux de modifications afin de permettre leur consommation en mode streaming par les systèmes en aval.
CREATE EXTERNAL TABLE openlake_win.github_events.gh_event_ods(
id TEXT,
created_at BIGINT,
type TEXT,
actor_id TEXT,
actor_login TEXT,
repo_id TEXT,
repo_name TEXT,
org TEXT,
org_login TEXT,
PRIMARY KEY(id)
) WITH (
"changelog-producer" = 'input', -- generate changelogs for streaming consumers
"bucket" = 6,
"bucket-key" = 'id'
);
Autres opérations
Interroger l'instruction de création de la table
SELECT * FROM hologres.hg_dump_script_external('<ext_db_name>.<ext_schema_name>.<ext_table_name>');
Interroger les propriétés des colonnes et des partitions
SELECT * FROM hologres.hg_external_columns('<ext_db_name>', '<ext_schema_name>', '<ext_table_name>');
Interroger toutes les tables d'un schéma externe
SELECT * FROM hologres.hg_external_tables('<ext_db_name>', '<ext_schema_name>');
Actualiser les métadonnées d'une table externe
REFRESH CACHE FOR External TABLE <ext_db_name>.<ext_schema_name>.<ext_table_name> WITH( cache_level = 'metadata');