1. 概述
1.1 JSON解析
JSON 解析技术可以对 JSON 数据进行解析关联,解决复杂数据处理问题,大大提高数据处理的效率。本文分享JSON解析的场景实践和注意事项,在文末点击链接可以免费学习和体验。
1.2 应用场景
用户处在以下场景时:
- 公司做了一张表,记录员工的打卡数据,其中打卡数据是以 JSON 格式存储的,现在希望对 JSON 格式的数据进行拆解,解析成可以直接分析的二维表。
- 用户需要获取百度投放的广告点击数据进行分析,百度提供了 API 接口,但是返回的数据并不规则,想要通过 API 接口将需要的字段解析出来存储到自己公司的数据库内用于分析展示。
此时可使用 JSON 解析算子,对输入的数据进行解析。
1.3 功能简介
JSON 解析算子用于解析 JSON 结构的数据,输出行列格式的数据。
2. 示例
2.1 场景模拟
图书数据是以 JSON 格式存储的,保存在接口数据中。
http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json
现在希望对 JSON 格式数据进行拆解,解析成可以直接分析的二维表。如下图所示:
2.2 创建任务
创建一个定时任务,将一个「数据转换」节点拖到设计界面。如下图所示:
2.3 设置数据输入
点击「数据转换」节点,将「API输入」拖到数据转换的设计界面,如下图设置数据来源,取出 API 接口中所有数据。如下图所示:
接口地址:http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json
注:API 接口数据取数详情参见:API入门
2.4 设置JSON解析
再将「JSON解析」拖到设计界面,并使用线条跟它的上游「API 输入」相连。
点击「JSON解析」对它进行设置,取出需要的字段,如下图所示:
「解析配置」界面具体设置项介绍如下表所示:
设置项 |
介绍 |
选择JSON |
将直接获取的 JSON 格式数据或者从来源表中选择 JSON 格式数据合并到下拉框可选项中。
如果上游为API输入算子,则默认选择default,如下图所示:
若上游为DB表输入或者其他输入算子,则可以选择需要解析的JSON来源字段,如下图所示:
|
解析后保留所有上游输出字段 |
未勾选该按钮,解析后的结果:只保留所选源字段解析后的数据
下图以本文第三章为示例,比较「解析后保留所有上游输出字段」按钮是否勾选的区别:
|
解析JSON数据 |
选择 JSON 节点,即可解析:
注:json解析的时候建议选择最开始的节点,此时为绝对路径下的解析,否则直接勾选指定字段,使用相对路径解析,数据解析结果可能会有错误。
可手动编辑、删除字段,如下图所示:
|
点击「数据预览」,如下图所示:
2.5 设置DB表输出
再将「DB表输出」拖到设计界面,并使用线条跟它的上游「JSON解析」相连。
点击「DB表输出」对它进行设置。如下图所示:
调整写入数据表的字段映射,如下图所示:
2.6 运行任务
1)点击右上角「保存」按钮。点击右上角「保存并运行」,日志有执行成功信息表示任务成功运行。如下图所示:
可以看到数据库 FRDemo 中新增了一张表 json,为解析后数据。如下图所示:
3. 注意事项
问题描述:
JSON解析配置成功后,重新再打开,发现解析配置中的「JSON数据来源」丢失,需要重新选择。
原因分析:
JSON解析获取API数据源的时候,API返回数据超过默认的超时时间,所以JSON解析获取前置数据源失败。
解决方案:
请求时间默认为 10秒,若用户的数据量较大,接口请求时间较长,4.0.13 以及之后的版本可以在FDL的 Header 内使用 FDLTimeout 字段设置超时时间。
该参数参数值需要写入正整数,如下图所示:
注:若数据量较大,JSON 格式数据建议取消勾选「将解析后的JSON数据展开为二维表」,否则会增加加载响应时间。
由0到1,带您进入FineDataLink的世界 |