星型建模基础表的增量刷新实现方法问询(两类场景)
星型模型增量刷新方案(两类场景)
场景1:基于单表创建星型模型
可实现增量刷新,具体步骤如下:
- 给源表
tblA配置增量刷新规则:指定时间戳、自增ID等增量标识字段,仅拉取上次刷新后新增/更新的数据,避免全量读取。 - 维度表增量更新:
- 从本次拉取的
tblA增量数据中,提取各维度对应的字段内容。 - 将提取的维度值与现有维度表数据对比,仅插入新增的维度记录(避免重复),同时生成对应的新维度ID。
- 从本次拉取的
- 事实表增量更新:
- 将
tblA的增量数据与更新后的维度表关联,把原名称列替换为对应的维度ID。 - 将处理后的增量数据追加到现有事实表;若源表存在数据修改场景,需根据事实表主键匹配更新对应记录。
- 将
场景2:基于两表联合结果创建星型模型
可实现增量刷新,核心是将增量逻辑下推至源端,减少数据传输量与源库负载,具体步骤:
- 分别为
tblA和tblB配置独立的增量刷新规则:各自基于自身的增量标识字段(时间戳/自增ID),仅拉取上次刷新后的新增/更新数据。 - 对两张表的增量数据执行
Union操作,得到增量版tblC,而非全量合并后再处理。 - 维度表增量更新:从增量版
tblC中提取维度值,对比现有维度表插入新记录并生成新维度ID(逻辑同场景1)。 - 事实表增量更新:将增量版
tblC与维度表关联,替换为维度ID后追加到事实表;若需处理数据修改,根据主键匹配更新对应记录。 - 源端优化(针对SQL Server):直接在源端编写带增量条件的Union查询,例如:
直接拉取增量合并数据,进一步降低源库查询负载。SELECT * FROM tblA WHERE update_time > @last_refresh_time UNION SELECT * FROM tblB WHERE update_time > @last_refresh_time
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

