历史版本4 :取出数据为空导致循环终止解决方案 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

用户想使用 FDL 的「循环容器」节点,根据某一维度(天、页等)遍历循环取数,若取出的数据为空数据,「循环容器」节点将结束循环。

针对循环取数为空的情况,本文提供解决方案。

1.2 实现思路

使用「参数赋值」节点将开始时间和结束时间作为参数,将参数写入 API 请求中,通过「循环容器」一一将参数值赋给 API ,一条条取出数据到指定数据库。

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 过滤空数据

由于 2.3 节循环方式选择的是「遍历循环」,当遍历值为空时,将结束容器内的循环。所以当某天数据为空时,循环将结束,为顺利取出时间段内所有数据,后续需要过滤掉空数据。

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

64.png

2.4.4 输出数据

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

65.png

2.5 运行任务

保存并运行任务即可。