Todos los productos
Search
Centro de documentos

Hologres:Accelerate MaxCompute queries with foreign tables

Última actualización: Sep 05, 2026

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.

Accelerate queries on MaxCompute data with Auto Load

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

  1. Cree una tabla sin particiones en MaxCompute e importe datos. Este ejemplo utiliza la tabla customer del conjunto de datos público BIGDATA_PUBLIC_DATASET.tpcds_10t en MaxCompute como datos de muestra.

    Consulte la instrucción DDL de la tabla de ejemplo

    -- DDL for the table in the MaxCompute public dataset
    CREATE TABLE IF NOT EXISTS public_data.customer(
      c_customer_sk BIGINT,
      c_customer_id STRING,
      c_current_cdemo_sk BIGINT,
      c_current_hdemo_sk BIGINT,
      c_current_addr_sk BIGINT,
      c_first_shipto_date_sk BIGINT,
      c_first_sales_date_sk BIGINT,
      c_salutation STRING,
      c_first_name STRING,
      c_last_name STRING,
      c_preferred_cust_flag STRING,
      c_birth_day BIGINT,
      c_birth_month BIGINT,
      c_birth_year BIGINT,
      c_birth_country STRING,
      c_login STRING,
      c_email_address STRING,
      c_last_review_date_sk STRING);

    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;
  2. 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.

  3. 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;
    Importante

    Si 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

  1. Prepare una tabla con particiones en MaxCompute e importe datos. Este ejemplo utiliza la tabla ods_enterprise_share_trade_h del conjunto de datos público BIGDATA_PUBLIC_DATASET.finance en MaxCompute como datos de muestra.

    Consulte la instrucción DDL de la tabla de ejemplo

    -- DDL for the table in the public dataset
    CREATE TABLE IF NOT EXISTS public_data.ods_enterprise_share_trade_h(
      code STRING COMMENT 'Code',
      name STRING COMMENT 'Name',
      industry STRING COMMENT 'Industry',
      area STRING COMMENT 'Area',
      pe STRING COMMENT 'PE ratio',
      outstanding STRING COMMENT 'Outstanding shares',
      totals STRING COMMENT 'Total shares (in 10,000s)',
      totalassets STRING COMMENT 'Total assets (in 10,000s)',
      liquidassets STRING COMMENT 'Liquid assets',
      fixedassets STRING COMMENT 'Fixed assets',
      reserved STRING COMMENT 'Reserve fund',
      reservedpershare STRING COMMENT 'Reserve per share',
      eps STRING COMMENT 'EPS',
      bvps STRING COMMENT 'BVPS',
      pb STRING COMMENT 'PB ratio',
      timetomarket STRING COMMENT 'Time to market',
      undp STRING COMMENT 'Undistributed profit',
      perundp STRING COMMENT 'Undistributed profit per share',
      rev STRING COMMENT 'YoY revenue (%)',
      profit STRING COMMENT 'YoY profit (%)',
      gpr STRING COMMENT 'Gross profit margin (%)',
      npr STRING COMMENT 'Net profit margin (%)',
      holders_num STRING COMMENT 'Number of shareholders') 
      PARTITIONED BY (ds STRING) STORED AS ALIORC TBLPROPERTIES ('comment'='Data import date');

    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';
  2. 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';
  3. 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';
    Importante

    Si 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.