使用Palantir Agent同步Redshift数据至Foundry,时间戳列识别异常求助
解决Redshift Agent同步至Foundry后时间戳列识别为Long的问题
调整Agent的类型映射配置
Palantir Agent支持自定义JDBC类型到Foundry类型的映射,这是最根本的解决方式。找到Agent的agent-config.yaml配置文件,添加Redshift时间戳类型的映射规则:
- 将Redshift的
TIMESTAMP类型映射为Foundry的timestamp - 将
TIMESTAMPTZ(带时区时间戳)映射为Foundry的timestamp_tz
示例配置片段:
jdbc: typeMappings: - sourceType: "TIMESTAMP" targetType: "timestamp" - sourceType: "TIMESTAMPTZ" targetType: "timestamp_tz"
修改后重启Agent,重新执行数据同步任务即可。
在Redshift端转换时间戳为标准格式字符串
如果无法修改Agent配置,可在同步用的SQL查询中,将时间戳列转换为ISO 8601格式的字符串,Foundry会自动识别为时间戳类型:
SELECT id, username, -- 转换普通时间戳为ISO格式 TO_CHAR(created_at, 'YYYY-MM-DD"T"HH24:MI:SS.US') AS created_at, -- 带时区的时间戳添加UTC标识 TO_CHAR(updated_at, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') AS updated_at FROM your_redshift_table;
在Foundry中手动修正列类型(临时方案)
如果已同步的数据集出现类型错误,可直接在Foundry中调整:
- 打开目标数据集的Schema标签页
- 找到对应Long类型的列,点击编辑图标
- 将类型切换为
Timestamp或Timestamp with Timezone - 保存修改后,建议配合前两种方法确保后续同步不会重置类型
注意事项
- 先确认Redshift源列的实际类型:如果源列本身存储的是epoch毫秒值(而非标准TIMESTAMP类型),需要先在Redshift中通过
TIMESTAMP 'epoch' + your_column * INTERVAL '1 millisecond'转换为标准时间戳再同步 - 检查Agent使用的Redshift JDBC驱动版本:尽量使用官方最新驱动,避免类型映射的兼容性问题
内容的提问来源于stack exchange,提问作者M_R Chhabra
相关产品推荐
相关产品推荐

