恒川工业的 Supply Planner 打开缺料事件SD-260808-01,看到M-1042可用库存为 760 EA。WMS 的 800 EA 现存、20 EA 冻结和 20 EA 预留已经更新,ERP 订单需求却停在上一批次。页面公式没错,数字仍可能不能用于决定。
如果他据此提交 520 EA 的调拨方案AP-2048,问题就不再是“报表晚了一点”,而是数据链是否有资格驱动高影响 Action。
本篇要解决的问题
上一篇把 760 EA 区分为当前状态,把库存变动区分为事件,把昨日证据区分为快照,把库存曲线区分为 Time Series。现在必须继续向下追问:这些状态、事件、快照和测量怎样从 ERP、MES、WMS、SRM 进入 Foundry,经过什么规则,再成为 Ontology 中可信的 Property、Object 和 Link?
本篇只解决 Dataset 与 Pipeline。Data Connection 作为上游入口点到为止;对象怎样被索引、编辑和物化,留给第 17 篇。
一句话区分:Dataset 是 Foundry 中受治理、可版本化的数据资源;Pipeline 是把输入持续加工并交付为数据或Ontology输出的可运行转换链。
Pipeline Builder 则是 Foundry 建设数据集成 Pipeline 的主要应用,不是 Pipeline 本身。Palantir:Pipeline Builder overview
产品架构位置:六个词不在同一层
名词 | 类型 | 负责什么 | 不负责什么 |
表(table) | 数据的逻辑形态 | 用行列和 schema 表达结构化数据 | 不自动带来 Foundry 资源治理和版本 |
文件(file) | 存储单元 | 承载 Parquet、CSV、JSON 等内容 | 不是 Dataset 的全部语义 |
Dataset | Foundry 平台资源 | 封装文件集合,并提供 schema、权限、版本、随时间更新等能力 | 不等于 Object Type,也不定义业务 Action |
Pipeline | 数据转换与交付链 | 把输入经 Transform 生成一个或多个输出 | 不等于某段 SQL,也不替业务定义口径 |
Pipeline Builder | 建设应用 | 用图形和表单界面定义、预览、交付与治理 Pipeline | 不是运行结果或 Dataset |
Object Type | Ontology type | 定义现实实体或事件的身份、Property 与关系 | 不是一张源表的重命名 |
object datasource | Object Type 的数据支撑 | 把 datasource 列映射为 Property 值,并提供 Primary Key 数据 | 不等于 Object Type 定义本身 |
Dataset、Pipeline 和 Object Type 并非同一层级。Pipeline Builder 当前也可以在同一工作流中添加 Object Type、Link Type 或 Time Series 等 Ontology output;另一条常见路径是先交付清洗后的 Dataset,再在 Ontology Manager 建立 Object Type 和 property mapping。Palantir:Pipeline outputs
两条路径都要回答:哪一列是 Primary Key、对象粒度是什么、字段是否真是同一个业务含义。
Dataset:不是“Foundry 里的表”
官方将 Dataset 描述为数据落入 Foundry、直到映射进 Ontology 之间最基础的表示。其底层是对 backing file system 中一组文件的封装,平台在此之上提供权限、schema、版本控制和随时间更新的支持。Dataset 可承载结构化、半结构化和非结构化数据。Palantir:Datasets
因此,在 Dataset Preview 中看到行列,只代表当前 Dataset View 的一种展示。Dataset 还包含以下运行语义:
构件 | 它解决的问题 |
Files / Schema | 数据文件怎样解析,字段名和类型是什么 |
Transaction / View | 哪次原子文件变更形成当前可见状态 |
Branch | 开发和协作变化怎样隔离 |
Permissions / Markings | 谁能发现、读取或修改数据 |
Metadata / Lineage | 数据从哪里来,被谁依赖,发生过什么变化 |
Dataset 会随时间变化。官方当前列出SNAPSHOT、APPEND、UPDATE与DELETE四类 transaction;用户看到的通常是最新 view,而不是一份永远不变的上传文件。Palantir:Datasets
在恒川,raw_wms_inventory可以保存 WMS 某批次交付的库存状态,curated_inventory_position可以保存经过身份和单位统一后的结果。两者都是 Dataset,却承担不同的数据契约和权限责任。
Pipeline:不是“把表搬过去的接口”
Pipeline 是一张可运行的数据依赖图:从 Inputs 开始,经过清洗、过滤、Join、聚合、身份映射或派生计算,生成 Outputs,并通过 Build、Schedule、Health Check、Branch 和 Release 进入持续运行。
Inputs → Transforms → Preview → Deliver → Outputs
Pipeline Builder 让使用代码和不使用代码的建设者在同一工作流协作。当前官方工作流包括添加输入、变换或连接数据、预览结果、交付构建和添加输出;严格输出检查失败时会阻止 build,以减少意外破坏下游。Palantir:Pipeline Builder overview
Code Repositories 也能建设 Pipeline。Pipeline Builder 是主要应用,并非唯一创作入口;SQL、可视化 Transform、Python 或其他受支持逻辑只是实现方式。一个生产 Pipeline 还必须回答依赖、运行、质量、版本和交付责任。
Pipeline 不替恒川定义“可用库存”“已确认预留”“有效供应商承诺”。BA 要把 Transform 背后的业务语义写成可说明、可测试的规则。
object datasource:数据与对象之间的接口面
Object Type 是业务类型定义,object datasource(也称 backing datasource)是它的数据支撑。要让Inventory Position的 Object 实际拥有onHand、frozen、reserved、available和asOf值,建设者必须把 datasource 中的列映射为 Properties,并指定稳定且唯一的 Primary Key。Palantir:Create an object type
用最简形式表示:
一行 Dataset 记录不天然就是一个 Object。只有当粒度、身份、Property 语义和关系映射成立时,它才可以成为对象数据的来源。一个 Dataset 也可能只是中间计算或审计快照,根本不应进入 Ontology。
对象 datasource 后续怎样同步、索引,Action edit 怎样与 datasource 数据合并,以及对象怎样物化到下游,不在本篇展开。
恒川链路:760 EA 怎样从四套系统进入决定
第 12 篇已经把 ERPM-1042、WMSMAT1042-SH、供应商门户P-8821归并为Material / MAT-0001042。现在这份 Crosswalk 成为 Pipeline 的输入之一。
四类来源分别提供什么证据
来源 | 业务事实 | 本篇落点 | 主要用途 |
ERP |
|
| 需求与采购上下文 |
MES | 生产订单 |
| 判断需求时间与改序空间 |
WMS |
|
| 形成当前库存位置 |
SRM |
| 承诺当前状态与 change event Dataset | 评估催交和到料风险 |
Data Connection 可以同步外部系统数据供 Foundry 的数据集成、模型和 Ontology 使用。本篇把它视为上游入口,不讨论复制、虚拟访问和驻留选择。Palantir:Data Connection overview
继承旧稿的库存计算链
raw_wms_inventory → 校验 schema、warehouse_code 和 as_of_time → 用 Crosswalk 把 MAT1042-SH 解析为 MAT-0001042 → 统一数量单位为 EA → on_hand = 800 EA → frozen = 20 EA → reserved = 20 EA → available = on_hand - frozen - reserved → 800 - 20 - 20 = 760 EA → 执行唯一性、非空、单位、时效和非负检查 → curated_inventory_position
Pipeline 还把 ERP 订单、MES 生产状态和 SRM 承诺对齐到相同 Material、Plant、Warehouse 与时间口径,输出缺料决策所需的数据产品。Supply Planner 才能判断是调拨、催交、替代料还是改序,而不是只看一列 760。
若 ERP 订单需求和 WMS 库存的as_of_time超出允许差值,即使curated_inventory_position构建成功,应用也应标记证据过期或阻断高影响方案。Build 成功只证明计算链运行,不证明业务数据足够新。
承接时间建模:四种时间形态怎样进入数据链
第 14 篇形态 | Dataset / Pipeline 处理重点 | Ontology 消费方式 |
当前状态 | 选择每个业务键的当前有效记录,保留 |
|
业务事件 | 使用 Event ID、event time、recorded time、去重与修订规则 |
|
快照 | 固定粒度、业务截点、快照键和重算范围 | 历史分析或必要的 Snapshot Object,不覆盖当前状态 |
Time Series | 保留稳定系列键、timestamp、value、unit 与缺失语义 | 通过 time series sync 提供 TSP;不在本篇重讲配置 |
同一个 WMS 来源可以同时产生“当前库存”与“每日库存快照”,但它们不能共用一套未经说明的主键和更新方式。Dataset Contract 必须明确交付的是 current、event、snapshot 还是 series。
Dataset 与 Object Type 为什么不能画等号
比较项 | Dataset | Object Type |
所在位置 | Foundry 数据集成资源 | Ontology 语义与运营层 |
主要表达 | 文件、记录、schema 和版本状态 | 现实实体或事件的业务类型 |
身份 | 文件和记录的组织方式 | Primary Key 识别 Object |
关系 | Join / foreign key 等数据关系 | Link Type 表达业务关系 |
操作 | 不定义业务操作契约 | Action Type 可改变对象状态 |
消费者 | 数据工程、分析、模型与平台服务 | 业务用户、应用、Function 和 Agent |
raw_erp_purchase中的一行不应该自动成为Purchase Order Line;curated_inventory_position的宽表形状也不该强迫Material承载每个仓库的全部库存。应先从决策粒度定义 Object Type,再决定哪些 Dataset columns 支撑其 Properties 和 Links。
Batch、Incremental 与 Streaming 怎样选
选择不从“实时更先进”出发,而从 Decision Clock 和变化规模出发。
数据 | 决策需要 | 建议起点 |
Material 主数据 | 审批后数小时内可见 | Batch |
WMS 库存状态 | 排产前 20 分钟内可用 | Batch;规模和延迟需要时评估 Incremental |
高频库存变动事件 | 分钟或秒级触发研判 | Streaming;验证端到端最慢环节 |
月度供应商评级 | 月度评审 | Batch |
官方当前建议多数场景先建 Batch Pipeline;数据变化规模很大时再用 Incremental 提升性能、降低延迟。Streaming 适合极低延迟需求,但整条 Pipeline 只能和最慢组件一样快,且 Pipeline Builder 的 streaming capability 并非所有环境都可用。Palantir:Building pipelines
“实时”是端到端属性。WMS 秒级更新、ERP 每两小时刷新时,760 EA 不能被称为实时可用库存。
BA 工作台:Source–Dataset–Object Mapping
Source–Dataset–Object Mapping是本系列的 BA 交付物,不是 Palantir 官方固定模板。它在数据设计和 UAT 前使用,把旧稿的 Dataset Contract、Pipeline Contract 与 Ontology Mapping 合为一张可验收的链路表。
字段 | 恒川填写样例 |
Decision / Action | 是否以 |
Source / System of Record | WMS:库存执行;ERP:订单与采购;MES:生产状态;SRM:供应承诺 |
Source keys | WMS |
Raw inputs |
|
Time semantics | 当前状态、event time/recorded time、每日快照、series 分开交付 |
Pipeline / Owner |
|
Core transforms | Crosswalk、单位换算、过滤、Join、去重、可用量公式、时效检查 |
Curated output / grain |
|
Object datasource |
|
Object mapping |
|
Freshness | 决策时数据年龄不超过 20 分钟;跨源水位差不得超过约定阈值 |
Failure behavior | 保留上次成功版本并显式标记 stale;证据过期时禁止自动分配 |
Consumers | Object Set、缺口 Function、Workshop、 |
质量验收清单
检查项 | 恒川通过标准 | 失败处置 |
粒度 | 一行只代表 | 重做聚合和主键,不进入对象映射 |
身份 | 三个来源编码均经有效 Crosswalk 解析 | 进入人工身份队列,禁止自动处置 |
唯一性 |
| 阻断发布 |
单位 | on-hand、frozen、reserved 全部统一为 EA | 阻断 760 EA 计算 |
公式对账 |
| 定位来源水位和 Transform 版本 |
时间 |
| 标记 stale 或重算正确窗口 |
完整性 | ERP/MES/WMS/SRM 必需记录齐全 | 只显示缺失证据,不生成确定性建议 |
Schema | 类型、必需字段、枚举变化通过兼容检查 | Branch 中修复,不直接破坏生产输出 |
权限 | Dataset、object datasource 与对象消费权限逐层验证 | 阻断未授权访问,不能用应用绕过 |
Lineage | 可从 760 回溯至输入 Dataset、Pipeline 版本和运行时间 | 不通过业务 UAT |
降级 | Pipeline 失败后显示上次成功版本及数据年龄 | 高影响 Action 转人工复核或阻断 |
业务验收 | Supply Planner 与数据 Owner 对样例、异常和 Action 条件共同签核 | 不发布到运营应用 |
BA 不必编写每个 Transform,但必须能回答:一行数据代表什么,哪个系统拥有事实,时间和单位怎样解释,什么错误会阻断输出,以及 Property 最终支持哪个 Decision 和 Action。
结论:数据进入对象,不是表换个名字
Dataset 提供可治理的数据交接点,回答“这一站的数据是什么、哪个版本、谁能用、从哪里来”;Pipeline 说明数据怎样从输入经规则变成输出,失败时如何处理;Pipeline Builder 是建设这条链的主要应用;object datasource 则把经确认的数据值接到 Object Type。
恒川的 760 EA 只有同时通过身份、粒度、单位、时间、水位、权限和 Lineage 验收,才有资格支撑AP-2048。Ontology 没有取消数据工程,而是让数据质量的后果直接回到业务决定和 Action。
不过,本篇默认了外部数据会同步成 Foundry 中的 Dataset。ERP、WMS 和供应商数据是否都必须物理搬入 Foundry?能不能保留在源端,仍参与 Pipeline 与 Ontology?驻留、延迟、权限和成本如何取舍?
本文依据 Palantir 公开资料、本地阅读笔记及业务分析与实施研究整理,与 Palantir Technologies 无官方关联。Source–Dataset–Object Mapping与质量验收清单不是 Palantir 官方固定模板。产品能力和支持范围可能变化,请以官方文档与目标环境为准。