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. |
|
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
-
Di MaxCompute, buat tabel non-partisi dan impor data ke dalamnya. Contoh ini menggunakan tabel
customerdari dataset publik MaxComputeBIGDATA_PUBLIC_DATASET.tpcds_10tsebagai data sampel.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:

-
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.
-
-
Setelah tabel eksternal dibuat, Anda dapat langsung mengkuerinya di Hologres untuk mengambil data MaxCompute. Berikut adalah contoh pernyataannya.
SELECT * FROM customer LIMIT 10;PentingJika 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
-
Di MaxCompute, buat tabel partisi dan impor data ke dalamnya. Contoh ini menggunakan tabel
ods_enterprise_share_trade_hdari dataset publik MaxComputeBIGDATA_PUBLIC_DATASET.financesebagai data sampel.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:

-
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'; -
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';
PentingJika 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.