数据处理任务最佳实践

更新时间:
复制 MD 格式

DataWorks数据集成Data Agent的数据处理任务,可将日志、知识库文档、评论、PDF与图片票据等非结构化数据转换为可供查询与分析的结构化结果。该任务基于大模型,使用自然语言即可定义处理逻辑,无需编写代码。以下以日志分析入仓、知识库向量化、评论情感分类、PDF与发票内容提取四个端到端场景为例,介绍其配置要点与应用方法。

按数据形态选择处理方式

四个场景对应四种处理方式,适用不同的源端数据形态与目标产物:

源端数据形态

处理方式

目标产物

参考场景

整份 JSONLine 日志文件,需要整体分析报告

AI 完整文件分析

分析报告、事件统计、情绪标签等结构化字段,写入 MaxCompute(ODPS)、Hologres、DLF、MySQL 等目标表

场景一

知识库文档或文本,需要语义检索

Embedding 向量化

语义向量连同原文与元数据写入 Elasticsearch、Milvus、OpenSearch、Hologres 等向量检索引擎

场景二

数据表中的文本字段,需要逐条打标

AI 语义分析与分类

情感与意图标签、分类理由、置信度,写入 MaxCompute、Hologres、DLF、MySQL 等目标表

场景三

PDF 与图片票据,需要从文件内容中提取票面字段

内容识别与结构化提取

票面字段连同文件路径、清晰度与遮盖状态,写入 MaxCompute、Hologres、DLF、MySQL 等目标表

场景四

选型时先区分处理模型:

  • 处理单元:AI 完整文件分析以完整文件为处理单元,适用于少量、大型、单文件价值高的场景。Embedding 向量化和AI 语义分析与分类按行或语义分片处理,适用于记录量大、单条记录独立的场景。

  • 目标用途:当处理表中文本字段时,若目标为语义检索或RAG,选择Embedding 向量化。若目标为获取情感、意图等结构化标签,选择AI 语义分析与分类。

  • 文件形态:当源端是 PDF 或图片票据,需要从文件内容中提取字段时,选择内容识别与结构化提取。此类文件以 blob 格式读入,配置前需确认环境已提供该格式与多模态处理能力,配置方法参见场景四。

创建数据处理任务的入口位于DataWorks控制台的 数据集成 > 数据处理任务 页面。详情参见:数据集成 Agent。

  1. 单击 通过Agent聊天创建 可从零开始配置;为快速上手,也可选择一个场景示例卡片并基于该示例创建,此时“处理描述”将自动预填充。

  2. 配置的核心是LLM输入,需使用自然语言清晰定义源端位置、处理方式与目标表结构等要求。

  3. Agent将依据此描述生成任务脚本。

  4. 任务生成后,即可在列表页执行并验证结果。

配置时可选的数据源与目标端以控制台实际列表为准,本文仅列举典型用法。

场景一:日志整文件分析入仓

场景说明

将单个JSONLine日志文件作为处理单元,生成分析报告、事件统计、质量评分等结构化字段,并写入目标表。此方法无需编写代码即可分析Agent会话、AI网关等日志。

源端信息与示例数据

源端为 OSS 目录下的 .jsonl 日志文件:每行一条独立 JSON 事件,对象结构随事件类型(如 user、assistant、tool_result、system)变化。示例口径下单文件不超过 1 GiB,适合少量大文件、单文件价值高的场景。

以下示例数据仅用于说明 JSONLine 日志的事件结构:

{"type":"user","sessionId":"ee92ba79…fa93","timestamp":"2026-08-14T03:31:02.114Z","message":{"content":"帮我排查 MongoDB 并发读取与同步的问题"}}
{"type":"assistant","sessionId":"ee92ba79…fa93","timestamp":"2026-08-14T03:33:55.023Z","message":{"…"},"toolCallResult":{"…"}}
{"type":"tool_result","sessionId":"ee92ba79…fa93","timestamp":"2026-08-14T03:34:12.480Z","toolCallResult":{"status":"success","name":"di-metrics-query","…":"…"}}

处理逻辑

  1. 读取完整文件:以整个文件为一个处理单元,逐行遍历每个事件、每种事件类型和每个时间戳。

  2. AI 完整文件分析:生成会话报告、事件统计与情绪标签等结构化字段。

  3. Schema 强校验:校验失败的记录整条进入脏数据通道,避免半成功。

  4. 多列回填入库:结果一次性写入 MaxCompute、Hologres、DLF、MySQL 等目标表。

目标表结构与示例输出

以下 MaxCompute DDL 为示例结构,同样支持写入 Hologres、DLF、MySQL 等目标端:

CREATE TABLE session_log_insight (
  file_path         STRING  COMMENT '原始文件路径,可追溯 OSS 源文件',
  session_id        STRING  COMMENT '会话主键',
  analysis_report   STRING  COMMENT '完整分析报告(Markdown)',
  sentiment         STRING  COMMENT '情绪分类',
  sentiment_reason  STRING  COMMENT '情绪判定依据'
)
PARTITIONED BY (ds STRING COMMENT '日期分区');

示例输出(示例数据,仅用于说明结果结构):

字段

示例值

file_path

my_jsonline/ee92ba79-25ba-41ff-8acc-154c9957fa93.jsonl

session_id

ee92ba79-25ba-41ff-8acc-154c9957fa93

analysis_report

会话概况:用户报告 MongoDB 并发读取与同步异常……(含时间线、事件统计、工具失败与诊断结论)

sentiment

中性

sentiment_reason

用户表达客观、简短,未出现明确正向或负向情绪信号。

ds

20260817

AI助理会将半结构化的数据自动转化为结构化的二维表,同时,file_path字段可追溯OSS源文件地址。

配置要点

参照创建数据处理任务章节配置任务时,数据来源类型选择 OSS 下的 .jsonl 日志文件所在的数据源类型,数据去向类型选择 MaxCompute、Hologres、DLF、MySQL 等目标表对应的数据源类型。处理描述需写明源端位置、整文件分析要求(会话报告、事件统计、情绪标签等输出字段)与目标表结构要求。

场景二:知识库文档向量化

场景说明

Embedding 向量化读取知识文本,逐条生成 Embedding 向量,向量化模型使用 text-embedding-v4,连同原文主键写入向量库。源端支持 OSS 上的非结构化文档、半结构化文件,以及数据库表中的指定文本字段;向量化结果写入 Elasticsearch、Milvus、OpenSearch、Hologres 等向量检索引擎后,语义搜索、RAG 问答与智能推荐即刻可用,无需自建向量化管道。

源端信息与示例数据

支持三类数据来源:

来源类型

数据形态

处理方式

OSS 非结构化文档

PDF / Word / Markdown / TXT

自动解析正文,按语义分片

OSS 半结构化文件

CSV / JSONLine

字段已按行预分片存储,逐行直接向量化

结构化数据源

MySQL、MaxCompute 表中的指定文本字段

直接读取字段内容,逐条向量化

文档类数据按语义切分后逐片向量化;行级数据(CSV、JSONLine 与数据库表字段)已按行分片,逐条直接向量化。向量与原文、主键全程可关联,分片标识保留,可回溯源文档。

以 OSS 上的 Markdown 知识库文档为例(示例数据):

# 数据集成常见问题

## 如何配置离线同步任务?
进入数据集成控制台,选择源端与目标端数据源,配置字段映射与调度周期后提交即可。
提交前建议先测试数据源连通性,并确认目标表结构与字段映射一致……

## 同步任务运行失败怎么排查?
优先查看运行日志中的错误码,常见原因包括连通性异常、脏数据超限与权限不足……

处理逻辑

  1. 读取多源数据:解析 OSS 文档,或读取 CSV / JSONLine 与 MySQL、MaxCompute 表字段。

  2. 文本清洗与智能分段:文档去噪后按语义切分为 chunk;已按行分片的行级数据直接进入下一步。

  3. Embedding 计算:每个分片生成语义向量,向量化模型为 text-embedding-v4,维度统一、可校验。

  4. 写入向量库:向量连同原文、元数据写入 Elasticsearch、Milvus、OpenSearch、Hologres 等。

目标表结构与示例输出

以下 Milvus Collection Schema 为结构示意(伪 DDL,实际建库方式以 Milvus SDK / API 为准),同样支持写入 Elasticsearch、OpenSearch、Hologres 等:

CREATE COLLECTION knowledge_chunk (
  chunk_id     VARCHAR,            -- 主键,分片唯一标识
  doc_id       VARCHAR,            -- 所属文档,可回溯源文件
  title        VARCHAR,            -- 所在章节标题
  content      VARCHAR,            -- 分片原文
  embedding    FLOAT_VECTOR(1024), -- 语义向量
  source_path  VARCHAR,            -- OSS 源文件路径
  updated_at   VARCHAR             -- 更新时间
);

示例中的向量维度 1024 维为示例展示值。示例输出(示例数据,仅用于说明结果结构):

字段

示例值

chunk_id

dataworks-di-faq_0001

doc_id

dataworks-di-faq.md

title

如何配置离线同步任务?

content

进入数据集成控制台,选择源端与目标端数据源,配置字段映射与调度周期后提交即可……

embedding

[0.0123, -0.0871, 0.0442, 0.1268, …](1024 维示例值)

source_path

knowledge_base/dataworks-di-faq.md

一段文本产出一条可语义检索的向量,通过 doc_id 与 source_path 可回溯源文档。

配置要点

  • 数据来源:选择文档或文本字段所在的数据源。

  • 数据去向:选择Elasticsearch、Milvus、OpenSearch或Hologres等向量数据库。

  • 处理描述:明确源数据位置、向量化模型(text-embedding-v4)及目标表结构。

场景三:文本情感/意图分类入库

场景说明

AI 语义分析与分类读取表中的评论、反馈、工单等文本字段,理解语义后按分类体系生成情感与意图标签、分类理由和置信度,保留原文与记录主键,写入目标表,支撑客户画像、舆情监控与服务质检。分类体系可按业务自定义;未提供分类体系时,由 Agent 自动归纳。

源端信息与示例数据

源端为 MySQL、MaxCompute 等数据库表中的非结构化文本字段,例如商品评论、用户反馈、工单描述。每行一条记录,逐条分析;记录主键随分析结果透传,结果可关联回源表。

示例源表为 product_review:文本字段 review_content(STRING),主键 review_id 可关联回源表。

MySQL 表 product_review 示例(示例数据):

review_id

user_id

review_content

created_at

202608_0001

u_88231

物流很快,包装也结实,就是颜色和图片有点色差,总体还算满意。

2026-08-18 10:21:05

202608_0002

u_10472

用了三天就黑屏,客服一直不回复,非常失望!要求退货。

2026-08-18 14:02:47

202608_0003

u_55690

请问这款适不适合送老人?操作复杂吗?

2026-08-19 09:35:12

处理逻辑

  1. 读取文本:从 MySQL、MaxCompute 表逐行读取评论、反馈等文本字段。

  2. 语义分析:理解上下文、用户诉求与业务语义。

  3. 情感/意图分类:按业务分类体系输出情感与意图标签。

  4. 生成分析理由:给出判定依据与置信度,可解释、可复核。

  5. 写入目标表:标签、理由连同原文主键写入 MaxCompute、Hologres、DLF、MySQL 等。

目标表结构与示例输出

以下 MaxCompute DDL 为示例结构,同样支持写入 Hologres、DLF、MySQL 等目标端:

CREATE TABLE review_sentiment_analysis (
  review_id        STRING  COMMENT '主键,关联源表评论记录',
  review_content   STRING  COMMENT '评论原文',
  sentiment        STRING  COMMENT '情感分类(正向/中性/负向)',
  intent           STRING  COMMENT '意图标签(咨询/投诉/退货/好评…)',
  analysis_reason  STRING  COMMENT '分类理由',
  confidence       DOUBLE  COMMENT '置信度(0~1)'
)
PARTITIONED BY (ds STRING COMMENT '日期分区');

示例输出(示例数据,仅用于说明结果结构):

字段

示例值

review_id

202608_0002

review_content

用了三天就黑屏,客服一直不回复,非常失望!要求退货。

sentiment

负向

intent

投诉 / 退货

analysis_reason

出现产品故障(黑屏)与服务不满(客服未响应),明确表达失望并提出退货诉求。

confidence

0.96(示例值)

ds

20260820

一条评论产出一行可分析的客户评价,标签、理由与置信度一次生成,review_id 可关联回源表记录。

配置要点

参照创建数据处理任务章节配置任务时,数据来源类型选择评论等文本字段所在的 MySQL、MaxCompute 等数据库对应的数据源类型,数据去向类型选择 MaxCompute、Hologres、DLF、MySQL 等目标表对应的数据源类型。处理描述需写明源表与文本字段、分类体系(如有)与目标表结构要求。

场景四:PDF 与发票内容结构化提取

场景说明

以单个文件为处理单元,读取 OSS 上的 PDF 与图片票据,提取票据号码、开票日期、购销方、费用明细、金额与税额等字段,写入目标表后可直接用于财务对账与报销审核。票据常含人名等个人信息,因此图像清晰度检测与人名脱敏均在处理环境内本地完成,不经过大模型,只有脱敏后的图片才交给大模型解析。

源端信息与示例数据

源端为 OSS 目录下的票据文件,支持 PDF 与 JPEG、TIF 等图片格式。文件以 blob 格式读入,每条记录生成 __file_path__ 与 __file_content__ 两个字段,分别对应源文件路径与文件二进制内容,后续处理从上游输出中选择内容字段解析。

以一份 PDF 发票为例,读入后生成的字段如下(示例数据):

字段

示例值

__file_path__

invoices/2026-08/INV-20260818-0031.pdf

__file_content__

文件的二进制内容,示例中不展开

一个文件对应一条记录,通过文件路径可回溯到 OSS 源文件。

处理逻辑

  1. 读取文件:按配置的路径逐个读取 OSS 上的 PDF 与图片文件。

  2. 检测清晰度:图片在本地完成质量分析,综合边缘梯度、前景比例与曝光等指标,输出 CLEAR、BLURRY、UNCERTAIN 三种状态和具体评分。

  3. 按清晰度分流:状态为 CLEAR 的图片继续遮盖与解析;BLURRY 与 UNCERTAIN 的图片直接进入写入环节,只记录文件路径与清晰度,不做遮盖与解析,避免在低质量图像上得到不可靠的提取结果。

  4. 本地遮盖人名:用处理环境内的本地模型与本地 OCR 定位人名,在原图坐标上绘制遮盖区域,生成脱敏图片。进入下一步的只有脱敏图片。

  5. 提取票面字段:模型读取脱敏图片或 PDF 内容,深度理解后按处理描述中定义的字段输出结构化结果。

  6. 写入目标表:提取结果连同文件路径、清晰度与遮盖状态一次写入目标表,清晰与模糊两条路径的结果落入同一张表。

本地处理与隐私边界

为确保用户数据的最高安全级别,系统采用“隐私设计”原则,确保原始敏感数据仅保留在安全的处理环境内部。所有票据解析都遵循一个严格的、分阶段的本地化处理流程:

处理阶段

执行环境

数据对象

1. 图像预检

本地环境,计算图像质量指标,进行清晰度检测。

原始图片

2. 数据脱敏

本地环境,调用本地 OCR 和模型,识别并遮盖人名等敏感信息。

原始图片

3. 内容解析

大语言模型服务,将不含敏感信息的图片发送给大模型,进行结构化内容提取。

脱敏后的图片

原始图片不发送到外部服务;清晰度不达标的图片脱敏与解析都不进入,仅登记清晰度后写入 MaxCompute。

目标表结构与示例输出

以下 MaxCompute DDL 为示例结构,字段随处理描述中定义的抽取字段变化,同样支持写入 Hologres、DLF、MySQL 等目标端:

CREATE TABLE invoice_extract_result (
  file_path          STRING  COMMENT '源文件路径,可回溯 OSS 源文件',
  file_name          STRING  COMMENT '文件名',
  clarity_status     STRING  COMMENT '清晰度状态:CLEAR、BLURRY 或 UNCERTAIN',
  clarity_score      BIGINT  COMMENT '清晰度评分',
  mask_status        STRING  COMMENT '人名遮盖状态',
  extracted_content  STRING  COMMENT '提取出的票面内容'
)
PARTITIONED BY (ds STRING COMMENT '日期分区');

示例输出(示例数据,仅用于说明结果结构):

字段

示例值

file_path

invoices/2026-08/INV-20260818-0031.pdf

file_name

INV-20260818-0031.pdf

clarity_status

CLEAR

clarity_score

90

mask_status

已遮盖

extracted_content

票据类型:门诊收费票据;票据号码:04412608180031;开票日期:2026-08-18;交款人:已遮盖;费用明细:诊查费 22.50、检验费 472.00;金额合计:494.50

ds

20260818

清晰度不达标的文件同样落库,extracted_content 为空,可按清晰度状态筛出后重新采集或人工处理。

配置要点

  • 前置条件:环境已提供 blob 文件格式与多模态处理能力。

  • 数据来源与去向:来源选择票据文件所在的 OSS 数据源,去向选择结果表所在的 MaxCompute、Hologres、DLF、MySQL 等数据源。

  • 处理描述:写明源端路径、从上游输出中选择的文件内容字段、需要提取的票面字段与目标表结构,并说明图片的清晰度分流与人名遮盖要求。如需遮盖证件号、业务编号等其他敏感字段,需在描述中逐项列出。

  • 清晰度阈值:评分偏低的拍摄件仍可能提取到完整字段,不建议只按评分过滤,可结合提取内容是否为空、字段是否完整一并判断。

  • 文件质量:同一批文件保持一致的分辨率、光照与拍摄角度;同一份内容优先使用 PDF,只能用图片时分辨率不低于 300 DPI。

相关文档