kettle从入门到精通 第七十三课 ETL之kettle kettle调用http分页接口教程

news/2024/9/24 5:31:44

场景:kettle调用http接口获取数据(由于数据量比较大,鉴于网络和性能考虑,所以接口是个分页接口)。

 方案:构造页码list,然后循环调用接口。

1、总体设计

1)、初始化分页参数pageNum=1,pageSize=20,这里的pageSize可以根据自己的需求自行调整,比如每次从接口取数100或者1000等等。

2)、第一次请求分页接口,然后保存数据&获取总页数。

3)、根据总分页数据,然后计算出页码list。

4)、循环页码list,单条数据请求http接口。

注:2和4调用的是同一个子trans

2、初始化分页参数

1)这里为了演示方便,使用的生成记录生成了一条数据,其中pageNum=1,pageSize=50

2)这里的pageSize可以根据自己的需求自行调整,比如每次从接口取数100或者1000等等。

3)实际业务场景中有可能用不到生成记录步骤,这个大家根据自己场景进行选择。

 3、第一次请求http接口

1)从以前的结果获取记录步骤获取初始化的参数pageNum=1和pageSize=20

2)这里的模拟http请求使用的是写日志步骤,具体场景中使用的是http post步骤。

3)这里的模拟http响应数据落地是空步骤,具体场景中应该是json input、table output等步骤。

 4)模拟接口返回的总页数这里使用的是增加常量,具体使用时应该从json input步骤解析出来totalNum字段。具体的业务场景总页数字段可能不叫totalNum,根据实际情况填写即可。

4、计算页码list

1) 这一步很重要,将单条数据变成list,如上一步的totalNum为3,这里会输出[{"paggNum":"2","pageSize":"20"},{"paggNum":"3","pageSize":"20"}]

2) 脚本如下

var max_page_int = str2num(totalNum);
for(var curr_page=2;curr_page<=max_page_int;curr_page++){var outputRow = new Array(_step_.getOutputRowMeta().size()); outputRow[_step_.getOutputRowMeta().indexOfValue("pageNum")] = num2str(curr_page);outputRow[_step_.getOutputRowMeta().indexOfValue("pageSize")] = pageSize;_step_.putRow(_step_.getOutputRowMeta(), outputRow);
}
var trans_Status = SKIP_TRANSFORMATION;

5、循环请求http接口(从第二页开始)

1)这里一定要勾选执行每一个输入行,勾选之后才会执行for循环操作。会循环上一步的结果[{"paggNum":"2","pageSize":"20"},{"paggNum":"3","pageSize":"20"}]

2)这一步调用子trans和第一次请求http接口的子trans是一样的。细心的朋友可能会发现其实只有第一次请求http接口之后才关心totalNum,之后的请求都不会关心这个totalNum。

注:kettle是个非常灵活的工具,这里只是提供了一个思路而已,大家如果有更好的实现思路,评论区或者沟通交流群告诉我。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/46625.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

以指定版本创建django项目

1、在pacharm的文件菜单创建一个纯净项目,如下图所示使用虚拟环境2、在pycharm的终端窗口通过pip安装3.2版本的django,(tips:已默认设定从阿里云镜像下载),如下图所示:3、使用django-admin startproject 项目名 .(django-admin startproject page_dm01 .)在项目下创建…

MinIO Mirror技术Watcher

事件通知机制Watcher组件的工作流程S3 Event

Gitlab服务器邮箱配置,实现自动为用户发送邮件(注册发送验证链接)

一. 配置前准备工作及说明服务器系统版本:CentOS 7 postfix,并在终端运行systemctl status postfix检查服务是否已在运行状态,如果显示activate则表示正在运行[root@sage ~]$ systemctl status postfix ● postfix.service - Postfix Mail Transport AgentLoaded: loaded (/…

CentOS7安装Gitlab13详细步骤

环境配置CentOS Version 7.6Gitlab Version gitlab-ce-13.12.15-ce.0.el7.x86_64下载rpm包 Gitlab历史版本下载地址:https://packages.gitlab.com/gitlab/gitlab-ce(我在这里下载的 gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm 建议使用下载工具进行下载)wget https://d20rj4el…

解决JS跨域访问的问题

在被访问 的服务器IIS中 Access-Control-Allow-Origin 添加请求的服务器的域名

mysql数据表插入数据后,获取自增字段值的方法

mysql数据表插入数据后,获取自增字段值的方法 mysql数据表如果有字段的值是自增的,即创建表时该字段使用了auto_increment,当插入数据时,获取该字段自增值的方法是select LAST_INSERT_ID()或者select @@IDENTITY,这两种方法都是面向数据库连接(connection)的,即只要…

基于BP神经网络的64QAM解调算法matlab性能仿真

1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A3.部分核心程序% 第一部分:加载并可视化数据 % load data.mat real1 = [-7 -7 -7 -7 -7 -7 -7 -7 -5 -5 -5 -5 -5 -5 -5 -5 ...-1 -1 -1 -1 -1 -1 -1 -1 -3 -3 -3 -3 -3 -3 -3 -3 ...+7 +7 +7 +7 +7 +7 +7 +7 +5 +5 +5 +5…

testng + mockito + spring boot test 基本操作

代码地址 https://gitee.com/bzrj/thresh-boot 如何使用在 thresh-dependencies 目录执行 mvn clean install 在跟目录执行 make效果 jacocoallure关键配置 thresh-test此模块包含了测试需要的依赖 定义了两个 testng 监听thresh-report 此模块专门用于聚合 jacoco 和 allure 的…