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. |
|
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
-
Buat tabel non-partisi di MaxCompute dan impor data. Contoh ini menggunakan tabel
customerdari dataset publikBIGDATA_PUBLIC_DATASET.tpcds_10tdi MaxCompute sebagai data sampel.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; -
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.
-
-
Setelah membuat tabel eksternal, lakukan kueri terhadapnya di Hologres untuk mengambil data dari MaxCompute. Berikut adalah contoh pernyataannya:
SELECT * FROM customer LIMIT 10;PentingJika 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
-
Siapkan tabel partisi di MaxCompute dan impor data. Contoh ini menggunakan tabel
ods_enterprise_share_trade_hdari dataset publikBIGDATA_PUBLIC_DATASET.financedi MaxCompute sebagai data sampel.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'; -
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'; -
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';
PentingJika 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.