使用偏移量从XML接口取数

  • 文档创建者:Wendy123456
  • 历史版本:3
  • 最近更新:Wendy123456 于 2024-10-14
  • 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




    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!