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

Hologres:動的テーブルの範囲と制限

最終更新日:Nov 12, 2025

動的テーブルを使用すると、効率的で低コストの自動データフローと階層化を実装できます。このトピックでは、動的テーブルの範囲と制限について説明します。

増分更新

動的テーブルが増分更新モードに設定されている場合、次の機能がサポートされ、次の制限が適用されます。

制限

  • リソース使用量

    V3.1 以降、新しいテーブルはデフォルトでサーバーレスリソースを使用して更新タスクを実行します。インスタンスでサーバーレスリソースが有効になっていない場合、システムは自動的にローカルリソースに切り替わります。V3.0 で作成されたテーブルは、作成時に設定された更新リソースを引き続き使用し、デフォルトでサーバーレスリソースにはなりません。

  • ベーステーブルの制限

    • ベーステーブルとしてサポートされているのは、Hologres 内部テーブル、Paimon 外部テーブル、およびその他の動的テーブルのみです。動的テーブルを作成するには、ベーステーブルへのアクセス権限が必要です。

    • V3.1: デフォルトでは、ベーステーブルのデータはストリームメソッドを使用して増分的に消費されます。バイナリログメソッドと比較して、ストリームメソッドはパフォーマンスが向上し、追加のストレージコストは発生しません。V3.1 より前にベーステーブルでバイナリログを使用していた場合は、追加のストレージコストを回避するためにバイナリログを無効にする必要があります。バイナリログを無効にする方法の詳細については、「Hologres バイナリログをサブスクライブする」をご参照ください。

    • V3.0: 増分動的テーブルを作成する場合、ベーステーブルでバイナリログを有効にする必要があります。ディメンションテーブルではバイナリログを有効にする必要はありません。バイナリログを有効にする方法の詳細については、「Hologres バイナリログをサブスクライブする」をご参照ください。

  • クエリの制限

    • 任意のスカラー式がサポートされています。

    • WHERE 条件、サブクエリ、共通テーブル式 (CTE)、GROUP BY、CUBE、GROUPING SETS、HAVING 文、Agg Filter、UNION ALL、および UNNEST がサポートされています。

    • ウィンドウ関数、IN サブクエリ、EXISTS または NOT EXISTS、EXCEPT または INTERSECT、ORDER BY、LIMIT、または OFFSET はサポートされていません。

    • 複数テーブルの JOIN:

      • V3.0 は、ディメンションテーブルの等結合 (INNER JOIN または LEFT JOIN) のみをサポートし、FOR SYSTEM_TIME AS OF PROCTIME() メソッドを使用する必要があります。複数テーブルのデュアルストリーム結合はサポートされていません。詳細については、「ディメンションテーブルの JOIN 文」をご参照ください。

        説明

        ディメンションテーブル JOIN のセマンティクスは次のとおりです。各データレコードは、処理時間におけるディメンションテーブルデータの最新バージョンとのみ結合されます。JOIN 操作は処理時にのみ発生します。JOIN 操作後にディメンションテーブルのデータが追加、更新、または削除されても、結合されたディメンションテーブルのデータは更新されません。

      • V3.0.26 以降、複数テーブルのデュアルストリーム結合がサポートされています。これらの結合は、オンライン分析処理 (OLAP) の通常の結合または Flink のデュアルストリーム結合であり、INNER JOIN、LEFT/RIGHT/FULL OUTER JOIN が含まれます。詳細については、「CREATE DYNAMIC TABLE」をご参照ください。

    • 関数: COUNT、SUM、MIN/MAX、COUNT DISTINCT などの集約関数がサポートされています。次の表に、サポートされているその他の関数を示します。

      関数名

      構文

      動的テーブルの例

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

      RB_BUILD_AGG

      RB_BUILD_AGG(<column>)
      説明

      column パラメーターは int32 および int64 データ型をサポートします。詳細については、「RoaringBitmap 関数」をご参照ください。

      CREATE DYNAMIC TABLE daily_uv PARTITION BY list (day) 
        WITH (
          freshness = '5 minutes', 
          refresh_mode = 'incremental') 
        AS 
        SELECT day,
               game_id,
               gameversion,
               RB_BUILD_AGG(user_id) AS user_rb
          FROM base_table GROUP BY day, game_id, gameversion;

      V3.1 以降。

      STRING_AGG

      STRING_AGG([DISTINCT] column_expr, const_expr)
      説明
      • パラメーターの型: column_expr は TEXT、CHAR、または VARCHAR 型である必要があります。const_expr は TEXT 定数である必要があります。

      • ORDER BY 構文はサポートされていません。

      • Hologres V3.1.10 以降、STRING_AGG([DISTINCT] がサポートされています。

      CREATE DYNAMIC TABLE string_agg_test_dt  
        WITH (
          freshness = '3 minutes', 
          refresh_mode = 'incremental') 
        AS 
        SELECT day,
               STRING_AGG(gameversion, ',') AS gameversion_list
          FROM base_table GROUP BY day;
      • V3.1 以降。

      • V3.1.10 以降、STRING_AGG([DISTINCT] がサポートされています。

      ARRAY_AGG

      ARRAY_AGG([DISTINCT] expr)
      説明
      • expr パラメーターの型: BOOL、すべての数値型、TEXT、および BYTEA をサポートします。

      • ORDER BY 構文はサポートされていません。

      • Hologres V3.1.10 以降、ARRAY_AGG([DISTINCT] がサポートされています。

      CREATE DYNAMIC TABLE array_agg_test_dt  
        WITH (
          freshness = '3 minutes', 
          refresh_mode = 'incremental') 
        AS 
        SELECT day,
               ARRAY_AGG(gameversion) AS gameversion_list
          FROM base_table GROUP BY day;
      • V3.1 以降。

      • V3.1.10 以降、ARRAY_AGG([DISTINCT] がサポートされています。

      ANY_VALUE

      GROUP BY を含む集計クエリでは、この関数は各集約グループの行からランダムな結果を返します。結果は非決定的です。

      ANY_VALUE(expr)

      ANY_VALUE の入力パラメーターは、INT 型と BINARY 型のみをサポートします。

      CREATE  DYNAMIC TABLE dt_t0
      WITH (
        -- Properties of the dynamic table
        freshness = '1 minutes', 
        auto_refresh_mode = 'auto'
      )
      AS 
      SELECT a,any_value(c),SUM(b) FROM t0 GROUP BY a;

      V3.1.5 以降でサポートされています。

    • V3.1 以降、動的テーブルを論理パーティションとして設定できます。論理パーティションに関連するパーティションプロパティとパーティション管理設定がサポートされています。

完全更新

動的テーブルが完全更新モードに設定されている場合、次の機能がサポートされ、次の制限が適用されます。

サポートされる機能

  • ベーステーブルのサポート: ベーステーブルのサポートは、通常の Hologres テーブルと同じです。Hologres 内部テーブルおよび MaxCompute、DLF、Paimon などの外部テーブルは、動的テーブルのベーステーブルとしてサポートされています。動的テーブルを作成するには、ベーステーブルへのアクセス権限が必要です。詳細については、「動的テーブルの権限」をご参照ください。

  • クエリのサポート: 完全更新モードは、Hologres がサポートするすべての関数、SQL 式、およびデータ型をサポートします。

  • リソースの更新のサポート: デフォルトでは、サーバーレスリソースを使用して更新タスクを実行します。現在のインスタンスのリソースに切り替えることもできます。

制限

動的テーブルを完全更新モードから増分更新モードに変換することはできません。

一般的な制限

動的テーブルの制限

  • Hologres インスタンスは V3.0 以降である必要があります。

  • 動的テーブルのプロパティの制限: プライマリキーまたはデフォルトのフィールド値を設定することはできません。エンジンはテーブルインデックスを自動的に推測します。必要に応じて、インデックスを手動で設定することもできます。

  • 完全更新モードと増分更新モードのみがサポートされています。範囲と制限はモードによって異なります。詳細については、「完全更新」および「増分更新」をご参照ください。

動的テーブルに対する DDL、DML、およびその他の操作の制限

操作

サポート

CREATE DYNAMIC TABLE

はい

RENAME DYNAMIC TABLE

はい

RENAME DYNAMIC TABLE Column

はい

SELECT

はい

Refresh

  • 非パーティションテーブルと子パーティションでサポートされています。

  • 親パーティションテーブルではサポートされていません。

DROP DYNAMIC TABLE

はい

DROP DYNAMIC TABLE Column

いいえ

TRUNCATE DYNAMIC TABLE

いいえ

DYNAMIC TABLE に対する DML (INSERT/UPDATE/DELETE)

いいえ

ADD Column

いいえ

Resharding

いいえ

説明

ベーステーブルのリシャーディングはサポートされていません。

CREATE TABLE AS/LIKE

いいえ

動的テーブルを使用するための権限要件

操作

権限要件

CREATE DYNAMIC TABLE

  • Create Table 権限。

  • ベーステーブルに対する Select 権限。

ALTER DYNAMIC TABLE

  • Create Table 権限。

  • ベーステーブルに対する Select 権限。

DROP DYNAMIC TABLE

動的テーブルのテーブルオーナー。

SELECT DYNAMIC TABLE

動的テーブルに対する Select 権限。

REFRESH DYNAMIC TABLE

動的テーブルに対する DML 権限。

説明

親パーティションテーブルの更新はサポートされていません。

動的テーブルに権限を付与する方法の詳細については、「Hologres 権限モデル」をご参照ください。

ベーステーブル操作が動的テーブルに与える影響

ベーステーブル操作

動的テーブルの動作

RENAME <basetable_name>

  • 動的テーブルに対するクエリは正常に実行されます。

  • 更新操作は失敗します。

RENAME <動的テーブルで使用されていないベーステーブルの列名>

  • 動的テーブルに対するクエリは正常に実行されます。

  • 更新操作は正常に実行されます。

動的テーブルで使用されているベーステーブルの列の名前を変更する

  • 動的テーブルに対するクエリは正常に実行されます。

  • 更新操作は正常に実行されます。

DROP <basetable_name>

  • DROP 操作は失敗します。

  • 動的テーブルは正常に実行され続けます。

DROP <basetable_name> CASCADE

動的テーブルも削除され、タスクはキャンセルされます。

動的テーブルで使用されていないベーステーブルの列を削除する

  • 動的テーブルに対するクエリは正常に実行されます。

  • 更新操作は正常に実行されます。

動的テーブルで使用されているベーステーブルの列を削除する

DROP 操作は失敗します。

TRUNCATE <basetable_name>

  • 動的テーブルが更新される前にベーステーブルを切り捨てると、動テーブルに対するクエリはデータを返します。

  • 動的テーブルが更新された後にベーステーブルを切り捨てると、動的テーブルに対するクエリはデータを返しません。

INSERT、DELETE、UPDATE、または UPSERT <basetable_name>

データは、それに応じて動的テーブルに挿入、削除、更新、またはアップサートされます。