Palantir Foundry数据同步:基于时间戳的增量更新事务选型与查询方案
Palantir Foundry 增量同步(新增+更新)解决方案
核心配置
- 事务类型:选择 Merge Transaction。该类型支持基于主键的合并操作,既能插入源端新增记录,也能覆盖Foundry中已存在主键的旧记录,完全匹配你新增+更新的需求。
- Incremental开关:必须开启。开启后Foundry会自动跟踪每次同步的时间戳,仅处理源端在上次同步后有变化的数据,避免全量扫描,效率远高于Snapshot方案。
对应的查询语句
假设源表为source_db.source_table,Foundry目标表为foundry_target_table,以下是完整的增量同步SQL:
-- 筛选源端增量数据(上次同步后新增/修改的记录) WITH incremental_source AS ( SELECT id, created_date, modified_date, -- 替换为你实际需要同步的其他字段 column_a, column_b FROM source_db.source_table -- 利用Foundry内置增量变量,仅取上次同步后更新的记录 WHERE modified_date > @incremental.limit ) -- 合并到目标表 MERGE INTO foundry_target_table AS target USING incremental_source AS source -- 基于主键ID匹配 ON target.id = source.id -- 匹配到则更新指定字段 WHEN MATCHED THEN UPDATE SET target.created_date = source.created_date, target.modified_date = source.modified_date, target.column_a = source.column_a, target.column_b = source.column_b -- 未匹配到则插入新记录 WHEN NOT MATCHED THEN INSERT (id, created_date, modified_date, column_a, column_b) VALUES (source.id, source.created_date, source.modified_date, source.column_a, source.column_b)
关键注意事项
- 确保源端
MODIFIED_DATE字段准确可靠:每次数据修改(包括新增)都要同步更新该字段,否则增量筛选会遗漏需要更新的记录。 @incremental.limit是Foundry内置变量,第一次运行时自动取极小值(如1970-01-01)拉取全量数据;后续运行仅处理上次同步时间后的增量数据。- 目标表必须已设置
ID为主键,否则Merge Transaction无法正常执行匹配逻辑。
内容的提问来源于stack exchange,提问作者Snowman
相关产品推荐
相关产品推荐

