Hologres動態表(Dynamic Table)是實現資料自動累加式更新、加速查詢的強大引擎。DataWorks通過其資料目錄功能,為Hologres動態表提供一套直觀、強大的可視化管理介面。您無需手寫複雜的DDL,即可在DataWorks中完成動態表的建立、配置、監控和營運,輕鬆構建即時、准即時的資料應用。
使用限制
建立Hologres執行個體時需選擇Hologres V3.1及以上版本。
關於Hologres動態表本身在SQL查詢、函數支援等方面的詳細限制,請參見Hologres官方文檔:Dynamic Table支援範圍和限制。
準備工作
已建立勾選使用新版數據開發(Data Studio)的DataWorks工作空間,並綁定包含Hologres引擎的計算資源群組。詳情請參見配置工作空間和計算資源管理。
已在DataWorks中建立Hologres資料來源,並完成連通性測試。詳情請參見綁定Hologres計算資源。
快速入門:建立自動重新整理動態表
本樣本將引導您建立一個非分區動態表,該表會自動、增量地彙總源表 orders 的訂單資料,並保持資料在5分鐘內自動重新整理。
步驟一:資料準備
在開始之前,在Hologres資料庫中準備一張源表。為了實現增量重新整理,源表需要開啟Binlog。在DataWorks的Hologres SQL節點或任何Hologres用戶端中執行以下SQL,建立一張訂單表 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保留時間長度,單位秒,例如一天
);
-- 插入一些初始資料
INSERT INTO orders VALUES
(1, 101, 'Alice', 99.9, NOW()),
(2, 102, 'Bob', 19.5, NOW()),
(3, 101, 'Alice', 25.0, NOW());步驟二:進入動態表建立嚮導
進入DataWorks工作空間列表頁,在頂部切換至目標地區,找到目標工作空間,單擊操作列的,進入Data Studio。
在左側導覽列單擊
,進入資料目錄模組。在資料目錄地區的Hologres類型下找到目標Hologres執行個體,依次展開目錄,單擊動態表右側的
表徵圖,進入建立動態表頁面。說明如果您使用的是標準模式工作空間,在Hologres資料目錄下會看到開發和生產兩個資料庫執行個體。建議您先在開發環境的資料庫中測試建立Hologres動態表,確認無誤後再於生產環境中建立。
在標準模式工作空間中,您在Hologres開發環境資料庫中建立的動態表不會自動同步到生產環境資料庫中。若要在生產環境資料庫中查詢使用這些表,您需要在生產環境資料庫內單獨建立Hologres動態表。
步驟三:定義查詢邏輯並先行編譯(關鍵步驟)
進入動態表建立頁面之後,填寫查詢邏輯並編譯。
填寫基礎資訊:
動態表名稱:輸入一個唯一的表名,例如
dt_user_orders_agg。描述:填寫表的用途,例如“按使用者彙總的訂單統計”。
編寫資料產生SQL:在欄位資訊地區的資料產生SQL頁簽中,編寫定義動態表資料邏輯的
SELECT查詢。重要此處只需填寫
SELECT語句本身,無需包含CREATE DYNAMIC TABLEDDL命令。DDL完整語句系統將根據配置項自動解析並在右側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後,再次先行編譯。
(可選)查看並編輯欄位詳情:
先行編譯成功後,您可以單擊欄位詳情頁簽。
在這裡,您可以查看系統解析出的所有欄位、類型和非空屬性,並可以在描述列為每個欄位添加註釋,以提高中繼資料可讀性。
此處無需關注分區配置和進階參數配置。參數說明,請參見附錄:配置項說明。
步驟四:配置資料重新整理策略
先行編譯成功後,頁面右側的重新整理策略面板將變為可配置狀態。
更多參數解釋,更參考Hologres重新整理模式與資源。
基礎參數:
表類型:由於未選擇分區欄位,系統自動識別為非分區表。
重新整理策略:選擇增量重新整理,以實現低延遲的資料同步。
重新整理觸發方式:選擇Hologres自動重新整理。
是否自動重新整理資料:保持預設的是。
資料新鮮度:設定為 5 分鐘。此參數定義資料的最大延遲時間。系統會根據資料流入情況動態觸發重新整理,以確保動態表的資料相比源表的延遲始終在 5 分鐘以內。
增量重新整理消費基表方式:選擇stream。這是推薦的低延遲流式消費方式。
Hologres計算資源:選擇 Serverless資源。這可以避免重新整理任務佔用您寶貴的執行個體自有資源,實現資源隔離。
進階參數(可選):此部分用於設定特殊的GUC參數,一般保持預設即可。詳情請參見GUC參數。
步驟五:發布
確認所有配置無誤後,單擊頁面頂部的發布按鈕。
在彈出的確認對話方塊中,再次單擊發布。
恭喜!您已成功建立並發布了一個Hologres動態表。現在,當源表 orders 有新資料插入或更新時,動態表 dt_user_orders_agg 會在約5分鐘內自動更新其彙總結果。
進階樣本:建立按天分區動態表
本樣本將引導您建立一個分區動態表。該表將從一個使用者註冊表中,按天彙總每日的新增使用者,並自動建立和管理分區。
步驟一:資料準備
首先,我們需要一個記錄使用者註冊資訊的源表 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);步驟二:進入動態表建立嚮導
進入DataWorks工作空間列表頁,在頂部切換至目標地區,找到目標工作空間,單擊操作列的,進入Data Studio。
在左側導覽列單擊
,進入資料目錄模組。在資料目錄地區的Hologres類型下找到目標Hologres執行個體,依次展開目錄,單擊動態表右側的
表徵圖,進入建立動態表頁面。
步驟三:定義查詢邏輯並先行編譯
填寫基礎資訊:
動態表名稱:
dwd_user_new_user_detail_di描述:每日新增使用者明細統計
編寫資料產生SQL:
編寫一個SQL,它會從
users表中提取所有使用者記錄。不需要在WHERE子句中手動過濾時間,動態表的分區機制會自動處理。SELECT user_id, user_name, region, registration_time, -- 原始的精確時間欄位可以保留,方便查詢 CAST(registration_time AS DATE) AS ds -- 【核心】將時間戳記轉換為DATE類型,作為分區鍵 FROM public.users;執行先行編譯:單擊先行編譯按鈕。成功後,系統會解析出欄位資訊。
步驟四:選擇分區欄位(關鍵步驟)
這是建立分區表的關鍵一步。
在分區欄位資訊地區,單擊分區字段的下拉框。
選擇新欄位
ds作為分區欄位。
選擇分區欄位後,DataWorks會自動識別此表為分區表,並展示出分區相關的配置項。
步驟五:配置分區和重新整理策略
更多參數解釋,更參考Hologres分區屬性。
分區配置:
分區屬性:自動顯示為邏輯分區。
分區格式:選擇
yyyy-mm-dd。這個格式現在與我們分區鍵ds(DATE類型)的格式完全符合。分區重新整理範圍: 設定為
7 day。分區管理 > 分區到期時間長度 : 設定為
30 day。
重新整理策略配置:
重新整理策略:選擇 自動重新整理。
重新整理觸發方式:選擇Hologres自動重新整理。
資料新鮮度:設定為
10 minute。Hologres計算資源:選擇Serverless資源。
步驟六:發布
單擊頁面頂部的發布按鈕。
後續操作與驗證
查看分區:發布成功後,展開
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表。查看靜態資訊
明細資訊:查看錶的欄位列表、類型、主鍵等 schema 資訊。
基礎資訊:回顧表的核心配置,如負責人、資料重新整理邏輯(SQL)和重新整理策略。
DDL:查看並複製代碼以建立該動態表的完整DDL語句,方便遷移或複現。
監控產出資訊(核心營運頁面)
切換到產出資訊頁簽,這是監控動態表健全狀態的關鍵頁面。
操作按鈕:
轉Full表:將動態表的重新整理模式永久修改為
全量重新整理,並停止自動重新整理。僅在自動或增量重新整理模式下可見。暫停重新整理 / 恢複重新整理:臨時停止或恢複Hologres的自動重新整理。
手動重新整理:手動觸發一次重新整理任務,立即更新資料。
資料重新整理中:如果當前有重新整理任務正在執行,這裡會顯示該任務的即時資訊,如PID、Query ID、狀態、運行時間長度等。
產出歷史:記錄了每一次重新整理任務的歷史,是排查問題的金礦。
Query ID: 歷史重新整理任務的唯一ID,可用於在Hologres中進行深度問題排查。
重新整理模式:
增量重新整理(Incremental)等。狀態: 任務最終狀態(成功/失敗)。
運行時間長度(秒): 任務總耗時。
資料消費延遲(秒): (僅增量)衡量動態表資料處理的延遲。
計算資源...: 記錄任務消耗的資源情況,用於成本分析和效能最佳化。
修改與刪除動態表
修改動態表:在資料目錄中找到動態表,單擊詳情頁右上方的編輯按鈕即可進入編輯頁面。大部分配置項都支援修改。關於具體哪些參數支援修改,請參考Hologres官方文檔:ALTER DYNAMIC TABLE。
刪除動態表:在資料目錄的動態表列表中,按右鍵目標表,選擇刪除。
附錄:配置項說明
1. 基礎資訊、欄位資訊、分區欄位
欄位資訊 (SQL):定義動態表資料來源的
SELECT查詢,先行編譯是必須步驟。分區欄位:
不選擇:建立非分區表。
選擇一個時間/日期類型欄位:建立分區表,系統將自動切換到分區表配置模式。
2. 資料重新整理配置(核心)
通用配置
重新整理策略
自動重新整理:(推薦) Hologres自動決定採用增量或全量方式重新整理,兼顧效能和易用性。
增量重新整理:強制只進行增量重新整理。適用於對資料新鮮度要求高的情境。
全量重新整理:每次重新整理都完整地重新計算。適用於源表無主鍵、無Binlog,或查詢邏輯複雜的情境。
重新整理觸發方式
當前僅支援Hologres自動重新整理。
是否自動重新整理資料: 總開關。
資料新鮮度: 定義資料的最大可接受延遲,是自動重新整理的核心觸發依據。
增量重新整理消費基表方式: 定義消費Binlog的方式,stream(流式)為預設推薦。
Hologres計算資源:
Serverless資源: (推薦) 使用Hologres Serverless資源執行重新整理,不佔用執行個體自身計算資源,實現資源隔離。
本執行個體資源 (local): 使用執行個體自身的計算資源。若執行個體為計算群組形態(V4.0+),可選擇具體計算群組。
3. 分區配置(僅分區表可見)
當您選擇分區欄位後,會增加以下配置項。新版動態表均為邏輯分區。
分區格式: (必填) 定義如何根據分區欄位的值產生分區。例如,欄位類型為
TIMESTAMPTZ,格式選擇yyyy-mm-dd,則會按天建立分區。分區重新整理範圍: 定義自動重新整理的活躍分區範圍。例如“最近7天”,則Hologres僅自動重新整理最近7天的分區,更早的分區將不再自動重新整理,以節省資源。
分區管理(預設摺疊):
分區到期時間長度: 設定分區的生命週期(TTL),到期的分區將被自動刪除。
分區資料保持熱存時間長度: 結合冷熱階層式存放區,定義分區資料在熱儲存(SSD)中保留的時間。
4. 進階設定(表屬性)
這些是應用於動態表自身的物理屬性,與Hologres普通表設定類似。
參數 | 參數描述 |
儲存模式 | Hologres支援列存、行存和行列共存三種儲存模式。預設為列存。詳情請參見表格儲存體格式:列存、行存、行列共存。
|
Table Group | 選擇您在Hologres資料來源中建立內部表產生的 |
儲存策略 | Hologres的資料存放區類型分為標準儲存(熱儲存)、低頻訪問儲存(冷儲存)兩種儲存策略。
詳情請參見資料階層式存放區。 |
表資料生命週期 | 您可在此處自訂動態表的最巨量資料生命週期。 |
Binlog | 您可在此處選擇開啟(replica)或關閉(none)訂閱Hologres Binlog日誌資訊,預設關閉。詳情請參見訂閱Hologres Binlog。 |
Binlog 生命週期 | 當您選擇開啟(replica)訂閱Hologres Binlog日誌資訊後,才能在此設定Hologres Binlog日誌資訊儲存的最大生命週期,詳情請參見訂閱Hologres Binlog。 |
欄位屬性 | 欄位屬性設定,主要包含對欄位名對應的分布列、分段列、聚簇列、位元影像列、字典編碼列進行選擇設定。您可根據頁面說明進行選擇設定,詳情請參見管理內部表。 |