反馈已提交

网络繁忙

使用偏移量从XML接口取数

  • 文档创建者:Wendy123456
  • 历史版本:5
  • 最近更新:Wendy123456 于 2024-10-24
  • 1. 概述

    1.1 应用场景

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

    存在问题如下:

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

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

    1.2 实现思路

    使用「循环容器」节点自带的 loopTimes 参数构建偏移量,从 API 取数,并将接口非空的字段进行参数输出。

    「循环容器」节点设置执行方式为条件执行,执行条件为该参数值不为空,即可实现循环取数,直至参数值为空,说明数据以全部取完,循环结束。

    1.3 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「使用偏移量从XML接口取数」。

    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 进行取数,且每页取 30 条数据。如下图所示:

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

    注2:调用数据服务发布的 API 说明请参见:使用数据服务发布的API(POST application/json请求)

    7.png

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

    10.png

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

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

    2.6 数据分发

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

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

    11.png

    2)在JSON解析算子后,再拖入一个参数输出算子,将取出数据第一条的主键字段(非空字段,本文示例选择产品ID」字段),输出为参数 ID。如下图所示:

    12.png

    3)右键点击「JSON解析」算子,选择数据分发,设置DB表输出算子的分发条件是产品ID非空。

    本步骤目的:

    本文 2.3 节中,循环容器节点循环方式为条件循环,执行条件我们设置的参数 ID 值不为空(参数值为字段产品ID的值)。实际执行时,条件循环会先执行循环体,再判断是否终止循环,即最后一次执行时,会先取参数 ID 值为空执行,再终止循环,目标表中将多一条空数据。详情请参见:条件循环

    所以,设置目标表写入条件:产品ID非空。

    1729739830437987.png

    2.7 效果查看

    1)点击「运行」按钮,运行成功后,界面如下图所示:

    8.png

    2)目标表中可查看已取出的数据,如下图所示:

    10.png

    3)用户可将任务发布到生产模式中。详情请参见:开发模式与生产模式

    4)任务发布到生产模式」后,可设置执行频率。详情请参见:定时调度




    附件列表


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

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持