最新历史版本 :使用偏移量从XML接口取数 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

用户有一接口返回 XML 格式数据(数据量较多),希望从该接口中取出所有数据。

存在问题如下:

  • 需要循环取数,但接口没有分页结束标识。

  • API输入-分页取数 功能目前不支持 xpath 路径。

1.2 实现思路


1.3 任务展示

2. 操作步骤编辑

2.1 场景模拟

使用 FDL 的数据服务功能发布一个接口,模拟返回 XML 格式数据的接口。如下图所示:

下图 SQL 语句含义:当 n 为 0 时,取前 30 条数据;当 n 为 30 时,取第 31 到 60 的数据;当 n 为 60 时,取第 61 到第 90 条的数据,以此类推。

2.png

2.2 构建初始条件参数

方案需要使用循环容器进行循环取数,循环容器的执行条件设置为:将每次取数的第一条数据输出为参数 ID,若 ID 不为空,则执行循环。

本节目的:构建一个非空的参数 ID(参数值非空即可),让第一次循环跑起来。

1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。

2)拖入「Spark SQL」算子,输入语句:select '1' as a。如下图所示:

3.png

3)拖入参数输出算子,将数据输出给参数 ID。如下图所示:

1728875747458185.png

2.3 设置循环容器

拖入循环容器节点,设置循环方式为条件循环,执行条件为:ID 不为空。如下图所示:

注:若数据较多,需根据实际情况调整最多循环的次数。

1728875946193321.png

2.4 构建偏移量

1)循环容器节点中拖入数据转换」节点,进入数据转换」节点。

2)拖入「Spark SQL」算子,输入语句:select  (${loopTimes}-1)*30 as skip。如下图所示:

注:loopTimes 为循环容器内置参数,初始值为1。

7.png

3)拖入参数输出算子,将数据输出给参数 n。如下图所示:

1728876474890475.png

2.5 分页取数

1)循环容器节点中再拖入一个「数据转换」节点,进入「数据转换」节点。

2)拖入API输入算子,使用偏移量参数 n 进行取数。如下图所示:

注:该步骤为模拟从 API 接口中取出 XML 数据,用户根据实际情况进行操作。

9.png

3)点击「数据预览」,可查看取出的数据。如下图所示:

10.png

4)需要对取出的数据进行解析。

实际场景中,需要拖入XML解析算子进行解析。本文示例为模拟实际场景,实际数据并非 XML 格式而为 JSON 格式,所以使用JSON解析算子进行解析。

5)数据解析后,可根据实际情况进一步处理。

本文示例中,拖入「DB表输出」算子,将解析后的数据输出到数据表中。如下图所示:

11.png

JSON解析算子后,再拖入一个参数输出算子,将取出数据第一条的主键字段(非空字段),输出为参数 ID。如下图所示:

12.png