You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:39:38