Tüm Ürünler
Search
Belge Merkezi

Hologres:Accelerate MaxCompute queries with foreign tables

Son Güncelleme:Oct 06, 2026

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


Yöntem


Kullanım senaryoları


Temel özellikler


CREATE FOREIGN TABLE ile MaxCompute verileri üzerindeki sorguları hızlandırma


Az sayıda tabloyu hızlandırmak, sütun alt kümelerini sorgulamak veya kararlı tablo yapılarıyla çalışmak için idealdir.


Sütun ve açıklama tanımlarında esneklik sunan manuel tablo oluşturma.


IMPORT FOREIGN SCHEMA ile MaxCompute verileri üzerindeki sorguları hızlandırma


Tüm tabloları şema veya veritabanı düzeyinde eşlemek için uygundur.


Tüm bir şemanın tablo yapılarını otomatik olarak senkronize eder.


Auto Load ile MaxCompute verileri üzerindeki sorguları hızlandırma


Çok sayıda tablo veya sık yapısal değişikliklere (sütun ekleme, silme veya değiştirme gibi) maruz kalan tablolar için uygundur.


Kaynak tablo değişikliklerini otomatik olarak algılar; hem talep üzerine hem de tam yüklemeyi destekler.

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

  1. MaxCompute'te bölümlenmemiş bir tablo oluşturun ve veri aktarın. Bu örnekte, MaxCompute'teki BIGDATA_PUBLIC_DATASET.tpcds_10t genel veri setinden alınan customer tablosu örnek veri olarak kullanılmıştır.

    Örnek tablonun DDL ifadesini görüntüleyin

    -- DDL for the table in the MaxCompute public dataset
    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);

    Ö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;
  2. 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_name biç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ı.

  3. 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;
    Önemli

    Bir 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

  1. MaxCompute'te bölümlenmiş bir tablo hazırlayın ve veri aktarın. Bu örnekte, MaxCompute'teki BIGDATA_PUBLIC_DATASET.finance genel veri setinden alınan ods_enterprise_share_trade_h tablosu örnek veri olarak kullanılmıştır.

    Örnek tablonun DDL ifadesini görüntüleyin

    -- DDL for the table in the public dataset
    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');

    Ö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';
  2. 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';
  3. 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';
    Önemli

    Bir 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.