全部产品
Search
文档中心

Hologres:Percepat kueri pada data MaxCompute menggunakan tabel eksternal

更新时间:Feb 04, 2026

Hologres mendukung pembuatan tabel eksternal untuk mempercepat kueri pada data MaxCompute. Metode ini memungkinkan Anda mengakses dan menganalisis data yang disimpan di MaxCompute secara langsung dari lingkungan Hologres, sehingga meningkatkan efisiensi kueri dan menyederhanakan alur pemrosesan data.

Izin

Untuk mempercepat kueri pada data MaxCompute, Anda harus memberikan izin kepada pengguna agar dapat mengakses proyek dan tabel MaxCompute. Untuk informasi selengkapnya, lihat Kelola izin pengguna menggunakan perintah.

Pemetaan tipe data

Tipe data di MaxCompute dan Hologres memiliki pemetaan satu-ke-satu. Saat membuat tabel, lihat Pemetaan tipe data antara MaxCompute dan Hologres.

Solusi dan pemilihan

Solusi

Skenario

Fitur teknis

Percepat kueri pada data MaxCompute menggunakan CREATE FOREIGN TABLE

Mempercepat sejumlah kecil tabel, melakukan kueri pada kolom tertentu, dan menggunakan tabel dengan skema yang stabil.

Membuat tabel secara manual dan menentukan kolom serta komentar secara fleksibel.

Percepat kueri pada data MaxCompute menggunakan IMPORT FOREIGN SCHEMA

Memetakan tabel secara batch pada tingkat skema atau DB.

Menyinkronkan skema tabel secara otomatis untuk seluruh skema.

Percepat kueri pada data MaxCompute menggunakan Auto Load

Jumlah tabel yang besar dan evolusi skema yang sering (menambah, menghapus, atau memodifikasi kolom).

Mendeteksi perubahan tabel sumber secara otomatis. Mendukung pemuatan on-demand atau penuh.

Percepat kueri menggunakan CREATE FOREIGN TABLE

Anda dapat menggunakan CREATE FOREIGN TABLE untuk membuat tabel eksternal MaxCompute secara fleksibel. Anda dapat menyesuaikan nama tabel, memilih kolom, dan menentukan komentar. Bagian ini menjelaskan cara menggunakan CREATE FOREIGN TABLE untuk mengkueri data pada tabel MaxCompute non-partisi dan partisi dari Hologres.

Anda juga dapat menggunakan HoloWeb untuk membuat tabel secara visual. Untuk informasi selengkapnya, lihat Buat tabel eksternal MaxCompute menggunakan HoloWeb.

Contoh 1: Kueri data pada tabel MaxCompute non-partisi

  1. Di MaxCompute, buat tabel non-partisi dan impor data ke dalamnya. Contoh ini menggunakan tabel customer dari dataset publik MaxCompute BIGDATA_PUBLIC_DATASET.tpcds_10t sebagai data sampel.

    Klik untuk melihat pernyataan DDL tabel ini.

    -- DDL untuk tabel dalam dataset publik MaxCompute
    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);

    Jalankan perintah berikut untuk melihat data sampel tabel tersebut.

    -- Kueri tabel di MaxCompute untuk memeriksa data
    SET odps.namespace.schema=true;
    SELECT * FROM BIGDATA_PUBLIC_DATASET.tpcds_10t.customer;

    Data sampel berikut dikembalikan:image

  2. Di Hologres, buat tabel eksternal untuk memetakan data MaxCompute. Berikut adalah contoh pernyataannya.

    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');

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    SERVER

    Server data eksternal.

    Panggil langsung server tabel eksternal odps_server, yang telah dibuat sebelumnya di Hologres. Untuk informasi lebih lanjut tentang prinsip dasarnya, lihat Postgres FDW.

    project_name

    • Jika proyek MaxCompute Anda menggunakan model Lapisan 3, atur project_name ke nama proyek dan nama skema MaxCompute. Gunakan format odps_project_name.odps_schema_name.

    • Jika proyek MaxCompute Anda menggunakan model dua lapis, atur project_name ke nama proyek MaxCompute.

    Untuk informasi selengkapnya tentang model tiga lapis, lihat Operasi skema.

    table_name

    Nama tabel MaxCompute yang akan dikueri.

  3. Setelah tabel eksternal dibuat, Anda dapat langsung mengkuerinya di Hologres untuk mengambil data MaxCompute. Berikut adalah contoh pernyataannya.

    SELECT * FROM customer LIMIT 10;
    Penting

    Jika terjadi error kueri, pastikan akun yang digunakan untuk eksekusi memiliki izin Select dan izin lain yang diperlukan pada tabel MaxCompute. Untuk informasi selengkapnya, lihat Izin.

Contoh 2: Kueri data pada tabel MaxCompute partisi

  1. Di MaxCompute, buat tabel partisi dan impor data ke dalamnya. Contoh ini menggunakan tabel ods_enterprise_share_trade_h dari dataset publik MaxCompute BIGDATA_PUBLIC_DATASET.finance sebagai data sampel.

    Klik untuk melihat pernyataan DDL tabel ini.

    -- DDL untuk tabel dalam dataset publik
    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 'Earnings per share',
      bvps STRING COMMENT 'Book value per share',
      pb STRING COMMENT 'PB ratio',
      timetomarket STRING COMMENT 'Time to market',
      undp STRING COMMENT 'Undistributed profit',
      perundp STRING COMMENT 'Undistributed per share',
      rev STRING COMMENT 'Revenue YoY (%)',
      profit STRING COMMENT 'Profit YoY (%)',
      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');

    Jalankan perintah berikut untuk melihat data sampel tabel tersebut.

    -- Kueri data pada partisi tertentu di MaxCompute
    SET odps.namespace.schema=true;
    SELECT * FROM BIGDATA_PUBLIC_DATASET.finance.ods_enterprise_share_trade_h WHERE ds = '20170113';

    Data sampel berikut dikembalikan:image

  2. Di Hologres, buat tabel eksternal untuk memetakan data MaxCompute. Berikut adalah contoh pernyataannya.

    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 'Code';
    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 'Area';
    comment on column public.foreign_ods_enterprise_share_trade_h."pe" is 'PE 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 'PB 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 per share';
    comment on column public.foreign_ods_enterprise_share_trade_h."rev" is 'Revenue YoY (%)';
    comment on column public.foreign_ods_enterprise_share_trade_h."profit" is 'Profit YoY (%)';
    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. Lakukan kueri data pada tabel MaxCompute partisi dari Hologres.

    • Untuk mengkueri 10 baris data pertama, gunakan pernyataan SQL berikut:

      SELECT * FROM foreign_ods_enterprise_share_trade_h limit 10;
    • Untuk mengkueri data pada partisi tertentu, gunakan pernyataan SQL seperti berikut:

      SELECT * FROM foreign_ods_enterprise_share_trade_h 
      WHERE ds = '20170113';
    Penting

    Jika terjadi error kueri, pastikan akun yang digunakan untuk eksekusi memiliki izin Select dan izin lain yang diperlukan pada tabel MaxCompute. Untuk informasi selengkapnya, lihat Izin.

Percepat kueri menggunakan IMPORT FOREIGN SCHEMA

Untuk membuat tabel eksternal MaxCompute secara batch, Anda dapat menggunakan metode IMPORT FOREIGN SCHEMA. Untuk informasi selengkapnya, lihat IMPORT FOREIGN SCHEMA.

Percepat kueri menggunakan Auto Load

Untuk mempercepat banyak tabel eksternal dalam suatu instans atau jika skema tabel sumber MaxCompute sering berubah, Anda dapat menggunakan fitur Auto Load. Fitur ini secara otomatis membuat tabel eksternal sesuai kebutuhan untuk tabel MaxCompute yang dikueri atau untuk semua tabel MaxCompute. Perubahan skema pada tabel MaxCompute mencakup operasi seperti menghapus kolom, mengubah urutan kolom, atau mengubah tipe data kolom. Anda tidak perlu mengubah skema tabel eksternal secara manual, sehingga meningkatkan efisiensi kueri. Untuk informasi selengkapnya, lihat Auto Load untuk tabel eksternal.