1、应用场景
很多“api取数”接口,往往数据量比较大,不可能一次取全量数据,只能按分页进行取数。一般取数接口中,参数pageIndex 表示当前页数,参数pageSize表示每页条数。
取数接口,为了安全考虑,一般都需要提供access_token 作为调用凭证。
2、实现思路
步骤一:通过API取数节点获取到access_token
步骤二:通过JSON解析节点解析出access_token
步骤三:接循环API节点,每次循环,都会把循环序号(每循环一次,序号就会递增)跟access_token传给取数API,这样就可以循环到所有页数据,直到获取不到数据为止。
步骤四:解析结果数据,并写入到目标表
3、操作步骤
3.1 新建etl
新建一个etl,取名为循环分页取数
3.2 设置获取access_token API
把API取数节点拖进画布,并进行配置
获取access_token 的API取数节点执行后,结果如下:
结果是JSON 数据
3.3 解析出access_token
拖入JSON解析节点,并进行配置
执行后的结果如下:
3.4 配置循环分页
拖入循环API节点,并进行配置
循环API节点有两个配置,一个循环配置,一个API配置
循环配置
循环方式:这里选择按序号循环
序号起始值:这个可以设置页数起始值,默认是1
序号递增:就是每循环一次,序号增加值,默认是1
序号映射参数名:是把序号映射成参数,通过参数把序号传给API,一般这个参数传给API的pageIndex参数
上游数据映射为参数:把上游数据映射为参数,通过参数把上游数据传给API,这里我们就可以把解析出来access_token传给API
退出条件:一般循环把数据取完后,就退出,所以这里设置获取到数据的条数少于每页条数时或者是获取不到数据时,就退出
条件表达式 $['books'].length() 表示返回的JSON数据中,books 数组元素的数量, 这里设置为小于10或者为空,因为每页条数为10条,只要小于10或者为空,表示数据已经取完。
API配置
这里配置把序号跟access_token作为参数传给API的pageIndex跟access_token
执行循环API节点,结果如下:
从结果数据看,从第1页开始,每页10条记录,循环到第10页后,数据取完。
3.4 解析结果数据,并写入到目标表
如图所示,后面拖入JSON解析跟覆盖目标表节点,便可以完成数据解析,同时把解析好的数据写入到目标表