All Products
Search
Document Center

Hologres:Percepat kueri MaxCompute dengan tabel eksternal

Last Updated:Aug 21, 2026

Hologres menggunakan tabel eksternal untuk mempercepat kueri terhadap data MaxCompute. Pendekatan ini memungkinkan Anda mengakses dan menganalisis data di MaxCompute secara langsung, meningkatkan efisiensi kueri, serta menyederhanakan alur kerja pemrosesan data.

Izin

Untuk mempercepat kueri terhadap data MaxCompute, Anda harus memberikan izin yang diperlukan kepada pengguna agar dapat mengakses Proyek dan tabel MaxCompute. Untuk informasi selengkapnya, lihat Mengelola izin pengguna dengan perintah.

Pemetaan tipe data

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

Metode

Metode

Kasus penggunaan

Fitur utama

Percepat kueri terhadap data MaxCompute dengan CREATE FOREIGN TABLE

Ideal untuk mempercepat sejumlah kecil tabel, melakukan kueri terhadap subset kolom, atau bekerja dengan struktur tabel yang stabil.

Membuat tabel secara manual dengan definisi kolom dan komentar yang fleksibel.

Percepat kueri terhadap data MaxCompute dengan IMPORT FOREIGN SCHEMA

Memetakan semua tabel pada tingkat skema atau database.

Menyinkronkan struktur tabel secara otomatis untuk seluruh skema.

Percepat kueri terhadap data MaxCompute dengan Auto Load

Jumlah tabel yang besar, atau tabel dengan perubahan struktur yang sering (misalnya menambah, menghapus, atau memodifikasi kolom).

Mendeteksi perubahan struktur tabel sumber secara otomatis dan mendukung pemuatan berdasarkan permintaan maupun penuh.

Percepat kueri dengan CREATE FOREIGN TABLE

Gunakan pernyataan CREATE FOREIGN TABLE untuk membuat tabel eksternal MaxCompute. Pernyataan ini memungkinkan Anda menyesuaikan nama tabel, memilih kolom tertentu, dan menentukan komentar. Bagian ini memberikan contoh cara melakukan kueri data dari tabel MaxCompute non-partisi dan partisi menggunakan CREATE FOREIGN TABLE.

Sebagai alternatif, gunakan HoloWeb untuk membuat tabel secara visual. Untuk informasi selengkapnya, lihat Buat tabel eksternal MaxCompute di HoloWeb.

Contoh 1: Kueri tabel non-partisi

  1. Buat tabel non-partisi di MaxCompute dan impor data. Contoh ini menggunakan tabel customer dari dataset publik BIGDATA_PUBLIC_DATASET.tpcds_10t di MaxCompute sebagai data sampel.

    Lihat pernyataan DDL untuk tabel sampel

    -- 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 dalam tabel sampel.

    -- Kueri tabel di MaxCompute untuk memeriksa data.
    SET odps.namespace.schema=true;
    SELECT * FROM BIGDATA_PUBLIC_DATASET.tpcds_10t.customer;
  2. Di Hologres, buat tabel eksternal yang memetakan ke tabel sumber 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 eksternal.

    Anda dapat menggunakan odps_server, yaitu server eksternal yang telah dikonfigurasi sebelumnya di Hologres. Untuk informasi lebih lanjut tentang prinsipnya, lihat Postgres FDW.

    project_name

    • Jika Proyek MaxCompute Anda menggunakan model tiga lapis, project_name menentukan nama Proyek dan nama skema MaxCompute dalam format odps_project_name.odps_schema_name.

    • Jika Proyek MaxCompute Anda menggunakan model dua lapis, project_name adalah nama Proyek MaxCompute.

    Untuk informasi lebih lanjut tentang model tiga lapis, lihat Operasi skema.

    table_name

    Nama tabel MaxCompute yang ingin Anda kueri.

  3. Setelah membuat tabel eksternal, lakukan kueri terhadapnya di Hologres untuk mengambil data dari MaxCompute. Berikut adalah contoh pernyataannya:

    SELECT * FROM customer LIMIT 10;
    Penting

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

Contoh 2: Kueri tabel partisi

  1. Siapkan tabel partisi di MaxCompute dan impor data. Contoh ini menggunakan tabel ods_enterprise_share_trade_h dari dataset publik BIGDATA_PUBLIC_DATASET.finance di MaxCompute sebagai data sampel.

    Lihat pernyataan DDL untuk tabel sampel

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

    Jalankan perintah berikut untuk melihat data dalam tabel sampel.

    -- Kueri data dari partisi tertentu di MaxCompute.
    SET odps.namespace.schema=true;
    SELECT * FROM BIGDATA_PUBLIC_DATASET.finance.ods_enterprise_share_trade_h WHERE ds = '20170113';
  2. Di Hologres, buat tabel eksternal yang memetakan ke tabel MaxCompute partisi. 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 'Informasi historis perdagangan saham';
    comment on column public.foreign_ods_enterprise_share_trade_h."code" is 'Simbol saham';
    comment on column public.foreign_ods_enterprise_share_trade_h."name" is 'Nama';
    comment on column public.foreign_ods_enterprise_share_trade_h."industry" is 'Industri';
    comment on column public.foreign_ods_enterprise_share_trade_h."area" is 'Wilayah';
    comment on column public.foreign_ods_enterprise_share_trade_h."pe" is 'Rasio harga terhadap laba';
    comment on column public.foreign_ods_enterprise_share_trade_h."outstanding" is 'Saham beredar';
    comment on column public.foreign_ods_enterprise_share_trade_h."totals" is 'Total saham (dalam satuan 10.000)';
    comment on column public.foreign_ods_enterprise_share_trade_h."totalassets" is 'Total aset (dalam satuan 10.000)';
    comment on column public.foreign_ods_enterprise_share_trade_h."liquidassets" is 'Aset lancar';
    comment on column public.foreign_ods_enterprise_share_trade_h."fixedassets" is 'Aset tetap';
    comment on column public.foreign_ods_enterprise_share_trade_h."reserved" is 'Dana cadangan';
    comment on column public.foreign_ods_enterprise_share_trade_h."reservedpershare" is 'Cadangan per saham';
    comment on column public.foreign_ods_enterprise_share_trade_h."eps" is 'Laba per saham';
    comment on column public.foreign_ods_enterprise_share_trade_h."bvps" is 'Nilai buku per saham';
    comment on column public.foreign_ods_enterprise_share_trade_h."pb" is 'Rasio harga terhadap nilai buku';
    comment on column public.foreign_ods_enterprise_share_trade_h."timetomarket" is 'Waktu masuk pasar';
    comment on column public.foreign_ods_enterprise_share_trade_h."undp" is 'Laba ditahan';
    comment on column public.foreign_ods_enterprise_share_trade_h."perundp" is 'Laba ditahan per saham';
    comment on column public.foreign_ods_enterprise_share_trade_h."rev" is 'Pendapatan YoY (%)';
    comment on column public.foreign_ods_enterprise_share_trade_h."profit" is 'Laba YoY (%)';
    comment on column public.foreign_ods_enterprise_share_trade_h."gpr" is 'Margin laba kotor (%)';
    comment on column public.foreign_ods_enterprise_share_trade_h."npr" is 'Margin laba bersih (%)';
    comment on column public.foreign_ods_enterprise_share_trade_h."holders_num" is 'Jumlah pemegang saham';
  3. Lakukan kueri terhadap tabel MaxCompute partisi dari Hologres.

    • Kueri 10 baris data pertama. Berikut adalah contoh pernyataan SQL-nya:

      SELECT * FROM foreign_ods_enterprise_share_trade_h limit 10;
    • Kueri data dalam partisi tertentu. Berikut adalah contoh pernyataan SQL-nya:

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

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

Percepat kueri dengan IMPORT FOREIGN SCHEMA

Untuk membuat beberapa tabel eksternal MaxCompute, gunakan pernyataan IMPORT FOREIGN SCHEMA. Untuk informasi selengkapnya, lihat IMPORT FOREIGN SCHEMA.

Percepat kueri dengan Auto Load

Jika Anda perlu mempercepat sejumlah besar tabel eksternal, atau jika skema tabel sumber di MaxCompute sering berubah (misalnya kolom dihapus, diurutkan ulang, atau tipe datanya dimodifikasi), Anda dapat menggunakan fitur Auto Load. Fitur ini memuat data dari MaxCompute secara otomatis baik berdasarkan permintaan maupun penuh. Fitur ini menghilangkan kebutuhan untuk mengubah struktur tabel eksternal secara manual, sehingga meningkatkan efisiensi kueri. Untuk informasi selengkapnya, lihat Auto Load untuk tabel eksternal.