Hologres 動的テーブルは、増分データ更新を自動的に実行し、クエリを高速化する強力な機能です。DataWorks の データカタログ では、Hologres 動的テーブルを管理するための直感的なビジュアルインターフェイスが提供されます。DataWorks を使用することで、複雑なデータ定義言語(DDL)ステートメントを記述することなく、動的テーブルの作成、構成、監視、および管理が可能です。これにより、リアルタイムおよびニアリアルタイムのデータアプリケーション構築プロセスが簡素化されます。
制限事項
Hologres インスタンスは V3.1 以降 である必要があります。
Hologres 動的テーブルの機能および制限事項について詳しくは、「動的テーブルの対応機能と制限事項」をご参照ください。
事前準備
新しいバージョンのData Development (Data Studio) を使用する を選択した DataWorks ワークスペースを作成し、Hologres エンジンを含むコンピューティングリソースグループをアタッチします。詳細については、「ワークスペースの構成」および「Resource Management」をご参照ください。
DataWorks 内に Hologres データソースを作成し、接続性テストが正常に完了することを確認します。詳細については、「Hologres コンピューティングリソースのアタッチ」をご参照ください。
クイックスタート:自動更新型動的テーブルの作成
このクイックスタートでは、非パーティション化テーブル の動的テーブルを作成する手順を説明します。このテーブルは、ソーステーブル orders から注文データを自動的かつ増分的に集計し、データが 5 分以内に更新されることを保証します。
ステップ 1:データの準備
開始する前に、Hologres データベース内にソーステーブルを準備してください。増分更新を有効にするには、ソーステーブルでバイナリロギング(binlog)を有効化する必要があります。以下の SQL ステートメントを DataWorks の Hologres SQL ノードまたは任意の Hologres クライアントで実行して、orders という名前の注文テーブルを作成します。
-- ソーステーブルを作成し、増分更新をサポートするために Binlog を有効化
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
user_name TEXT,
price FLOAT,
order_time TIMESTAMPTZ
) WITH (
binlog_level = 'replica', -- 要点:Binlog の有効化
binlog_ttl = '86400' -- Binlog の保持期間(秒単位)。例:1 日
);
-- 初期データを挿入
INSERT INTO orders VALUES
(1, 101, 'Alice', 99.9, NOW()),
(2, 102, 'Bob', 19.5, NOW()),
(3, 101, 'Alice', 25.0, NOW());ステップ 2:動的テーブル作成ウィザードへ移動
DataWorks コンソールの ワークスペース ページに移動します。上部のナビゲーションバーから目的のリージョンを選択します。目的のワークスペースを見つけ、操作 列の を選択します。
左側のナビゲーションウィンドウで、
アイコンをクリックして データカタログ モジュールを開きます。[データカタログ] エリアで、対象のHologresインスタンスを見つけ、フォルダを展開し、[動的テーブル] の横にある
アイコンを**クリック**して、動的テーブル作成ページを開きます。説明標準モードのワークスペースを使用している場合、Hologres の データカタログ 下に 開発用 データベースインスタンスと 本番用 データベースインスタンスが表示されます。Hologres 動的テーブルは、まず開発用データベースで作成・テストを行い、期待通りに動作することを確認した後に、本番環境で作成してください。
標準モードのワークスペースでは、開発用データベースで作成した動的テーブルは、本番用データベースに自動同期されません。これらのテーブルを本番用データベースで照会・利用するには、本番用データベースにも同一の Hologres 動的テーブルを作成する必要があります。
ステップ 3:クエリ論理の定義とプリコンパイル(重要ステップ)
動的テーブル作成ページを開いたら、クエリ論理を入力し、プリコンパイルを実行します。
基本情報を入力:
動的テーブル名:一意のテーブル名を入力します(例:
dt_user_orders_agg)。説明:テーブルの目的を入力します(例:「ユーザー別注文統計の集計」)。
データ生成 SQL の記述:フィールド情報 領域内の データ生成 SQL タブで、動的テーブルのデータ論理を定義する
SELECTクエリを記述します。重要SELECTステートメントのみを入力してください。CREATE DYNAMIC TABLEDDL コマンドは含めないでください。システムが自動的に設定を解析し、右側に完全な DDL ステートメントを表示します。SELECT user_id, user_name, COUNT(*) AS order_count, SUM(price) AS total_price FROM public.orders GROUP BY user_id, user_name;コードのプリコンパイル:
コードを記述した後、SQL エディター上部の プリコンパイル ボタンをクリックします。プリコンパイル は、Hologres エンジンとリアルタイムで連携するコア機能であり、以下のタスクを実行します:
構文検証:記述した
SELECTステートメントが SQL 標準に準拠しているかをチェックします。更新モードの推定:クエリ論理およびソーステーブルの属性を分析し、サポートされる更新モード(自動、増分、完全)を判断します。
フィールドの解析:構文が正しい場合、動的テーブルの出力フィールド、データ型、その他の詳細を自動的に解析します。
プリコンパイルのフィードバック:
成功:構文が正しいことが示され、サポートされる更新モードが一覧表示されます。その後、構成を進めることができます。
失敗:SQL に誤りがある場合や、動的テーブルの要件を満たさない論理の場合、システムから明確なエラーメッセージが提供されます。メッセージに基づいて SQL を修正し、再度プリコンパイルを実行してください。
(任意)フィールド詳細の表示および編集:
プリコンパイルが成功した後、フィールド詳細 タブをクリックします。
ここでは、システムが解析したすべてのフィールド、データ型、NOT NULL 属性を確認できます。また、説明 列に各フィールドのコメントを追加することで、メタデータの可読性を向上させることもできます。
パーティションや高度なパラメーターの構成は、この段階では不要です。パラメーターの説明については、「付録:構成項目の説明」をご参照ください。
ステップ 4:データ更新ポリシーの構成
プリコンパイルが成功した後、ページ右側の 更新ポリシー パネルで設定を構成できます。
パラメーターの詳細については、「Hologres の更新モードおよびリソース」をご参照ください。
基本パラメーター:
テーブルタイプ:パーティションフィールドが選択されていないため、システムが自動的に 非パーティション化テーブル として識別します。
更新ポリシー:増分更新 を選択して、低遅延のデータ同期を実現します。
更新トリガーメソッド:Hologres 自動更新 を選択します。
データの自動更新:デフォルト値の はい のままにします。
データ新鮮度:5 分 に設定します。このパラメーターは、最大許容データ遅延を定義します。システムは、受信データに基づいて動的に更新をトリガーし、動的テーブルとソーステーブル間の遅延を常に 5 分以内に保ちます。
基盤テーブルの増分更新消費モード:stream を選択します。これは、低遅延ストリーム消費を実現する推奨モードです。
Hologres コンピューティングリソース:サーバーレスリソース を選択します。これにより、更新タスクが貴重なインスタンスリソースを占有せず、リソースの隔離が実現されます。
高度なパラメーター(任意):このセクションでは、特殊な GUC パラメーターを設定します。通常はデフォルト設定のままにしておけば問題ありません。詳細については、「GUC パラメーター」をご参照ください。
ステップ 5:公開
すべての構成が正しく設定されたことを確認した後、ページ上部の 公開 ボタンをクリックします。
表示される確認ダイアログボックスで、再度 公開 をクリックします。
これで、Hologres 動的テーブルの作成および公開が正常に完了しました。ソーステーブル orders に新しいデータが挿入または更新されると、動的テーブル dt_user_orders_agg の集計結果が約 5 分以内に自動的に更新されます。
高度な例:日次パーティション化動的テーブルの作成
この例では、パーティションテーブル の動的テーブルを作成する手順を説明します。このテーブルは、ユーザー登録テーブルから毎日の新規ユーザーを集計し、パーティションを自動的に作成および管理します。
ステップ 1:データの準備
まず、ユーザー登録情報を記録する users という名前のソーステーブルが必要です。このテーブルには、パーティション化に使用するタイムスタンプフィールドを含める必要があり、またバイナリロギング(binlog)を有効化する必要があります。
-- ユーザー登録テーブルを作成し、Binlog を有効化
CREATE TABLE users (
user_id INT PRIMARY KEY,
user_name TEXT,
region TEXT,
registration_time TIMESTAMPTZ -- ユーザー登録時刻(TIMESTAMPTZ 型)
) WITH (
binlog_level = 'replica',
binlog_ttl = '86400'
);
-- テストデータを挿入。日付は現在のタイムスタンプに置き換えてください。
INSERT INTO users VALUES
(1, 'Alice', 'CN-Hangzhou', '2026-02-27 10:00:00+08'),
(2, 'Bob', 'CN-Shanghai', '2026-02-27 14:30:00+08'),
(3, 'Charlie', 'CN-Beijing', (NOW() - INTERVAL '1 day')::TIMESTAMPTZ);ステップ 2:動的テーブル作成ウィザードへ移動
DataWorks コンソールの ワークスペース ページに移動します。上部のナビゲーションバーから目的のリージョンを選択します。目的のワークスペースを見つけ、操作 列の を選択します。
左側のナビゲーションウィンドウで、
アイコンをクリックして データカタログ モジュールを開きます。[データカタログ] エリアで、ターゲットの Hologres インスタンスを探し、フォルダを展開して、[動的テーブル] の横にある
アイコンをクリックして動的テーブルの作成ページを開きます。
ステップ 3:クエリ論理の定義とプリコンパイル
基本情報を入力:
動的テーブル名:
dwd_user_new_user_detail_di説明:日次新規ユーザー詳細統計
データ生成 SQL の記述:
usersテーブルからすべてのユーザーレコードを抽出する SQL ステートメントを記述します。時間による手動フィルターは、動的テーブルのパーティショニングメカニズムが自動的に処理するため、WHERE句において不要です。SELECT user_id, user_name, region, registration_time, -- 照会のために元の正確な時刻フィールドを保持可能 CAST(registration_time AS DATE) AS ds -- [要点] タイムスタンプを DATE 型に変換し、パーティションキーとして使用 FROM public.users;コードのプリコンパイル:プリコンパイル ボタンをクリックします。プリコンパイルが成功すると、システムがフィールド情報を解析します。
ステップ 4:パーティションフィールドの選択(重要ステップ)
パーティション化テーブルを作成するうえでの鍵となるステップです。
パーティションフィールド情報 領域で、パーティションフィールド のドロップダウンリストをクリックします。
新規フィールド
dsをパーティションフィールドとして選択します。
パーティションフィールドを選択すると、DataWorks が自動的にパーティション化テーブルとして識別し、パーティション関連の構成項目を表示します。
ステップ 5:パーティションおよび更新ポリシーの構成
パラメーターの詳細については、「Hologres のパーティションプロパティ」をご参照ください。
パーティション構成:
パーティションプロパティ:自動的に 論理パーティション として表示されます。
パーティションフォーマット:
yyyy-mm-ddを選択します。このフォーマットは、dsというパーティションキー(DATE型)のフォーマットと一致します。パーティション更新範囲:
7 日に設定します。パーティション管理 > パーティションの有効期限:
30 日に設定します。
更新ポリシー構成:
更新ポリシー:自動更新 を選択します。
更新トリガーメソッド:Hologres 自動更新 を選択します。
データ新鮮度:
10 分に設定します。Hologres コンピューティングリソース:サーバーレスリソース を選択します。
ステップ 6:公開
ページ上部の 公開 ボタンをクリックします。
次のステップおよび検証
パーティションの表示:テーブルが公開された後、
dwd_user_new_user_detail_diテーブルを展開します。日付に基づいて作成されたパーティションサブテーブル(例:2026-02-27)が表示されます。データの検証:
Hologres SQL ノードを作成し、
usersテーブルに当日の新しいデータを挿入します:INSERT INTO users VALUES (4, 'David', 'CN-Shenzhen', '2026-02-27 18:00:00+08');約 10 分待った後、新しいパーティションキー
dsを使用して、より効率的なクエリを実行します:-- 効率的なクエリ方法:パーティションキーで直接フィルター -- 即座に検証する場合は、テーブルを手動で更新できます:REFRESH DYNAMIC TABLE dwd_user_new_user_detail_di PARTITION (ds = '2026-02-27'); SELECT * FROM dwd_user_new_user_detail_di WHERE ds = '2026-02-27';新しいユーザー「David」が当日のパーティションに正常に追加されたことが確認できます。

動的テーブルの表示、監視、および管理
動的テーブルはアクティブな状態であるため、その運用ステータスを監視することが重要です。
詳細ページの開く:データカタログ内の動的テーブル一覧で、作成した
dt_user_orders_aggテーブルをクリックします。静的情報の表示
詳細:フィールド一覧、データ型、プライマリキーなどのテーブルスキーマ情報を表示します。
基本情報:所有者、データ更新ロジック(SQL)、更新ポリシーなどのテーブルの主要構成を確認します。
DDL:動的テーブル作成に使用された完全な DDL ステートメントを表示およびコピーします。これは、移行またはレプリケーションに役立ちます。
出力情報の監視(主な運用・保守ページ)
出力情報 タブに切り替えます。これは、動的テーブルの運用ステータスを監視するためのキーページです。
操作ボタン:
完全テーブルへの変換:テーブルの更新モードを永続的に
完全更新に変更し、自動更新を停止します。自動または増分更新モードでのみ表示されます。更新の一時停止 / 更新の再開:Hologres による自動更新を一時的に停止または再開します。
手動更新:データを即時に更新するための更新タスクを手動でトリガーします。
更新中のデータ:更新タスクが実行中の場合、PID、クエリ ID、ステータス、実行時間などのリアルタイム情報をここで表示します。
出力履歴:すべての更新タスクの履歴を記録します。トラブルシューティングに非常に有用です。
クエリ ID:過去の更新タスクの固有 ID です。Hologres での詳細なトラブルシューティングに使用できます。
更新モード:例:
増分更新。ステータス:タスクの最終ステータス(成功/失敗)。
実行時間(秒):タスクの総実行時間です。
データ消費遅延(秒):(増分更新のみ)動的テーブルのデータ処理遅延を測定します。
コンピューティングリソース…:タスクによって消費されたリソースを記録します。コスト分析およびパフォーマンス最適化に役立ちます。
動的テーブルの変更および削除
動的テーブルの変更:データカタログで動的テーブルを見つけ、詳細ページの右上隅にある 編集 ボタンをクリックして編集ページを開きます。ほとんどの構成項目を変更できます。変更可能なパラメーターについては、「動的テーブルの変更」をご参照ください。
動的テーブルの削除:データカタログ内の動的テーブル一覧で、対象のテーブルを右クリックし、削除 を選択します。
付録:構成項目の説明
1.基本情報、フィールド情報、およびパーティションフィールド
フィールド情報(SQL):動的テーブルのデータソースを定義する
SELECTクエリです。プリコンパイル は必須ステップです。パーティションフィールド:
未選択: 非パーティション化テーブル を作成します。
日時/日付型フィールドを選択: パーティションテーブル を作成します。システムが自動的にパーティション化テーブル構成モードに切り替わります。
2.データ更新構成(コア)
一般構成
更新ポリシー
自動更新:(推奨) Hologres がパフォーマンスと使いやすさのバランスを考慮し、増分更新または完全更新を自動的に決定します。
増分更新:増分更新のみを強制します。データ新鮮度が極めて重要なシナリオに適しています。
完全更新:更新ごとにデータを完全に再計算します。プライマリキーまたは Binlog がないソーステーブル、または複雑なクエリ論理に適しています。
更新トリガーメソッド
現在、Hologres 自動更新 のみがサポートされています。
データの自動更新:マスタースイッチです。
データ新鮮度:許容される最大データ遅延を定義します。これは自動更新をトリガーするコア条件です。
基盤テーブルの増分更新消費モード:Binlog の消費方法を定義します。stream がデフォルトかつ推奨モードです。
Hologres コンピューティングリソース:
サーバーレスリソース:(推奨) Hologres サーバーレスリソースを使用して更新を実行します。これにより、インスタンス自体のコンピューティングリソースを占有せず、リソースの隔離が実現されます。
このインスタンスのリソース(ローカル):インスタンス自体のコンピューティングリソースを使用します。仮想ウェアハウス型(V4.0+)のインスタンスの場合、特定の計算グループを選択できます。
3.パーティション構成(パーティションテーブルのみ表示)
パーティションフィールドを選択すると、以下の構成項目が追加されます。すべての新しい動的テーブルは 論理パーティション です。
パーティションフォーマット:(必須) パーティションフィールドの値に基づいてパーティションを生成する方法を定義します。たとえば、フィールド型が
TIMESTAMPTZで、フォーマットがyyyy-mm-ddに設定されている場合、日次パーティションが作成されます。パーティション更新範囲:自動更新の対象となるアクティブパーティションの範囲を定義します。たとえば、「過去 7 日間」と設定した場合、Hologres は過去 7 日間のパーティションのみを自動的に更新します。それより古いパーティションは自動更新されず、リソースを節約できます。
パーティション管理(デフォルトで折りたたまれています):
パーティションの有効期限:パーティションのライフサイクル(TTL)を設定します。有効期限が切れたパーティションは自動的に削除されます。
パーティションのホットデータ保持期間:ホットデータとコールドデータの階層化ストレージと併用し、パーティションデータがホットストレージ(SSD)に保持される期間を定義します。
4.高度な設定(テーブルプロパティ)
これらは、動的テーブル自体に適用される物理プロパティであり、標準の Hologres テーブルの設定と同様です。
パラメーター | 説明 |
ストレージモード | Hologres では、列のストア、行のストア、行・列ハイブリッドストア の 3 種類のストレージモードがサポートされています。デフォルトモードは 列のストア です。詳細については、「テーブルのストレージ形式:列のストア、行のストア、および行・列ハイブリッドストア」をご参照ください。
|
テーブルグループ | Hologres データソース内で内部テーブルを作成する際に生成される |
ストレージポリシー | Hologres では、標準ストレージ(ホットストレージ)および低頻度アクセスストレージ(コールドストレージ)の 2 種類のストレージポリシーがサポートされています。
詳細については、「ホットデータとコールドデータの階層化ストレージ」をご参照ください。 |
テーブルデータのライフサイクル | 動的テーブルのカスタム最大生存時間を設定します。 |
Binlog | Hologres バイナリログへのサブスクリプションを有効(replica)または無効(none)にするかを選択します。デフォルトでは、この機能は無効になっています。詳細については、「Hologres Binlog へのサブスクリプション」をご参照ください。 |
Binlog のライフサイクル | Binlog を replica に設定してサブスクリプションを有効化した後のみ、Hologres バイナリログの最大保存ライフサイクルを設定できます。詳細については、「Hologres Binlog へのサブスクリプション」をご参照ください。 |
フィールドプロパティ | フィールドプロパティを設定します。これには、分散カラム、セグメントカラム、クラスタリングカラム、ビットマップカラム、辞書エンコーディングカラム の選択が含まれます。各 フィールド名 に対して、ページ上の説明に基づいてプロパティを構成します。詳細については、「内部テーブルの管理」をご参照ください。 |