如何在Palantir Foundry Code Repositories创建主键data health expectation
Palantir Foundry 持续保障数据集主键约束生效的实现方法
你可以通过「构建时硬拦截+产出后持续监控」的双层方案实现,全程用平台原生能力,不需要额外开发自定义组件:
方案1:在Python Transform代码中嵌入主键校验(源头拦截)
这个方案会在数据写入输出数据集之前执行校验,一旦触发主键约束违规,直接终止本次构建,坏数据不会生成新版本落盘,是最前置的防护手段。
- 直接使用Foundry transforms库内置的主键校验期望即可,不需要手写重复值统计逻辑,原生方法做了分布式性能优化,还会自动把违规主键值打印到构建日志方便排查:
from transforms.api import transform, Input, Output, Check from transforms import expectations as E @transform( source_data=Input("替换为你的上游输入数据集路径"), output_dataset=Output( "替换为你的输出数据集路径", checks=[ # 单主键直接传列名字符串,联合主键传列名列表即可 Check( E.primary_key("替换为你的主键列名"), "主键非空+唯一性约束校验", # 校验失败直接终止构建,观察期可临时设为"WARN"仅告警不阻断 on_error="FAIL" ) ] ) ) def compute(source_data, output_dataset): processed_df = source_data.dataframe() # 此处写你的原有数据清洗、转换逻辑 output_dataset.write_dataframe(processed_df)
- 注意:这个校验会自动覆盖主键约束的两个核心要求:主键列不存在null空值、主键值(或联合主键组合值)全局唯一,和你在数据集上配置的主键规则完全对齐。
方案2:配置Data Health期望规则(持续监控告警)
如果需要对数据集所有历史版本、后续每次产出做持续巡检,同时需要告警通知、下游阻断能力,可以在数据集的Data Health模块配置无代码规则:
- 操作路径:
- 打开目标数据集详情页,进入左侧导航的Data Health板块
- 点击新建期望规则,选择内置的
Primary key is valid规则模板 - 选中你之前配置的主键列(联合主键多选对应列即可),设置运行触发条件为「每次数据集新版本生成后自动运行」
- 配置失败策略:可选择校验失败时给数据集负责人发站内信/邮件告警,也可以开启「阻断下游依赖构建」开关,避免违规数据流入下游业务链路
- 规则生效后,你可以在Data Health面板查看历史每次校验的通过率、违规主键的采样明细,追踪约束违反的趋势。
落地建议
- 建议两个方案同时配置:代码层校验做第一道防线,从构建源头阻断坏数据;Data Health规则做第二道防线,覆盖长期监控、告警和下游链路防护
- 尽量使用平台内置的主键校验规则,不要手写
group by 主键 having count(1) > 1的自定义逻辑,内置规则针对大表做了计算优化,运行效率比自定义实现高30%以上,还自带违规值明细采集 - 如果你的主键是拼接生成的业务ID,可以额外加一个格式正则校验和主键校验绑定,避免出现格式不符合规范的主键值
内容的提问来源于stack exchange,提问作者domdomegg
相关产品推荐
相关产品推荐

