O comando CREATE EXTERNAL TABLE cria uma tabela externa em um schema externo com origem no Data Lake Formation 2.0 (DLF 2.0). Há suporte apenas para tabelas no formato Apache Paimon.
Limitações
Requer Hologres V3.0 ou superior.
As tabelas externas devem residir em um schema externo com origem no DLF 2.0.
Há suporte apenas ao formato de tabela Apache Paimon.
Somente os formatos de arquivo ORC e Parquet são aceitos.
Sintaxe
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>' [, ...]
)
];
Parâmetros da cláusula WITH
|
Parâmetro |
Descrição |
Exemplo |
|
|
Formato da tabela externa. Apenas |
|
|
|
Formato de arquivo da tabela externa. Valores válidos: |
|
|
|
Número de buckets. Os dados de uma tabela não particionada, ou de cada partição de uma tabela particionada, distribuem-se entre os buckets para permitir leituras e gravações simultâneas. Para obter detalhes, consulte Data Distribution. |
|
|
|
Coluna usada para distribuir os dados nos buckets. |
|
|
|
Método de geração de changelogs na tabela. Os changelogs capturam registros completos de INSERT, DELETE e UPDATE — semelhantes a um log binário de banco de dados — e ativam o consumo downstream em streaming. Para obter mais informações, consulte Changelog Producer. |
|
Exemplos
Crie uma tabela particionada no DLF 2.0
O exemplo a seguir cria uma tabela Apache Paimon do tipo append-only com partição lógica em 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
);
Crie uma tabela não particionada no DLF 2.0
O exemplo a seguir cria uma tabela de chave primária Apache Paimon. O parâmetro changelog-producer define o método de geração de changelogs para permitir o consumo downstream em modo streaming.
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'
);
Outras operações
Consultar a instrução de criação da tabela
SELECT * FROM hologres.hg_dump_script_external('<ext_db_name>.<ext_schema_name>.<ext_table_name>');
Consultar propriedades de colunas e partições
SELECT * FROM hologres.hg_external_columns('<ext_db_name>', '<ext_schema_name>', '<ext_table_name>');
Listar todas as tabelas em um schema externo
SELECT * FROM hologres.hg_external_tables('<ext_db_name>', '<ext_schema_name>');
Atualize os metadados de uma tabela externa
REFRESH CACHE FOR External TABLE <ext_db_name>.<ext_schema_name>.<ext_table_name> WITH( cache_level = 'metadata');