反馈已提交

网络繁忙

取出数据为空导致循环终止解决方案

  • 文档创建者:Wendy123456
  • 历史版本:9
  • 最近更新:Roxy 于 2023-11-13
  • 1. 概述

    1.1 问题描述

    用户想使用「参数赋值」+「循环容器」节点,分段取出 API 接口中的数据,并将数据解析。任务设计如下图所示:

    1678780781965573.png

    但当某个参数从 API 接口中取的数据,经解析后,为空时(没有任何内容),将终止循环。如下图所示:

    1678780852115393.png

    任务报错:

    1678780903771578.png

    本文提供方案解决这个问题。

    1.2 解决思路

    4.1.1 版本支持在循环容器中勾选容错机制,可直接勾选即可。

    4.1.1 之前的版本,则需要参考以下方案。

    将旧方案中的「数据同步」节点替换为「数据转换」节点。

    1678781353408165.png

    算子作用
    API输入

    不勾选「将解析后的JSON数据展开为二维表」,输出 JSON 格式的数据;当参数从 API 接口中取出数据为空时,输出数据格式为下图所示,不再是 1.1 节中没有内容的数据

    1678781662426886.png

    JSON解析

    解析 API 数据,如果参数对应的API数据为空,解析后,是带有字段名的空数据。如下图所示:

    33.png

    spark sql删除空数据。用户也可以用「数据过滤」算子实现
    DB表输出输出数据到目标表

    2. 示例

    2.1 接口介绍

    API 接口请求参数说明:

    参数名
    参数说明
    dateFrom开始时间
    dateTo结束时间

    2.2 配置开始时间和结束时间作为参数

    1)新建一个 ETL 任务后,增加「参数赋值」节点。配置如下图所示:

    56.png

    开始时间和结束时间为同一天,代表取出这一天的数据。

    1677723493100220.png

    2)设置参数 da ,因为取出的「dateFrom」字段位于取出数据的第一列,因此选择指定列并将其设置为 1,并且由于取出的「dateFrom」有多个数据,由于数据是数值所以用数值型分隔符。

    如果想要在任务未运行时也就是任务开发阶段,下游节点用到参数的地方可以提前查看效果,可以给参数赋值节点设置默认值。

    如下图所示:

    58.png

    2.3 增加循环容器节点

    1)因为取出的参数为多个,需要根据开始时间和结束时间一条条从 API 接口中取出数据,所以此处需要使用到 循环容器 ,一次次循环来遍历赋值节点的输出结果。

    添加「循环容器」节点,与「参数赋值」节点相连。「循环容器」节点设置如下图所示:

    59.png

    2)在「循环容器」节点中添加「数据转换」节点。为取出时间段内所有数据,循环方式选择「遍历循环」。

    如下图所示:

    60.png

    2.4 设置数据转换节点

    2.4.1 设置API输入算子

    1)进入「数据转换」节点,拖入「API输入」节点,获取API数据。输入API 接口后,需要设置参数。如下图所示:

    61.png

    2.4.2 设置JSON解析算子

    由于 API 接口中的数据是以 JSON 格式存储的,所以需要用「JSON解析」算子对数据进行拆解,解析成可以直接分析的二维表。如下图所示:

    63.png

    2.4.3 过滤空数据

    添加「Spark SQL」算子,过滤空数据。如下图所示:

    64.png

    2.4.4 输出数据

    添加「DB表输出」算子,输出数据。如下图所示:

    65.png

    2.5 运行任务

    保存并运行任务即可。




    附件列表


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

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

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

    不再提示

    10s后关闭



    AI

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