O Hologres usa tabelas externas para acelerar consultas a dados do MaxCompute. Essa abordagem permite acessar e analisar diretamente os dados no MaxCompute, o que aumenta a eficiência das consultas e simplifica o fluxo de processamento de dados.
Permissões
Para acelerar consultas a dados do MaxCompute, conceda aos usuários as permissões necessárias para acessar projetos e tabelas do MaxCompute. Para mais informações, consulte Gerencie permissões de usuário usando comandos.
Mapeamento de tipos de dados
Os tipos de dados do MaxCompute têm correspondência direta com os tipos de dados do Hologres. Ao criar uma tabela, consulte Mapeamento de tipos de dados entre MaxCompute e Hologres.
Métodos
|
Método |
Casos de uso |
Principais recursos |
|
Acelere consultas em dados do MaxCompute com CREATE FOREIGN TABLE |
Ideal para acelerar um pequeno número de tabelas, consultar um subconjunto de colunas ou trabalhar com estruturas de tabela estáveis. |
Permite criar tabelas manualmente com definições flexíveis de colunas e comentários. |
|
Acelere consultas em dados do MaxCompute com IMPORT FOREIGN SCHEMA |
Mapeia todas as tabelas no nível de schema ou banco de dados. |
Sincroniza automaticamente as estruturas de tabela de um schema inteiro. |
|
Recomendado para um grande volume de tabelas ou tabelas com alterações estruturais frequentes (como adição, exclusão ou modificação de colunas). |
Detecta automaticamente alterações nas tabelas de source e oferece suporte a carregamentos sob demanda e completos. |
Acelere consultas com CREATE FOREIGN TABLE
Use a instrução CREATE FOREIGN TABLE para criar tabelas externas do MaxCompute. Essa instrução permite personalizar nomes de tabelas, selecionar colunas específicas e definir comentários. Esta seção apresenta exemplos de consulta a dados de tabelas não particionadas e particionadas do MaxCompute com CREATE FOREIGN TABLE.
Como alternativa, use o HoloWeb para criar uma tabela visualmente. Para mais informações, consulte Crie uma tabela externa do MaxCompute no HoloWeb .
Exemplo 1: Consultar uma tabela não particionada
-
Crie uma tabela não particionada no MaxCompute e importe os dados. Este exemplo usa a tabela
customerdo conjunto de dados públicoBIGDATA_PUBLIC_DATASET.tpcds_10tno MaxCompute como dados de amostra.Execute o comando a seguir para visualizar os dados na tabela de amostra.
-- Query the table in MaxCompute to check for data. SET odps.namespace.schema=true; SELECT * FROM BIGDATA_PUBLIC_DATASET.tpcds_10t.customer; -
No Hologres, crie uma tabela externa que mapeie a tabela de source do MaxCompute. Exemplo de instrução:
SET hg_enable_convert_type_for_foreign_table = true; CREATE FOREIGN TABLE customer ( "c_customer_sk" int8, "c_customer_id" text, "c_current_cdemo_sk" int8, "c_current_hdemo_sk" int8, "c_current_addr_sk" int8, "c_first_shipto_date_sk" int8, "c_first_sales_date_sk" int8, "c_salutation" text, "c_first_name" text, "c_last_name" text, "c_preferred_cust_flag" text, "c_birth_day" int8, "c_birth_month" int8, "c_birth_year" int8, "c_birth_country" text, "c_login" text, "c_email_address" text, "c_last_review_date_sk" text) SERVER odps_server OPTIONS (project_name 'BIGDATA_PUBLIC_DATASET.tpcds_10t', table_name 'customer');A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
SERVER
O servidor externo.
Use odps_server, um servidor externo pré-configurado no Hologres. Para mais informações sobre os princípios, consulte Postgres FDW.
project_name
-
Se o projeto do MaxCompute usar o modelo de três camadas, project_name especifica o nome do projeto e o nome do schema do MaxCompute no formato
odps_project_name.odps_schema_name.
-
Se o projeto do MaxCompute usar um modelo de duas camadas, project_name corresponde ao nome do projeto do MaxCompute.
Para mais informações sobre o modelo de três camadas, consulte Operações de schema.
table_name
Nome da tabela do MaxCompute a ser consultada.
-
-
Após criar a tabela externa, consulte-a no Hologres para recuperar dados do MaxCompute. Exemplo de instrução:
SELECT * FROM customer LIMIT 10;ImportanteSe ocorrer um erro de consulta, verifique se a conta usada para executar a consulta tem as permissões necessárias, como a permissão Selecione, na tabela do MaxCompute. Para mais informações, consulte Permissões.
Exemplo 2: Consultar uma tabela particionada
-
Prepare uma tabela particionada no MaxCompute e importe os dados. Este exemplo usa a tabela
ods_enterprise_share_trade_hdo conjunto de dados públicoBIGDATA_PUBLIC_DATASET.financeno MaxCompute como dados de amostra.Execute o comando a seguir para visualizar os dados na tabela de amostra.
-- Query data from a specific partition in MaxCompute. SET odps.namespace.schema=true; SELECT * FROM BIGDATA_PUBLIC_DATASET.finance.ods_enterprise_share_trade_h WHERE ds = '20170113'; -
No Hologres, crie uma tabela externa que mapeie a tabela particionada do MaxCompute. Exemplo de instrução:
CREATE FOREIGN TABLE public.foreign_ods_enterprise_share_trade_h ( "code" text, "name" text, "industry" text, "area" text, "pe" text, "outstanding" text, "totals" text, "totalassets" text, "liquidassets" text, "fixedassets" text, "reserved" text, "reservedpershare" text, "eps" text, "bvps" text, "pb" text, "timetomarket" text, "undp" text, "perundp" text, "rev" text, "profit" text, "gpr" text, "npr" text, "holders_num" text, "ds" text ) SERVER odps_server OPTIONS (project_name 'BIGDATA_PUBLIC_DATASET#finance', table_name 'ods_enterprise_share_trade_h'); comment on foreign table public.foreign_ods_enterprise_share_trade_h is 'Historical stock trading information'; comment on column public.foreign_ods_enterprise_share_trade_h."code" is 'Stock symbol'; comment on column public.foreign_ods_enterprise_share_trade_h."name" is 'Name'; comment on column public.foreign_ods_enterprise_share_trade_h."industry" is 'Industry'; comment on column public.foreign_ods_enterprise_share_trade_h."area" is 'Region'; comment on column public.foreign_ods_enterprise_share_trade_h."pe" is 'Price-to-earnings ratio'; comment on column public.foreign_ods_enterprise_share_trade_h."outstanding" is 'Outstanding shares'; comment on column public.foreign_ods_enterprise_share_trade_h."totals" is 'Total shares (in 10,000s)'; comment on column public.foreign_ods_enterprise_share_trade_h."totalassets" is 'Total assets (in 10,000s)'; comment on column public.foreign_ods_enterprise_share_trade_h."liquidassets" is 'Liquid assets'; comment on column public.foreign_ods_enterprise_share_trade_h."fixedassets" is 'Fixed assets'; comment on column public.foreign_ods_enterprise_share_trade_h."reserved" is 'Reserve fund'; comment on column public.foreign_ods_enterprise_share_trade_h."reservedpershare" is 'Reserve per share'; comment on column public.foreign_ods_enterprise_share_trade_h."eps" is 'Earnings per share'; comment on column public.foreign_ods_enterprise_share_trade_h."bvps" is 'Book value per share'; comment on column public.foreign_ods_enterprise_share_trade_h."pb" is 'Price-to-book ratio'; comment on column public.foreign_ods_enterprise_share_trade_h."timetomarket" is 'Time to market'; comment on column public.foreign_ods_enterprise_share_trade_h."undp" is 'Undistributed profit'; comment on column public.foreign_ods_enterprise_share_trade_h."perundp" is 'Undistributed profit per share'; comment on column public.foreign_ods_enterprise_share_trade_h."rev" is 'YoY revenue (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."profit" is 'YoY profit (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."gpr" is 'Gross profit margin (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."npr" is 'Net profit margin (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."holders_num" is 'Number of shareholders'; -
Consulte a tabela particionada do MaxCompute no Hologres.
-
Consulte as primeiras 10 linhas de dados. Exemplo de instrução SQL:
SELECT * FROM foreign_ods_enterprise_share_trade_h limit 10; -
Consulte dados em uma partição específica. Exemplo de instrução SQL:
SELECT * FROM foreign_ods_enterprise_share_trade_h WHERE ds = '20170113';
ImportanteSe ocorrer um erro de consulta, verifique se a conta usada para executar a consulta tem as permissões necessárias, como a permissão Selecione, na tabela do MaxCompute. Para mais informações, consulte Permissões.
-
Acelere consultas com IMPORT FOREIGN SCHEMA
Para criar várias tabelas externas do MaxCompute, use a instrução IMPORT FOREIGN SCHEMA. Para mais informações, consulte IMPORT FOREIGN SCHEMA.
Acelere consultas com Auto Load
Se precisar acelerar um grande número de tabelas externas ou se os schemas das tabelas de source no MaxCompute mudarem frequentemente (por exemplo, colunas excluídas, reordenadas ou com tipos de dados modificados), use o recurso Auto Load. Esse recurso carrega dados do MaxCompute automaticamente, seja sob demanda ou completamente. Ele elimina a necessidade de alterar manualmente a estrutura da tabela externa, aumentando a eficiência das consultas. Para mais informações, consulte Auto Load para tabelas externas.