Hologres, MaxCompute verileri üzerindeki sorguları hızlandırmak için yabancı tabloları kullanır. Bu yaklaşım, MaxCompute içindeki verilere doğrudan erişip analiz etmenize olanak tanır; böylece sorgu verimliliği artar ve veri işleme iş akışı basitleşir.
İzinler
MaxCompute verileri üzerindeki sorguları hızlandırmak için kullanıcılara MaxCompute projelerine ve tablolarına erişim izni vermeniz gerekir. Daha fazla bilgi için bkz. Komutları kullanarak kullanıcı izinlerini yönetme.
Veri türü eşlemesi
MaxCompute veri türleri, Hologres veri türleriyle birebir eşleşir. Tablo oluştururken bkz. MaxCompute ve Hologres arasında veri türü eşlemesi.
Yöntemler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE FOREIGN TABLE ile sorguları hızlandırma
MaxCompute yabancı tabloları oluşturmak için CREATE FOREIGN TABLE ifadesini kullanın. Bu ifadeyle tablo adlarını özelleştirebilir, belirli sütunları seçebilir ve açıklamalar tanımlayabilirsiniz. Bu bölümde, CREATE FOREIGN TABLE kullanarak bölümlenmemiş ve bölümlenmiş MaxCompute tablolarından veri sorgulama örnekleri sunulmaktadır.
Alternatif olarak, HoloWeb'i kullanarak tabloyu görsel arayüz üzerinden oluşturabilirsiniz. Daha fazla bilgi için bkz. HoloWeb'de MaxCompute yabancı tablosu oluşturma .
Örnek 1: Bölümlenmemiş bir tabloyu sorgulama
-
MaxCompute'te bölümlenmemiş bir tablo oluşturun ve veri aktarın. Bu örnekte, MaxCompute'teki
BIGDATA_PUBLIC_DATASET.tpcds_10tgenel veri setinden alınancustomertablosu örnek veri olarak kullanılmıştır.Örnek tablodaki verileri görüntülemek için aşağıdaki komutu çalıştırın.
-- Query the table in MaxCompute to check for data. SET odps.namespace.schema=true; SELECT * FROM BIGDATA_PUBLIC_DATASET.tpcds_10t.customer; -
Hologres'te, MaxCompute kaynak tablosuyla eşleşen bir yabancı tablo oluşturun. Aşağıda örnek bir ifade verilmiştir:
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');Aşağıdaki tabloda parametreler açıklanmıştır.
Parametre
Açıklama
SERVER
Yabancı sunucu.
Hologres'te önceden yapılandırılmış bir yabancı sunucu olan odps_server değerini kullanabilirsiniz. İlkeler hakkında daha fazla bilgi için bkz. Postgres FDW.
project_name
-
MaxCompute projeniz üç katmanlı modeli kullanıyorsa project_name, MaxCompute proje adını ve şema adını
odps_project_name.odps_schema_namebiçiminde belirtir.
-
MaxCompute projeniz iki katmanlı bir model kullanıyorsa project_name, MaxCompute proje adıdır.
Üç katmanlı model hakkında daha fazla bilgi için bkz. Şema işlemleri.
table_name
Sorgulamak istediğiniz MaxCompute tablosunun adı.
-
-
Yabancı tabloyu oluşturduktan sonra, MaxCompute'ten veri almak için Hologres'te bu tabloyu sorgulayın. Aşağıda örnek bir ifade verilmiştir:
SELECT * FROM customer LIMIT 10;ÖnemliBir sorgu hatası oluşursa, sorguyu çalıştıran hesabın MaxCompute tablosunda Select izni gibi gerekli izinlere sahip olduğundan emin olun. Daha fazla bilgi için bkz. İzinler.
Örnek 2: Bölümlenmiş bir tabloyu sorgulama
-
MaxCompute'te bölümlenmiş bir tablo hazırlayın ve veri aktarın. Bu örnekte, MaxCompute'teki
BIGDATA_PUBLIC_DATASET.financegenel veri setinden alınanods_enterprise_share_trade_htablosu örnek veri olarak kullanılmıştır.Örnek tablodaki verileri görüntülemek için aşağıdaki komutu çalıştırın.
-- 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'; -
Hologres'te, bölümlenmiş MaxCompute tablosuyla eşleşen bir yabancı tablo oluşturun. Aşağıda örnek bir ifade verilmiştir:
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'; -
Bölümlenmiş MaxCompute tablosunu Hologres'ten sorgulayın.
-
İlk 10 satır veriyi sorgulayın. Aşağıda örnek bir SQL ifadesi verilmiştir:
SELECT * FROM foreign_ods_enterprise_share_trade_h limit 10; -
Belirli bir bölümdeki verileri sorgulayın. Aşağıda örnek bir SQL ifadesi verilmiştir:
SELECT * FROM foreign_ods_enterprise_share_trade_h WHERE ds = '20170113';
ÖnemliBir sorgu hatası oluşursa, sorguyu çalıştıran hesabın MaxCompute tablosunda Select izni gibi gerekli izinlere sahip olduğundan emin olun. Daha fazla bilgi için bkz. İzinler.
-
IMPORT FOREIGN SCHEMA ile sorguları hızlandırma
Birden çok MaxCompute yabancı tablosu oluşturmak için IMPORT FOREIGN SCHEMA ifadesini kullanın. Daha fazla bilgi için bkz. IMPORT FOREIGN SCHEMA.
Auto Load ile sorguları hızlandırma
Çok sayıda yabancı tabloyu hızlandırmanız gerekiyorsa veya MaxCompute'teki kaynak tabloların şemaları sık sık değişiyorsa (örneğin sütunlar siliniyor, yeniden sıralanıyor veya veri türleri değiştiriliyorsa) Auto Load özelliğini kullanabilirsiniz. Bu özellik, MaxCompute'ten verileri talep üzerine veya tam yüklemeyle otomatik olarak yükler. Yabancı tablo yapısını manuel olarak değiştirmeye gerek kalmadığından sorgu verimliliği artar. Daha fazla bilgi için bkz. Yabancı tablolar için Auto Load.