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。 |
字段属性 | 字段属性设置,主要包含对字段名对应的分布列、分段列、聚簇列、位图列、字典编码列进行选择设置。您可根据页面说明进行选择设置,详情请参见管理内部表。 |
