Hologres utiliza tablas externas para acelerar las consultas sobre datos de MaxCompute. Este enfoque le permite acceder y analizar directamente los datos en MaxCompute, lo que mejora la eficiencia de las consultas y simplifica el flujo de trabajo de procesamiento de datos.
Permisos
Para acelerar las consultas sobre datos de MaxCompute, debe otorgar a los usuarios los permisos obligatorios para acceder a los proyectos y tablas de MaxCompute. Para obtener más información, consulte Manage user permissions by using commands.
Mapeo de tipos de datos
Los tipos de datos de MaxCompute se corresponden uno a uno con los tipos de datos de Hologres. Al crear una tabla, consulte Data type mapping between MaxCompute and Hologres.
Métodos
|
Método |
Casos de uso |
Funciones clave |
|
Accelerate queries on MaxCompute data with CREATE FOREIGN TABLE |
Ideal para acelerar un número reducido de tablas, consultar un subconjunto de columnas o trabajar con estructuras de tabla estables. |
Permite crear tablas manualmente con definiciones flexibles de columnas y comentarios. |
|
Accelerate queries on MaxCompute data with IMPORT FOREIGN SCHEMA |
Mapea todas las tablas a nivel de esquema o base de datos. |
Sincroniza automáticamente las estructuras de tabla para todo un esquema. |
|
Recomendado cuando se maneja un gran volumen de tablas o cuando estas presentan cambios estructurales frecuentes (como agregar, eliminar o modificar columnas). |
Detecta automáticamente los cambios en las tablas de origen y admite cargas bajo demanda y completas. |
Acelerar consultas con CREATE FOREIGN TABLE
Utilice la instrucción CREATE FOREIGN TABLE para crear tablas externas de MaxCompute. Esta instrucción le permite personalizar nombres de tablas, seleccionar columnas específicas y definir comentarios. En esta sección se proporcionan ejemplos de cómo consultar datos de tablas de MaxCompute sin particiones y con particiones mediante CREATE FOREIGN TABLE.
Como alternativa, utilice HoloWeb para crear una tabla de forma visual. Para obtener más información, consulte Create a MaxCompute foreign table in HoloWeb .
Ejemplo 1: Consultar una tabla sin particiones
-
Cree una tabla sin particiones en MaxCompute e importe datos. Este ejemplo utiliza la tabla
customerdel conjunto de datos públicoBIGDATA_PUBLIC_DATASET.tpcds_10ten MaxCompute como datos de muestra.Ejecute el siguiente comando para ver los datos en la tabla de ejemplo.
-- Query the table in MaxCompute to check for data. SET odps.namespace.schema=true; SELECT * FROM BIGDATA_PUBLIC_DATASET.tpcds_10t.customer; -
En Hologres, cree una tabla externa que se asocie con la tabla de origen de MaxCompute. A continuación se muestra una instrucción de ejemplo:
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');La siguiente tabla describe los parámetros.
Parámetro
Descripción
SERVER
El servidor externo.
Puede utilizar odps_server, que es un servidor externo preconfigurado en Hologres. Para obtener más información sobre los principios, consulte Postgres FDW.
project_name
-
Si su proyecto de MaxCompute utiliza el modelo de tres capas, project_name especifica el nombre del proyecto de MaxCompute y el nombre del esquema con el formato
odps_project_name.odps_schema_name.
-
Si su proyecto de MaxCompute utiliza un modelo de dos capas, project_name corresponde al nombre del proyecto de MaxCompute.
Para obtener más información sobre el modelo de tres capas, consulte Schema operations.
table_name
El nombre de la tabla de MaxCompute que desea consultar.
-
-
Después de crear la tabla externa, consúltela en Hologres para recuperar datos de MaxCompute. A continuación se muestra una instrucción de ejemplo:
SELECT * FROM customer LIMIT 10;ImportanteSi ocurre un error de consulta, asegúrese de que la cuenta utilizada para ejecutarla tenga los permisos obligatorios, como el permiso Select, en la tabla de MaxCompute. Para obtener más información, consulte Permissions.
Ejemplo 2: Consultar una tabla con particiones
-
Prepare una tabla con particiones en MaxCompute e importe datos. Este ejemplo utiliza la tabla
ods_enterprise_share_trade_hdel conjunto de datos públicoBIGDATA_PUBLIC_DATASET.financeen MaxCompute como datos de muestra.Ejecute el siguiente comando para ver los datos en la tabla de ejemplo.
-- 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'; -
En Hologres, cree una tabla externa que se asocie con la tabla con particiones de MaxCompute. A continuación se muestra una instrucción de ejemplo:
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 la tabla con particiones de MaxCompute desde Hologres.
-
Consulte las primeras 10 filas de datos. A continuación se muestra una instrucción SQL de ejemplo:
SELECT * FROM foreign_ods_enterprise_share_trade_h limit 10; -
Consulte datos en una partición específica. A continuación se muestra una instrucción SQL de ejemplo:
SELECT * FROM foreign_ods_enterprise_share_trade_h WHERE ds = '20170113';
ImportanteSi ocurre un error de consulta, asegúrese de que la cuenta utilizada para ejecutarla tenga los permisos obligatorios, como el permiso Select, en la tabla de MaxCompute. Para obtener más información, consulte Permissions.
-
Acelerar consultas con IMPORT FOREIGN SCHEMA
Para crear varias tablas externas de MaxCompute, utilice la instrucción IMPORT FOREIGN SCHEMA. Para obtener más información, consulte IMPORT FOREIGN SCHEMA.
Acelerar consultas con Auto Load
Si necesita acelerar un gran número de tablas externas, o si los esquemas de las tablas de origen en MaxCompute cambian frecuentemente (por ejemplo, se eliminan columnas, se reordenan o se modifican sus tipos de datos), puede utilizar la función Auto Load. Esta función carga automáticamente datos de MaxCompute mediante cargas bajo demanda o completas. Esto elimina la necesidad de alterar manualmente la estructura de la tabla externa y, por lo tanto, mejora la eficiencia de las consultas. Para obtener más información, consulte Auto Load for foreign tables.