一、背景
在实施过程中,很多元数据表都包含 config、payload、meta 这类 JSON 字符串字段。常见痛点是每次项目都要重复手工写解析公式,维护成本高且容易漏字段。
本次将实践沉淀为优化版 Skill:自动推断 JSONPath、自动创建 ETL 链路,并明确发布运行闭环,方便团队跨项目复用。
二、操作过程(基础版)
步骤1:准备 ETL 基础链路 先确认流程中有输入节点与主链路,便于后续接入“添加计算列”。

步骤2:配置 JSON 解析公式 在“添加计算列”节点中新增字段,使用 get_json_object([config], '$.xxx') 提取所需 JSONPath。

步骤3:处理字段冲突 若命中重名字段风险,统一增加业务前缀(如 config_)后再保存。

步骤4:发布并运行 ETL 创建完成后必须发布并至少运行 1 次,确认输出数据集可预览到新增解析列。

三、不同 JSON 数据结构如何提取(重点)
场景A:扁平结构
{"sourceType":"MYSQL","priority":"HIGH"}
get_json_object([config], '$.sourceType')
get_json_object([config], '$.priority')
场景B:对象嵌套结构
{"tableQuery":{"queryType":"query","table":"orders"}}
get_json_object([config], '$.tableQuery.queryType')
get_json_object([config], '$.tableQuery.table')
场景C:数组(基础)
{"primaryKeyColumns":["ds_id","tenant_id"]}
get_json_object([config], '$.primaryKeyColumns')
get_json_object([config], '$.primaryKeyColumns[0]')
场景D:数组对象
{"dynamicParameters":[{"key":"start","value":"2026-01-01"}]}
get_json_object([config], '$.dynamicParameters')
get_json_object([config], '$.dynamicParameters[0].key')
get_json_object([config], '$.dynamicParameters[0].value')
场景E:深层嵌套 + 可选字段
{"lastExecution":{"startTime":"...","endTime":"..."},"error":null}
get_json_object([config], '$.lastExecution.startTime')
get_json_object([config], '$.lastExecution.endTime')
get_json_object([config], '$.error')
四、常用函数说明(JSON解析相关)
1)get_json_object(json_col, json_path) 按 JSONPath 从 JSON 字符串中取值,是本方案核心函数。
2)空值兜底 建议结合 IFNULL/COALESCE(以当前函数支持为准)处理缺失 key 或空值。
3)类型转换 JSON 提取结果常为字符串,下游做数值计算前建议显式转换类型。
4)数组处理策略 先提整段数组 JSON,再按业务需要提取 [0] 或下一层 ETL 继续拆解。
五、优化版 Skill 关键能力
相较旧版,优化版 Skill 增加了执行前“用户必填信息清单”,并强制区分目录:
1)ETL 创建到“智能ETL”模块目录(etl_parent_dir_id);
2)输出数据集创建到“数据集”模块目录(output_parent_dir_id);
3)创建后必须“发布并运行”。
推荐在 AI 对话里这样引用:
请使用 json-etl-auto-parser 创建 JSON 解析 ETL
base_url: https://uat.guandata.com/bi-test
domain: testing
input_ds_id: xxx
json_column: meta
etl_parent_dir_id: (智能ETL目录ID)
output_parent_dir_id: (数据集目录ID)
要求:创建后发布并运行一次
六、可复用 Skill 附件(优化版)
已上传优化版 Skill 压缩包,下载后可直接安装使用:
json-etl-auto-parser-package-no-doc-optimized-20260408-1512.zip
七、复用建议
1)统一字段前缀(如 config_、payload_)避免冲突;
2)先跑样本映射再做字段裁剪;
3)复杂数组先落字符串,再在下一层 ETL 继续拆分;
4)发布前抽样预览,优先检查关键字段空值率与类型一致性。 |