すべてのプロダクト
Search
ドキュメントセンター

Hologres:Hologres から MaxCompute Delta テーブルにアクセスする

最終更新日:Mar 07, 2025

このトピックでは、Hologres から MaxCompute Delta テーブルにアクセスする方法について説明します。

はじめに

Hologres V3.0.22 以降では、MaxCompute Delta テーブルからデータを読み取ることができます。Delta テーブルは、MaxCompute でサポートされている増分データテーブルです。数分でのデータインポートをサポートし、基盤となるレイヤーで AliORC ファイル形式を使用し、UPSERT セマンティクスをサポートし、Change Data Capture(CDC)形式で増分データの読み取りと書き込みを可能にします。詳細については、「Delta テーブルの概要」をご参照ください。

前提条件

使用上の注意

  • Hologres では、MaxCompute Delta テーブルの最新のスナップショットのみを読み取ることができます。

  • Hologres から MaxCompute Delta テーブルにデータを書き戻すことはできません。

  • MaxCompute Delta テーブルにアクセスするには、GUC パラメーターを設定する必要があります。MaxCompute Delta テーブルのクエリに使用する SQL 文と共に、セッションレベルで次のコマンドを実行することをお勧めします。

    SET hg_experimental_external_catalog_routing = 'odps:common_table';

MaxCompute Delta テーブルを使用する

MaxCompute 側で Delta テーブルを作成する

次のいずれかの方法を使用してテーブルを作成します。

  • [DataWorks] コンソールで MaxCompute データソースを追加します。次に、テーブルを作成します。詳細については、「DataWorks」をご参照ください。

  • MaxCompute クライアントを使用してテーブルを作成します。詳細については、「MaxCompute クライアントを使用する」をご参照ください。

SQL 文の例:

CREATE TABLE IF NOT EXISTS mf_dt (pk BIGINT NOT NULL PRIMARY KEY, 
                  val BIGINT NOT NULL) 
                  PARTITIONED BY (dd STRING, hh STRING) 
                  tblproperties ("transactional"="true");

MaxCompute 側で Delta テーブルにデータを書き込む

次のいずれかの方法を使用して、MaxCompute 側で Delta テーブルにデータを書き込みます。

データをバッチで書き込む SQL 文の例:

-- INSERT INTO 文を実行して、mf_dt テーブルの特定のパーティションにデータを追加します。
INSERT INTO TABLE mf_dt PARTITION(dd='01', hh='01') 
            VALUES (3, 30), (4, 4), (5, 5);

-- mf_dt テーブルの dd='01' および hh='01' の条件を満たすパーティションにテストデータを挿入します。
INSERT OVERWRITE TABLE mf_dt PARTITION (dd='01', hh='01') 
                 VALUES (1, 1), (2, 2), (3, 3);

Hologres 側で外部データソースマッピングを作成する

次のいずれかの方法を使用して、Hologres 側で外部データソースマッピングを作成します。

  • CREATE EXTERNAL DATABASE 文を使用して、指定した MaxCompute プロジェクト内のすべてのテーブルをマッピングします。詳細については、「CREATE EXTERNAL DATABASE」をご参照ください。

  • 外部テーブルを作成して、特定のスキーマまたはテーブルをマッピングします。詳細については、「IMPORT FOREIGN SCHEMA」および「CREATE FOREIGN TABLE」をご参照ください。

CREATE EXTERNAL DATABASE 文の例:

CREATE EXTERNAL DATABASE ext_database_mc WITH 
  metastore_type 'maxcompute'
  mc_project 'mc_3_layer_project' 
  comment 'mc three layer project';
  • 外部データベース内のすべてのスキーマをクエリします。

    SELECT * FROM hologres.hg_external_schemas('ext_database_mc');
  • 外部データベース内のすべてのテーブルをデフォルトモードでクエリします。

    SELECT * FROM hologres.hg_external_tables('ext_database_mc', 'default');

Hologres 側で Delta テーブルからデータをクエリする

Hologres 側で Delta テーブルからデータをクエリするには、次の SQL 文を実行します。

SET hg_experimental_external_catalog_routing = 'odps:common_table';
SELECT * FROM ext_database_mc.mc_schema_name.mf_dt;