全部產品
Search
文件中心

DataWorks:使用Hologres動態表

更新時間:Mar 05, 2026

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());

步驟二:進入動態表建立嚮導

  1. 進入DataWorks工作空間列表頁,在頂部切換至目標地區,找到目標工作空間,單擊操作列的快速進入 > Data Studio,進入Data Studio。

  2. 在左側導覽列單擊image,進入資料目錄模組。

  3. 資料目錄地區的Hologres類型下找到目標Hologres執行個體,依次展開目錄,單擊動態表右側的image表徵圖,進入建立動態表頁面。

    說明
    • 如果您使用的是標準模式工作空間,在Hologres資料目錄下會看到開發生產兩個資料庫執行個體。建議您先在開發環境的資料庫中測試建立Hologres動態表,確認無誤後再於生產環境中建立。

    • 在標準模式工作空間中,您在Hologres開發環境資料庫中建立的動態表不會自動同步到生產環境資料庫中。若要在生產環境資料庫中查詢使用這些表,您需要在生產環境資料庫內單獨建立Hologres動態表。

步驟三:定義查詢邏輯並先行編譯(關鍵步驟)

進入動態表建立頁面之後,填寫查詢邏輯並編譯。

  1. 填寫基礎資訊

    • 動態表名稱:輸入一個唯一的表名,例如 dt_user_orders_agg

    • 描述:填寫表的用途,例如“按使用者彙總的訂單統計”。

  2. 編寫資料產生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;
  3. 執行先行編譯

    編寫完成後,單擊SQL編輯器上方的先行編譯按鈕。先行編譯是一個核心功能,它會即時與Hologres引擎互動,完成以下任務:

    • 校正文法:檢查您的SELECT語句是否符合SQL規範。

    • 推斷重新整理模式:分析查詢邏輯和源表屬性,判斷支援哪些重新整理模式(自動、增量、全量)。

    • 解析欄位:如果文法正確,自動解析出動態表的輸出欄位、資料類型等。

    先行編譯結果反饋

    • 成功:系統會提示“文法正確”並列出支援的重新整理模式。您可以繼續後續配置。

    • 失敗:如果SQL有誤或邏輯不滿足動態表要求,系統會明確提示錯誤原因。請根據提示修改SQL後,再次先行編譯。

  4. (可選)查看並編輯欄位詳情

    • 先行編譯成功後,您可以單擊欄位詳情頁簽。

    • 在這裡,您可以查看系統解析出的所有欄位、類型和非空屬性,並可以在描述列為每個欄位添加註釋,以提高中繼資料可讀性。

此處無需關注分區配置和進階參數配置。參數說明,請參見附錄:配置項說明

步驟四:配置資料重新整理策略

先行編譯成功後,頁面右側的重新整理策略面板將變為可配置狀態。

說明

更多參數解釋,更參考Hologres重新整理模式與資源

  1. 基礎參數

    • 表類型:由於未選擇分區欄位,系統自動識別為非分區表

    • 重新整理策略:選擇增量重新整理,以實現低延遲的資料同步。

    • 重新整理觸發方式:選擇Hologres自動重新整理

    • 是否自動重新整理資料:保持預設的

    • 資料新鮮度:設定為 5 分鐘。此參數定義資料的最大延遲時間。系統會根據資料流入情況動態觸發重新整理,以確保動態表的資料相比源表的延遲始終在 5 分鐘以內。

    • 增量重新整理消費基表方式:選擇stream。這是推薦的低延遲流式消費方式。

    • Hologres計算資源:選擇 Serverless資源。這可以避免重新整理任務佔用您寶貴的執行個體自有資源,實現資源隔離。

  2. 進階參數(可選):此部分用於設定特殊的GUC參數,一般保持預設即可。詳情請參見GUC參數

步驟五:發布

  1. 確認所有配置無誤後,單擊頁面頂部的發布按鈕。

  2. 在彈出的確認對話方塊中,再次單擊發布

恭喜!您已成功建立並發布了一個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);

步驟二:進入動態表建立嚮導

  1. 進入DataWorks工作空間列表頁,在頂部切換至目標地區,找到目標工作空間,單擊操作列的快速進入 > Data Studio,進入Data Studio。

  2. 在左側導覽列單擊image,進入資料目錄模組。

  3. 資料目錄地區的Hologres類型下找到目標Hologres執行個體,依次展開目錄,單擊動態表右側的image表徵圖,進入建立動態表頁面。

步驟三:定義查詢邏輯並先行編譯

  1. 填寫基礎資訊

    • 動態表名稱dwd_user_new_user_detail_di

    • 描述:每日新增使用者明細統計

  2. 編寫資料產生SQL

    編寫一個SQL,它會從 users 表中提取所有使用者記錄。不需要在WHERE子句中手動過濾時間,動態表的分區機制會自動處理。

    SELECT 
        user_id,
        user_name,
        region,
        registration_time, -- 原始的精確時間欄位可以保留,方便查詢
        CAST(registration_time AS DATE) AS ds -- 【核心】將時間戳記轉換為DATE類型,作為分區鍵
    FROM public.users;
  3. 執行先行編譯:單擊先行編譯按鈕。成功後,系統會解析出欄位資訊。

步驟四:選擇分區欄位(關鍵步驟)

這是建立分區表的關鍵一步。

  • 分區欄位資訊地區,單擊分區字的下拉框。

  • 選擇新欄位 ds 作為分區欄位。

選擇分區欄位後,DataWorks會自動識別此表為分區表,並展示出分區相關的配置項。

步驟五:配置分區和重新整理策略

說明

更多參數解釋,更參考Hologres分區屬性

  1. 分區配置

    • 分區屬性:自動顯示為邏輯分區

    • 分區格式:選擇 yyyy-mm-dd。這個格式現在與我們分區鍵dsDATE類型)的格式完全符合。

    • 分區重新整理範圍: 設定為 7 day

    • 分區管理 > 分區到期時間長度 : 設定為 30 day

  2. 重新整理策略配置

    • 重新整理策略:選擇 自動重新整理

    • 重新整理觸發方式:選擇Hologres自動重新整理

    • 資料新鮮度:設定為 10 minute

    • Hologres計算資源:選擇Serverless資源

步驟六:發布

單擊頁面頂部的發布按鈕。

後續操作與驗證

  1. 查看分區:發布成功後,展開 dwd_user_new_user_detail_di 表,您會看到根據日期(如 2026-02-27)建立的分區子表。

  2. 驗證資料

    • 建立一個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'已成功進入了當天的分區。

      image

查看、監控與管理動態表

動態表是“活”的,對其運行狀態的監控至關重要。

  1. 導航至詳情頁:在資料目錄的動態表列表中,單擊剛剛建立的 dt_user_orders_agg 表。

  2. 查看靜態資訊

    • 明細資訊:查看錶的欄位列表、類型、主鍵等 schema 資訊。

    • 基礎資訊:回顧表的核心配置,如負責人、資料重新整理邏輯(SQL)和重新整理策略。

    • DDL:查看並複製代碼以建立該動態表的完整DDL語句,方便遷移或複現。

  3. 監控產出資訊(核心營運頁面)

    切換到產出資訊頁簽,這是監控動態表健全狀態的關鍵頁面。

    • 操作按鈕

      • 轉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支援列存行存行列共存三種儲存模式。預設為列存。詳情請參見表格儲存體格式:列存、行存、行列共存

  • 列存適合各種OLAP情境的複雜查詢。

  • 行存適用於基於主鍵(PK)的KV查詢情境。

  • 行列共存則同時適用列存和行存的情境。

Table Group

選擇您在Hologres資料來源中建立內部表產生的Table Group名稱,詳情請參見Table Group管理

儲存策略

Hologres的資料存放區類型分為標準儲存(熱儲存)、低頻訪問儲存(冷儲存)兩種儲存策略。

  • 熱儲存即全SSD熱儲存,是Hologres的預設儲存,滿足低延時、高效能訪問資料需求,對於大多數使用情境而言,標準儲存是最有效且最具成本效益的選擇。

  • 冷儲存即全HDD冷存,滿足低頻訪問資料的低成本儲存需求,適用於對延遲不敏感或不常訪問的超大型資料集。

詳情請參見資料階層式存放區

表資料生命週期

您可在此處自訂動態表的最巨量資料生命週期。

Binlog

您可在此處選擇開啟(replica)或關閉(none)訂閱Hologres Binlog日誌資訊,預設關閉。詳情請參見訂閱Hologres Binlog

Binlog 生命週期

當您選擇開啟(replica)訂閱Hologres Binlog日誌資訊後,才能在此設定Hologres Binlog日誌資訊儲存的最大生命週期,詳情請參見訂閱Hologres Binlog

欄位屬性

欄位屬性設定,主要包含對欄位名對應的分布列分段列聚簇列位元影像列字典編碼列進行選擇設定。您可根據頁面說明進行選擇設定,詳情請參見管理內部表