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

Hologres:Common Table を使用した MaxCompute データへのアクセス

最終更新日:Apr 21, 2026

Hologres V3.0.38 以降、Common Table と呼ばれる MaxCompute 向けのアップグレードされた高速アクセスパスが導入されました。このトピックでは、Common Table を使用して MaxCompute データにアクセスする方法について説明します。

概要

Common Table は、C++ ネイティブリーダーを使用して MaxCompute からデータを読み取ります。SQE/HQE アクセスパスと比較して、Common Table には次の利点があります。

説明

サポートは「サポートされていること」を、非サポートは「サポートされていないこと」を示します。

機能

SQE/HQE

Common Table

パフォーマンス

非常に高い。パフォーマンスは SQE/HQE よりも 33% 高く、オープンストレージ API よりも 200% 以上高くなります。

動的データマスキング

マスキングルールを別途設定する必要があります。

MaxCompute からデータマスキングルールを継承し、クエリ結果が MaxCompute の結果と一致することを保証します。

スキーマエボリューション

非サポート。直接ファイル読み取りはサポートされていないため、パフォーマンスがわずかに低下します。

サポート。直接ファイル読み取りをサポートし、高いパフォーマンスを実現します。

保存時の暗号化

  • サポート。KMS キーで暗号化されたテーブルをサポートします。

  • 非サポート。デフォルトキーで暗号化されたテーブルはサポートされていません。

  • サポート。KMS キーで暗号化されたテーブルをサポートします。

  • サポート。デフォルトキーで暗号化されたテーブルをサポートします。

    説明

    Hologres V3.2 以降が必要です。

ACID 1.0 テーブル

非サポート

サポート

PK Delta Table

非サポート

サポート

Append Delta Table

非サポート

サポート

権限

  • Common Table を使用して MaxCompute 外部テーブルにアクセスするには、必要な権限が必要です。ユーザーに MaxCompute プロジェクトとそのテーブルへのアクセス権限を付与する方法については、「コマンドを使用したユーザー権限の管理」をご参照ください。

    MaxCompute のクエリ権限とより整合性を取るため、Hologres V4.0 以降では更新された権限検証プロセスが使用されます。

    作成方法

    アクション

    権限 (Hologres V3.0、V3.1、V3.2)

    権限 (Hologres V4.0 以降)

    外部テーブル

    IMPORT FOREIGN SCHEMA を使用した MaxCompute 外部テーブルの一括作成

    Describe、List

    Describe、List

    データのクエリ

    Describe、Select

    Select

    外部データベース

    外部テーブルのメタデータの表示

    Describe

    Describe

    データのクエリ

    Describe、Select

    Select

  • Hologres は、MaxCompute Delta Table の最新のスナップショットの読み取りのみをサポートします。

  • Hologres から MaxCompute Delta Table へのデータ書き込みはサポートされていません。

  • アクセスパスに関係なく、行レベルセキュリティが有効になっている MaxCompute テーブルをクエリすることはできません。

機能の更新

説明

サポートされるバージョン

MaxCompute クエリのデータ読み取りノードへの述語プッシュダウンをサポートします。

>=4.1.6

MaxCompute からの JSON データ型の読み取りをサポートします。

>=4.1.1

MaxCompute Append Delta テーブルのクエリをサポートします。

>= 3.0.40

>= 3.1.10

>=3.2.0

>=4.0.0

MaxCompute Delta Table のクエリで `spillRead` を使用して、スピルされていないファイルが多すぎることによって発生するエラーを解決することをサポートします。

MaxCompute csdk open reader failed: storage/formats/orcfile/change_log_reader_util.cpp(255): InvalidArgument: ODPS-0010000:InvalidArgument:Need spill read but TmpDir or TmpCapability no specified.

>= 3.0.41

>= 3.1.10

>= 3.2.0

>= 4.0.0

デフォルト値を含む MaxCompute テーブルの読み取りをサポートします。

>=3.0.40

>= 3.1.10

>=3.2.0

>=4.0.0

インスタンス仕様に基づいてスプリットサイズを自動的に決定する Auto Split Size をサポートします。

>=3.1.33

>=3.2.0

>=4.0.0

TIMESTAMP_NTZ 型のデータのクエリをサポートします。

>= 3.0.41

>= 3.1.10

>=3.2.0

>=4.0.0

Delta Table のクラスタリングキーやプライマリキーなどの属性に対する等価フィルターの述語プッシュダウンをサポートします。この機能により、フィルター効率とクエリパフォーマンスが向上します。

>= 4.0.6

Common Table の有効化

ユースケースに応じて、セッションレベル、データベースレベル、またはインスタンスレベルで Common Table を有効にできます。

  • セッションレベル

    -- セッションレベルで Common Table を有効にします。このコマンドは、クエリまたは DML 文と一緒に実行する必要があります。
    SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
  • データベースレベル

    -- データベースレベルで Common Table を有効にします。
    ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
  • インスタンスレベル

    -- インスタンスレベルで Common Table を有効にします。
    ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';

Common Table の無効化

  • セッションレベル

    -- セッションレベルで Common Table を無効にします。このコマンドは、クエリまたは DML 文と一緒に実行する必要があります。
    SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
  • データベースレベル

    -- データベースレベルで Common Table を無効にします。
    ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
  • インスタンスレベル

    -- インスタンスレベルで Common Table を無効にします。
    ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';

現在のアクセスパスの確認

  • 次の SQL を使用して確認できます。出力が odps:common_table,dlf:hqe の場合、Common Table を使用していることを示します。

    SHOW hg_experimental_external_catalog_routing;
  • 過去のクエリについては、スロークエリログの `query_extinfo` フィールドを確認できます。driver:CommonTable が存在する場合、Common Table リンクが使用されたことを示します。

Auto Split Size

Auto Split Size パラメーターは、デフォルトで off に設定されており、機能が無効であることを意味します。実際のシナリオに基づいて、必要に応じて有効または無効にできます。このパラメーターは、次のように設定できます。

Auto Split Size の有効化

V4.0 以降

  • セッションレベル

    -- セッションレベルで Auto Split Size を有効にします。
    SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
  • データベースレベル

    -- データベースレベルで Auto Split Size を有効にします。
    ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
  • インスタンスレベル

    -- インスタンスレベルで Auto Split Size を有効にします。
    ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';

V4.0 より前のバージョン

  • セッションレベル

    -- セッションレベルで Auto Split Size を有効にします。
    SET hg_experimental_enable_common_table_auto_split_size = 'on';
  • データベースレベル

    -- データベースレベルで Auto Split Size を有効にします。
    ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on';
  • インスタンスレベル

    -- インスタンスレベルで Auto Split Size を有効にします。
    ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';

Auto Split Size の無効化

V4.0 以降

  • セッションレベル

    -- セッションレベルで Auto Split Size を無効にします。
    SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
  • データベースレベル

    -- データベースレベルで Auto Split Size を無効にします。
    ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
  • インスタンスレベル

    -- インスタンスレベルで Auto Split Size を無効にします。
    ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';

V4.0 より前のバージョン

  • セッションレベル

    -- セッションレベルで Auto Split Size を無効にします。
    SET hg_experimental_enable_common_table_auto_split_size = 'off';
  • データベースレベル

    -- データベースレベルで Auto Split Size を無効にします。
    ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off';
  • インスタンスレベル

    -- インスタンスレベルで Auto Split Size を無効にします。
    ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';

データ読み取りノードへのフィルタープッシュダウンの有効化

Hologres V4.1.6 では、データ読み取りノードへのフィルタープッシュダウンがサポートされるようになりました。この機能は、高フィルターレートのシナリオでパフォーマンスを大幅に向上させます。この機能は、Hologres V4.1 バージョンではデフォルトで無効になっています。次の SQL 文を実行して、グローバルに有効にします。

SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=true');

データ読み取りノードへのフィルタープッシュダウンの無効化

Hologres V4.1.6 以降のバージョンでは、データ読み取りノードへのフィルタープッシュダウンがサポートされています。この機能は、高フィルターレートのシナリオでパフォーマンスを大幅に向上させます。次の SQL 文を実行して、この機能をグローバルに無効にします。この機能は、Hologres V4.1 ではデフォルトで無効になっています。

SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=false');