# 数据处理实践

数据处理通过持续把原始数据转化为可查询、可检索、可引用、可用于决策的 AI 就绪资产来创造价值。合理的设计需要同时支撑数据质量、可复现性、治理与消费。

本页介绍设计方法与常见模式，帮助你把业务目标落成可验证、可运行、可维护的加工链路。

## 从消费侧倒推设计

先问谁消费结果、需要什么形态、如何验收；再倒推输入、加工与执行。

```text
下游用途 → 结果资产 → 验收标准 → 加工步骤 → 原始数据 → 访问与权限
```

| 下游用途 | 所需结果 | 设计重点 |
| --- | --- | --- |
| 分析或业务查询 | 稳定 schema、清晰定义、可重复计算 | SQL 转换、字段校验、目标表写入策略 |
| 知识检索与智能体回答 | 可定位分块、来源元数据、可用索引 | 解析、清洗、分块、向量化、知识索引 |
| 结构化抽取 | 字段定义、格式校验、异常样例 | 解析、抽取、业务规则校验、结果表 |
| 外部系统或团队 | 稳定对象、清晰版本与权限边界 | Catalog 输出、血缘、分享/导出策略 |
| 周期刷新 | 可重跑、可观测、可恢复的加工 | 调度、幂等写入、作业监控、失败处理 |

先定义验收标准。完成与否取决于下游能否可靠消费，而不只是作业状态成功。

## AI 就绪的四个层次

| 层次 | 应达到的状态 | 加工实现 |
| --- | --- | --- |
| 可访问 | 数据是受控的工作区资产，访问与权限清晰 | 连接、导入、Catalog 对象、对象权限 |
| 可理解 | 结构、内容、来源与关键字段可解释 | 解析、结构化、元数据、字段/内容检查 |
| 可检索/可计算 | 查询、分块或语义能正确使用内容 | SQL、清洗、分块、向量化、建索引 |
| 可追溯 | 来源、步骤、参数与工作流作业可还原 | 工作流、作业、血缘、操作与 SQL 执行记录 |

可访问的原始文件仍可能难以消费；可检索但无出处的结果难以信任。这些层次共同构成「掌控你的数据，信任你的 AI」的数据基础。

## 推荐的资产分层

| 层 | 内容 | 典型写入 | 消费者 |
| --- | --- | --- | --- |
| 原始层 | 新导入的表、卷、文件、快照 | 导入或读取后受控持久化 | 加工工作流、质量检查 |
| 准备层 | 清洗、解析、规范化后的中间结果 | 工作流算子或 SQL | 后续转换、抽取、复核 |
| 服务层 | 供业务、知识库或智能体使用的稳定结果 | 校验后的表、索引或内容资产 | SQL、知识库、智能体、分享/导出 |

这是设计约定，不是平台内置层级。命名与落点应能体现数据是否可消费、是否可覆盖、由谁负责。

## 模式 1：清洗结构化数据并产出结果表

```text
原始表 → 字段检查/过滤 → SQL 转换与关联 → 质量校验 → 目标结果表 → 分析或下游服务
```

### 设计步骤

1. 在 [Catalog](../resource-center/catalog.md) 中明确源表、主键、时间字段、增量范围与敏感字段。
2. 在 [SQL 编辑器](sql-editor.md) 中用小范围验证过滤、关联与聚合。
3. 将稳定 SQL 放入工作流 SQL 算子，并配置参数、目标表与写入模式。
4. 定义对 NULL、重复键、异常值与行数的检查。
5. 先小批量测试，再配置一次性或周期执行。
6. 在作业中检查行数、耗时、目标表与异常，并保留可追溯证据。

### 选择写入策略

| 策略 | 适用情况 | 风险 |
| --- | --- | --- |
| 创建 | 首次创建结果表 | 已有表的处理与 schema 演进 |
| 替换 | 下游接受完整快照 | 误替换会丢失历史；需协调读取时机 |
| 追加 | 相互独立的增量批次 | 重跑可能重复；使用业务键或批次标记 |

对周期任务，保留批次、日期或来源标识，并明确去重或覆盖行为。

## 模式 2：为知识库准备文档

```text
文件卷 → 文档解析 → 清洗 → 分块 → 向量化/建索引 → 知识库 → 智能体检索与回答
```

### 各步骤需确认的问题

| 步骤 | 确认 |
| --- | --- |
| 文件准备 | 卷是否正确、命名是否稳定、出处与权限边界是否清楚 |
| 解析 | 正文、表格、图片与版式是否正确识别；异常是否记录 |
| 清洗 | 是否去除干扰性页眉页脚、重复、乱码与无意义内容 |
| 分块 | 语义是否完整，是否保留文档、页码与章节位置 |
| 向量化/建索引 | 模型与索引是否匹配知识库场景 |
| 验证 | 典型问题能否检索到正确分块，回答能否追溯来源 |

分块策略应从下游问题出发；法律条款、手册与会议纪要需要不同边界。对重要文档，先人工验证小样本，再启用卷触发或批量运行。详见[知识库](../knowledge-bases/index.md)。

## 模式 3：抽取结构化业务数据

```text
文件/内容 → 解析 → 清洗与结构识别 → 字段抽取 → 格式与业务校验 → 结果表 + 异常队列
```

### 设计要点

| 关注点 | 实践 |
| --- | --- |
| 先定义目标 schema | 在使用模型前明确名称、类型、必填字段、格式与业务含义。 |
| 保留出处 | 为每条结果保留文件、页码、分块或时间戳。 |
| 区分缺失与错误 | 将 NULL、格式错误与冲突送审，而不是写入正常表。 |
| 增加规则校验 | 对日期、金额、ID、枚举及字段关系施加确定性检查。 |
| 样本验收 | 对照已知答案衡量准确率、完整率与异常率。 |

将模型抽取视为不确定结果。金额、合同方、合规分类等关键字段在写入下游前，需要明确的校验与异常路径。

## 模式 4：处理多媒体

```text
媒体文件 → 按类型解析 → 内容/时间片段 → 清洗或抽取 → 表/卷/索引结果 → 业务或知识消费
```

| 类型 | 重点 |
| --- | --- |
| 图片 | OCR/区域质量、来源、关键区域定位、异常处理 |
| 音频 | 转写语言、时间戳、说话人/段落边界、劣质音频的回退 |
| 视频 | 时间片段、音视频关系、成本、消费场景 |
| 混合文档 | 表格、图片与文本的关系；页级出处 |

将大文件处理、结果校验与索引构建分开，避免一次解析失败使成功文件失效，并支持对失败区间独立重跑。

## 模式 5：事件驱动与周期刷新

| 模式 | 适用工作 | 设计重点 |
| --- | --- | --- |
| 手动一次性 | 验证、回补、临时重放 | 记录参数与范围 |
| 卷触发 | 文件到达即处理 | 明确输入卷、按文件独立处理、失败可定位 |
| 周期 | 日/周/月刷新 | 幂等写入、批次边界、迟到数据、重跑策略 |

明确数据是否可能到达两次、重跑如何避免重复，以及谁从哪条工作流作业恢复失败。详见[运行与调试](run-debug.md)。

## 加工质量验收矩阵

| 维度 | 证据 | 示例问题 |
| --- | --- | --- |
| 完整性 | 输入、输出、跳过与失败计数 | 是否处理了每个文件且无静默遗漏？ |
| 正确性 | 样本、字段规则、对账 | 金额、日期、键、分块与分类是否正确？ |
| 一致性 | 目标结构、定义、写入模式 | 跨批次字段是否可比？ |
| 可追溯性 | 来源、算子、参数、作业、血缘 | 结果能否追溯到文件或源表？ |
| 可重跑性 | 幂等性、批次 ID、恢复方法 | 重跑会重复、覆盖，还是产生无法解释的差异？ |
| 成本/时效 | 耗时、资源规格、输入规模、频率 | 资源是否充足，是否避免了无谓的全量重算？ |
| 安全性 | 权限、敏感字段、下载/对外边界 | 谁可以看原始数据、结果与模型输出？ |

把这张矩阵变成团队的最低验收模板。

## 生产清单

### 数据与资产

- 输入、输出与命名是否清晰？
- 原始数据是否保留，并与临时结果分离？
- 写入模式是否支持重跑？
- Catalog 血缘能否说明上下游影响？

### 逻辑与模型

- 每个算子是否只有一个可解释的职责？
- 模型输入、提示词、输出与异常处理是否明确？
- SQL 是否在工作簿中验证过，且无多余全表扫描？
- 模型输出后是否再次施加关键质量规则？

### 执行与恢复

- 测试是否覆盖典型、边界与异常输入？
- 触发方式是否匹配数据到达与时延要求？
- 谁可以查看、修改并重跑失败作业？
- 对重复、迟到数据与部分成功是否有预案？

### 治理与协作

- 他人能否理解工作流名称、描述、输入输出与负责人？
- 查看、编辑、运行与删除是否遵循最小权限？
- 下载、分享与导出是否遵守数据权限？
- 重要变更是否在执行前做影响分析与样本验证？

## 与智能体闭环

加工后的资产供给知识库与智能体，但创建智能体并不等于加工结束。检索、工具调用、回答质量与反馈会暴露内容缺失、分块过粗、字段不全与更新滞后。应将这些发现反馈到下一轮加工迭代，而不是只改提示词。

这一反馈循环让数据、知识与智能体围绕同一批受控资产持续改进。
