历史版本4 :API取数-以起始行数作为参数 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

从 金蝶 k3Cloud 系统接口 进行分页报表取数时,接口中没有提供页码参数,因此不能使用API取数-按页数取数方案。

但是接口中会返回所取数据的总行数,且接口请求参数中有开始行索引参数(从哪一行开始取数)、返回行数限制参数。

1701658338254382.png

1701673262270473.png

1.2 实现思路

注:本文方案仅适用于新增数据。

1701675668849197.png

1.4 任务展示

FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「API取数-以起始行数作为参数」。

2. 操作步骤编辑

2.1 场景模拟

本文使用 数据服务发布的 API 接口模拟从金蝶云星空接口中取数,该接口返回值中包含所取数据总行数:

1701676057451402.png

且接口请求参数中有开始行索引参数(从哪一行开始取数)、返回行数限制参数:

1701676086406188.png

本文场景:从接口中取 20 条数据,每次取 10 条。

2.2 获取来源端数据行数

本文使用 数据服务发布的 API 接口模拟从金蝶云星空接口中取数。

1)新建定时任务,拖入「参数赋值」节点,从接口中取数。如下图所示:

1701659933195040.png

点击「数据预览」,会看到返回结果中包含总行数。如下图所示:

1701669448293298.png

2)将返回数据中的总页数,输出为参数 rows_source 。如下图所示:

1701661343701223.png

2.3 获取目标表现有数据行

获取目标表现有数据行,并输出为参数 rows_goal 。如下图所示:

1701669639773264.png

2.4 获取本次同步后所预期的目标数据量

由于后续我们将使用「循环容器」节点循环取出接口的数据,循环执行条件为:预期的目标数据量(本节获得该参数)>已有的目标数据量(2.5.3 节获得该参数)。

拖入参数赋值节点,将 2.1 节、2.2 节的参数值相加,获取本次同步后所预期的目标数据量,并输出为参数 totalrows(预期的目标数据量)。如下图所示:

1701670474335216.png

2.5 循环取出接口数据

19.png

2.5.1 获取目标表数据行数、本次循环的起始行号

「循环容器」节点中拖入「参数赋值」节点,获取目标表的数据行数、本次循环的起始数据行号,并依次输出为参数 totalrows_goal、rows_start。如下图所示:

1701671107279997.png

2.5.2 接口取数

根据 2.5.1 节输出的 rows_start ,从分页报表取数接口中取数。

1)拖入「数据转换」节点,进入「数据转换」节点后,拖入「API输入」节点进行取数,每次取 10 条数据。如下图所示:

本节使用 数据服务发布的 API 接口模拟用户实际场景中接口取数。

1701671769243734.png

2)点击「数据预览」。如下图所示:

1701671855912489.png

3)拖入DB表输出算子,将数据输出到目标数据表,写入方式选择追加写入数据。如下图所示:

字段映射中,删除来源表字段:totalrows 。

1701672042399282.png

4)点击右上角保存按钮。

2.5.3 获取目标表数据行数

拖入参数赋值节点,获取目标表数据行数(已有的目标数据量),输出参数 totalrows_goal 。如下图所示:

1701672672170795.png

2.5.4 设置循环容器

循环容器节点循环方式选择「条件循环」,执行条件设置为:totalrows(期的目标数据量,2.3节获得)>totalrows_goal(现实的目标数据量,2.5.3节获得。如下图所示:

1701672833857078.png

2.5 效果查看

点击「保存并运行」按钮,任务运行成功后,会看到目标数据表中被写入 20 条数据。

循环容器节点执行日志如下图所示:

可看出执行了两次循环,每次写入 10 条数据。

1701677052254451.png