1. 概述编辑
在现实的业务中,有很多数据需要通过 API 接口调用使用。
因此本文为用户介绍在 FineDataLink 中使用 API 取数并进行数据解析处理,最终将数据写入指定数据库的方案。
注:若需要使用 FineDataLink 发布API ,或者将数据推送到 API 接口,详情参见:API专题
2. 索引编辑
关于 API 的数据开发,有以下几种常见的情况:
序号 | 场景 | 方案 | 功能组合 | 示例 |
---|---|---|---|---|
1 | API入门 | 如何看 API 文档,以及如何在 FineDataLink 中使用 API | / | API入门 |
2 | 直接从 API 接口取数,且数据为非 JSON 格式 | 直接使用数据同步-API 取数并同步至数据库即可 | 数据同步 | 数据同步-API |
3 | 直接从 API 接口取数,且数据为 JSON 格式 | 使用数据转换取数并通过JSON解析将 JSON数据解析成常用的数据格式,并同步至数据库 | 数据转换「API输入+JSON解析+DB表输出」 | JSON解析 |
4 | 直接从 API 接口取数,且数据为 XML 格式 | 使用数据转换中的API 取数 并通过 XML 解析将 XML 数据解析成行列数据格式,并同步至数据库 | 数据转换「API输入+XML解析+DB表输出」 | XML 解析 |
5 | 需要先获取 Token 或者某个指定数据,然后再根据 Token 从指定 API 中取出数据 | 首先通过参数赋值将需要获取的 Token或者数据取出并设置为参数,使用数据转换或者数据同步引用上一节点设置的参数取出需要数据并同步至数据库。 | 参数赋值、数据转换(API输入+JSON解析+DB表输出) | API取数-获取企业微信人员信息 |
6 | 分批取出接口中的数据 接口文档中包含数据页数、数据条数等信息 | 从接口中获取总页数作为参数,也就是需要执行的次数; 使用循环容器和内置参数 loopTimes,首次执行页码数为 1 ,然后递增执行取出每一页的数据。 | 参数赋值、循环容器、数据转换(API输入+JSON解析+DB表输出) | API取数-按页数取数 |
7 | 需要通过拼接获取鉴权签名参数,然后在接口中取出数据 | 使用 SparkSQL 拼接鉴权签名参数,然后取出总页数、配合循环容器和内置参数 loopTimes,一页页取出数据。 | 参数赋值、数据转换(SparkSQL、API输入、JSON解析、DB表输出)、循环容器 | API取数-加密身份验证&按页数取数 |
8 | 需要取出数据的API 接口文档中没有页数相关的参数,但是接口中有 limit 参数限制接口取数量。 | 获取当前数据表中最大 id 值,每次从最大 id 开始取出100条数据,循环多次,直至取完所有的数据。 | 参数赋值、数据转换(API输入、JSON解析、DB表输出)、循环容器 | API取数-限制取数量且无页数参数 |
9 | 公司内部使用企业微信,行政部门想要统计每月员工的打卡数据,将这些数据取出至指定数据库使用。 | 参数赋值、SparkSQL、参数输出、循环容器 | API取数-获取当月企微月报打卡数据 | |
10 | 公司内部使用金蝶云星空进行供应链管理。 希望将 销售报价单的单据查询接口 中的数据取出,以便进行数据分析。 |
| 参数赋值、SQL脚本、循环容器、条件分支 | API取数-金蝶云星空销售报价单 |
11 | 通过MD5加密获取签名 sign,然后从易流云接口获取用户车辆最新位置信息 | 使用 SparkSQL中的 MD5 加密函数获取签名,然后取出接口数据。 | SparkSQL、参数输出 | API取数-易流云MD5加密 |
12 | 遇到接口中需要使用业务参数,并且数据量大需要分页取出,每个业务参数都有不同的页码数 | 从数据库或者接口中获取库存编码和仓库编码的所有编码值,并使用循环容器从 API 中取出所有的编码值对应的数据总条数 total; 使用公式计算每个编码值按照指定的page_size 得到的总页码数; 使用 SaprkSQL 获取所有编码值对应的页码列表page_no,方便后续作为遍历参数遍历进行 API 取数; 将page_size、page_no、两个编码字段作为请求参数,在 API 中进行取数,设置为遍历这些参数,取出所有的数据。 | 参数赋值、SQL脚本、循环容器、参数输出 | API取数-慧策接口获取库存全量数据 |
13 | FR 日报表中直接从数据库取数填写对应城市的天气信息 | FR 日报表中需要填写对应城市的天气信息,包括日期、天气、最高温度、最低温度等,目前只能通过城市名人工查询后获得这些信息。 FineDataLink 可简化上述操作流程:根据数据库表存储的城市数据,调用高德 API 接口,获取对应天气数据并存储到数据库,FR 报表直接取数即可。 | 参数赋值、循环容器 | 使用高德接口获取城市天气数据 |
14 | 用户想要同步钉钉通信录中的部门信息和用户信息。 | 由于接口只能获取当前部门的下一级部门基础信息,不支持获取当前部门下所有层级子部门。因此需要依次根据父部门ID循环获取子部门ID,然后遍历循环部门ID,获取用户信息。 | 参数赋值、循环容器 | API取数-钉钉获取部门用户信息 |
15 | 日程信息通过 FR 填报到数据库或者保存到简道云中,原始信息可能会被其他部门进行增删改操作,因此希望将日程数据在企业微信中记录,方便在活动开始前对相关的同学自动提醒。 | 较复杂,详情参见文档 | 循环容器、参数输出 | 活动日程信息更新至企业微信日程 |
16 | 用户希望定时任务仅在工作日运行。 | 调用判断当天是否为工作日的接口,若当天是工作日,进行常规后续节点运行;若当天不是工作日,可运行「虚拟节点」 | 条件分支、消息通知、虚拟节点 | 仅在工作日执行定时任务 |
17 | 用户数据库存储了经纬度数据,希望转换成对应的中文地址(国家、省份、城市、区县、街道等),最后将转换后的数据保存到数据库中。 | 可以调用高德或百度地址转换的 API 接口实现。 | 参数赋值、循环容器 | 将经纬度数据转换为中文地址 |
18 | 用户希望根据业务数据库中的数据,更新、新增宜搭表单的数据。 | 调用 新增或更新表单实例 接口,来更新、新增宜搭表单的数据。 | 参数赋值、循环容器 | 新增/修改宜搭表单数据 |
19 | 公司内部使用北森系统进行人员管理。 希望将 根据时间窗滚动查询变动的员工与单条任职信息 中的人员信息数据取出,以便进行数据分析。 | 较复杂,详情参见文档 | 参数赋值、循环容器 | API取数-北森接口获取员工任职信息 |
20 | 将某业务数据全部取出。 接口文档中 pageNum 表示数据页数;pageSize 表示在每一页的数据条数。 和API取数-按页数取数 不同的是,接口返回值中没有总页数 total_pages,需要手动计算。 | 从接口中获取 pageNum 和 pageSize 返回值,并使用 SparkSQL 计算出数据总页数 total_pages,将其作为参数,也就是需要执行的次数; 使用循环容器和内置参数 loopTimes,首次执行 pageNum 页码数为 1 ,然后递增执行取出每一页的数据,当循环次数 loopTimes<=total_pages 继续执行,当循环次数 loopTimes>total_pages 时,停止执行。 | 参数赋值、API输入 | API取数-计算总页数并按页取数 |