用户想使用「参数赋值」+「循环容器」节点,分段取出 API 接口中的数据,并将数据解析。任务设计如下图所示:
但当某个参数从 API 接口中取的数据,经解析后,为空时(没有任何内容),将终止循环。如下图所示:
任务报错:
本文提供方案解决这个问题。
将旧方案中的「数据同步」节点替换为「数据转换」节点。
不勾选「将解析后的JSON数据展开为二维表」,输出 JSON 格式的数据;当参数从 API 接口中取出数据为空时,输出数据格式为下图所示,不再是 1.1 节中没有内容的数据
解析 API 数据,如果参数对应的API数据为空,解析后,是带有字段名的空数据。如下图所示:
API 接口请求参数说明:
1)新建一个 ETL 任务后,增加「参数赋值」节点。配置如下图所示:
开始时间和结束时间为同一天,代表取出这一天的数据。
2)设置参数 da ,因为取出的「dateFrom」字段位于取出数据的第一列,因此选择指定列并将其设置为 1,并且由于取出的「dateFrom」有多个数据,由于数据是数值所以用数值型分隔符。
如果想要在任务未运行时也就是任务开发阶段,下游节点用到参数的地方可以提前查看效果,可以给参数赋值节点设置默认值。
如下图所示:
1)因为取出的参数为多个,需要根据开始时间和结束时间一条条从 API 接口中取出数据,所以此处需要使用到 循环容器 ,一次次循环来遍历赋值节点的输出结果。
添加「循环容器」节点,与「参数赋值」节点相连。「循环容器」节点设置如下图所示:
2)在「循环容器」节点中添加「数据转换」节点。为取出时间段内所有数据,循环方式选择「遍历循环」。
1)进入「数据转换」节点,拖入「API输入」节点,获取API数据。输入API 接口后,需要设置参数。如下图所示:
由于 API 接口中的数据是以 JSON 格式存储的,所以需要用「JSON解析」算子对数据进行拆解,解析成可以直接分析的二维表。如下图所示:
添加「Spark SQL」算子,过滤空数据。如下图所示:
添加「DB表输出」算子,输出数据。如下图所示:
保存并运行任务即可。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
Submitted successfully
Network busy