1. 概述
1.1 应用场景
为满足业务部门报表分析及数据备份需求,需将易快报系统API接口单据列表数据进行同步落库。
1.2 接口信息
本次任务需要用到获取授权接口,其次是获取单据列表接口,由于接口每次只可读取100条数据,且接口只返回单据总数量,故在获取单据列表数据时需要使用分页循环取数。

1.3 实现思路
考虑后期接口数据量大的情况,所以本次任务采用全量+增量的方式同步!
1.3.1 全量任务:
1)清空目标表:使用【SQL脚本】清空目标表数据。
2)获取Token参数:获取accessToken授权,将Token参数传递给获取单据列表接口。
3)获取总页数:由于接口只返回单据总数量,所以此步骤需要利用【数据转换】先通过API输入
- 获取单据总数:【API输入】取出单据总数量
- 计算总页数:【Spark SQL】根据总数量及分页条数计算出总页数
- 参数输出:【参数输出】将总页数作为参数传递给下一步骤。
4)分页循环取数:【循环容器】条件循环通过FDL内置函数${loopTimes},从1开始,循环一次递增1,当循环次数小于等于总页数时停止循环。
- 获取目标表数据:由于接口分页起始值从0开始,每次调用需要先获取目标表数据量(如:第一次:0,50;第二次50,100,第三次100,150),所以使用【参数赋值】来获取目标表数据。
- 获取接口数据并落库:将目标表数据作为分页查询起始值start,查询数据条数设置固定值50,表示每次获取50条数据

1.3.2 增量任务:
1)获取Token参数:获取accessToken授权,将Token参数传递给获取单据列表接口。
2)获取最新修改日期:接口中存在修改日期时间戳字段,通过时间戳的方式进行增量同步,所以获取目标表中最大的修改日期作为参数传给startDate。
3)取数落库:根据获取单据列表接口中查询字段orderBy及查询起始时间startDate获取满足条件的数据进行增量同步。

1.4 任务展示
全量任务:

增量任务:

2. 操作步骤
全量任务操作步骤如下:
2.1 清空目标表数据
使用SQL脚本清空目标表数据,如下图所示:

2.2 获取Token参数并设置为参数
2.2.1 获取accessToken
使用参数赋值节点,在节点信息中修改名称为「获取token」,选择数据源类型为「API」,将易快报接口 获取 accessToken url 和参数写入对应位置,:https://app.ekuaibao.com/api/openapi/v1/auth/getAccessToken,如下图所示:

点击「数据预览」即可看到获取的 accessToken,如下图所示:

2.2.2 将 accessToken 设置为参数
为了便于后续其他接口使用获取到的 token 值,因此将其设置为参数。
点击「输出参数」设置参数名为 accessToken,将 accessToken 设置为参数,如下图所示:

2.3 获取总页数
接口返回单据总数,需计算总页数,使用【数据转换】:API输入、JSON解析、Spark SQL、参数输出组件取得总页数。
API输入

JSON解析

Spark SQL:数据总数/分页查询数据条数,转为整数并加1(可以增加一个判断,不等于整数再加1)

参数输出

2.4 循环容器

2.4.1 获取目标表数据并生成参数

将目标表数据设置为参数

2.4.2 获取单据列表数据并落库

JSON解析

DB表输出数据落库

2.5 效果查看

|