O comando CREATE FOREIGN TABLE mapeia uma tabela externa do Hologres para uma tabela em uma fonte de dados conectada, como MaxCompute, Object Storage Service (OSS), Data Lake Formation (DLF) ou outra instância do Hologres. Assim, é possível consultar esses dados com SQL padrão sem importá-los previamente.
O servidor externo odps_server já vem pré-configurado no Hologres. Não é necessário criá-lo.
Sintaxe
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name (
{ column_name data_type }
[, ... ]
)
SERVER odps_server
OPTIONS (
project_name '<odps_project_name>[#<odps_schema_name>]',
table_name '<odps_table_name>'
)
Parâmetros
Parâmetros obrigatórios
|
Parâmetro |
Descrição |
|
|
Nome da tabela externa a ser criada no Hologres. |
|
|
Servidor externo que conecta ao MaxCompute. O |
|
|
Pares chave-valor que identificam a tabela de origem no MaxCompute. Consulte a seção OPTIONS abaixo para mais detalhes. |
OPTIONS
O formato de project_name varia conforme o modelo do projeto no MaxCompute: duas ou três camadas.
Modelo de duas camadas (projeto → tabela):
|
Chave |
Valor |
|
|
Nome do projeto no MaxCompute. Exemplo: |
|
|
Nome da tabela do MaxCompute a ser consultada. Exemplo: |
Modelo de três camadas (projeto → schema → tabela):
|
Chave |
Valor |
|
|
Nome do projeto e do schema no MaxCompute, unidos por |
|
|
Nome da tabela do MaxCompute a ser consultada. Exemplo: |
Os tipos de dados de todas as colunas na tabela externa do Hologres devem corresponder exatamente aos tipos das colunas equivalentes na tabela do MaxCompute.
Observações de uso
O modelo de três camadas exige o Hologres V1.3 ou superior. Se a versão da sua instância for anterior à V1.3, atualize-a antes de criar tabelas externas para projetos desse modelo. Caso a atualização falhe, consulte Erros comuns durante a preparação para atualização ou entre em contato com o suporte pelo grupo do DingTalk do Hologres.
O uso da sintaxe do modelo de duas camadas em um projeto de três camadas retorna o seguinte erro:
failed to import foreign schema:Table not found - table_xxxSe a tabela do MaxCompute tiver uma coluna com tipo de dados não suportado, ainda será possível consultar as demais colunas compatíveis, desde que você não selecione a coluna incompatível.
O tipo
DATETIMEusa o fuso horário UTC+8. O intervalo de valores vai de 1º de janeiro de 0000 a 31 de dezembro de 9999, com precisão de milissegundos.O tipo
TIMESTAMPTZinclui o deslocamento do fuso horário. Seu intervalo abrange de 4713 a.C. a 294276 d.C., com precisão de microssegundos.
Exemplos
Consultar dados diretamente de uma tabela externa
Crie uma tabela externa e consulte dados do MaxCompute sem importá-los.
Modelo de duas camadas:
CREATE FOREIGN TABLE src_pt (
id text,
pt text
)
SERVER odps_server
OPTIONS (project_name '<odps_project>', table_name '<odps_table>');
SELECT * FROM src_pt;
Modelo de três camadas:
CREATE FOREIGN TABLE src_pt (
id text,
pt text
)
SERVER odps_server
OPTIONS (project_name '<odps_project>#<odps_schema>', table_name '<odps_table>');
SELECT * FROM src_pt;
Para mais informações, consulte Acelerar consultas em dados do MaxCompute com tabelas externas.
Importar dados e depois consultar
Importe os dados do MaxCompute para uma tabela interna do Hologres e, em seguida, consulte-os.
-- Step 1: Create a foreign table pointing to the MaxCompute source
CREATE FOREIGN TABLE src_pt_odps (
id text,
pt text
)
SERVER odps_server
OPTIONS (project_name '<odps_project>', table_name '<odps_table>');
-- Step 2: Create an internal Hologres table to hold the imported data
BEGIN;
CREATE TABLE src_pt (
id text,
pt text
);
COMMIT;
-- Step 3: Import data from MaxCompute into the internal table
INSERT INTO src_pt SELECT * FROM src_pt_odps;
Para mais informações, consulte Importar dados do MaxCompute usando SQL.
Mapeamento de tipos de dados
Para ver o mapeamento completo entre os tipos de dados do MaxCompute e do Hologres, consulte Mapeamento de tipos de dados entre MaxCompute e Hologres.