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

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

最終更新日:Mar 12, 2026

動的テーブルは、効率的で費用対効果の高い自動データフローとレイヤー化に利用できます。このトピックでは、動的テーブルの範囲と制限事項について説明します。

増分更新

動的テーブルが増分更新モードに設定されている場合、サポートされる機能と制限事項は次のとおりです。

制限事項

  • リソース使用量

    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 はディメンションテーブル等価 JOIN (INNER JOIN または LEFT JOIN) のみをサポートしており、FOR SYSTEM_TIME AS OF PROCTIME() 方式を使用する必要があります。複数テーブルデュアルストリーム JOIN はサポートされていません。詳細については、「ディメンションテーブル JOIN ステートメント」をご参照ください。

        説明

        ディメンションテーブル JOIN には次のセマンティクスがあります。各データレコードは、その時点でのディメンションテーブルデータの最新バージョンとのみ結合されます。これは、JOIN 操作が処理時にのみ発生することを意味します。JOIN 操作後にディメンションテーブルのデータが変更 (追加、更新、または削除) された場合、結合されたディメンションテーブルデータは更新されません。

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

    • 関数:COUNT、SUM、MIN/MAX、COUNT DISTINCT などの集計関数がサポートされています。並列クエリエンジン (PQE) によって実行される関数はサポートされていません。次の表に、その他のサポートされている関数を示します。

      関数名

      構文

      動的テーブルの例

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

      RB_BUILD_AGG

      RB_BUILD_AGG(<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 (
        -- Dynamic Table properties
        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

はい

リフレッシュ

  • 非パーティション化テーブルと子パーティションをリフレッシュできます。

  • 親パーティションをリフレッシュすることはできません。

DROP DYNAMIC TABLE

はい

DROP DYNAMIC TABLE Column

いいえ

TRUNCATE DYNAMIC TABLE

いいえ

DML (INSERT/UPDATE/DELETE) DYNAMIC TABLE

いいえ

ADD Column

いいえ

リシャーディング

いいえ

説明

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

CREATE TABLE AS/LIKE

いいえ

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

操作

権限要件

CREATE DYNAMIC TABLE

  • テーブル作成権限。

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

ALTER DYNAMIC TABLE

  • テーブル作成権限。

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

DROP DYNAMIC TABLE

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

SELECT DYNAMIC TABLE

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

REFRESH DYNAMIC TABLE

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

説明

親パーティションをリフレッシュすることはできません。

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

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

ベーステーブルの操作

動的テーブルの動作

RENAME <basetable_name>

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

  • リフレッシュ操作は失敗します。

RENAME <column_name_not_used_by_dynamic_table>

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

  • リフレッシュ操作は正常に実行されます。

RENAME <column_name_used_by_dynamic_table>

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

  • リフレッシュ操作は正常に実行されます。

DROP <basetable_name>

  • DROP 操作は失敗します。

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

DROP <basetable_name> CASCADE

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

DROP <column_not_used_by_dynamic_table>

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

  • リフレッシュ操作は正常に実行されます。

DROP <column_used_by_dynamic_table>

DROP 操作は失敗します。

TRUNCATE <basetable_name>

  • 動的テーブルのリフレッシュ前にベーステーブルを TRUNCATE した場合、動的テーブルへのクエリはデータを返します。

  • 動的テーブルのリフレッシュ後にベーステーブルを TRUNCATE した場合、動的テーブルへのクエリはデータを返しません。

INSERT/DELETE/UPDATE/UPSERT <basetable_name>

動的テーブルに対して INSERT、DELETE、UPDATE、または UPSERT 操作を実行できます。