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

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

时间:2024-06-22 20:53:39浏览次数:25  
标签:http pageSize kettle 接口 第七十三 20 totalNum

场景: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,pageSize,kettle,接口,第七十三,20,totalNum
From: https://www.cnblogs.com/zjBoy/p/18261559

相关文章

  • caddy 模块(module) caddyhttp Start启动逻辑分析
     ./modules/caddyhttp/app.gofunc(app*App)Start()error{//xx} Start方法属于一个自定义的App结构体,用于启动应用程序中的多个HTTP服务器实例。下面是对该方法的主要逻辑和关键步骤的详细分析:1.日志设置:首先,通过zap.NewStdLogAt创建一个兼容......
  • HttpContext扩展类
    需要引入UAParser,IPTools.Core类库a1publicstaticpartialclassHttpContextExtension2{3///<summary>4///是否是ajax请求5///</summary>6///<paramname="request"></param>7///<returns&......
  • http请求的工具类
    1publicclassHttpHelper2{3///<summary>4///发起POST同步请求5///</summary>6///<paramname="url"></param>7///<paramname="postData"></param>8///&l......
  • 记一次https通讯调试过程
    情况说明:和服务端https交互时,用域名的方式会有正常的应答,用指定IP的方式则提示异常。代码抛出异常如下:javax.net.ssl.SSLHandshakeException:Remotehostclosedconnectionduringhandshakeatcom.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl,java:88......
  • 前端和后端介绍、浏览器访问全过程、HTTP协议以及协议请求和响应格式、HTML介绍及常用
    【一】前端和后端介绍【1】什么是前端与用户进行交互,让用户输入数据以及展示相应数据的媒介就叫前端前端可以是浏览器的界面,也可以是客户端的界面,还可以是手机的界面。。【2】什么是后端在整个应用的背后,不直接与用户打交道的用于执行真正业务逻辑的代码。比如我们自己写......
  • DVWA 靶场 Open HTTP Redirect 通关解析
    前言DVWA代表DamnVulnerableWebApplication,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。DVWA提供了一系列的漏洞场景和练习环境,用户可以通过......
  • Dolphinscheduler调度Kettle
    1、Dolphinscheduler-worker节点安装Kettle安装目录/opt/soft/data-integration2、配置资源仓库,将资源仓库配置文件 repositories.xml文件拷贝到安装目录仓库名称:mysql-repository仓库访问用户:guest仓库访问密码:guest3、创建Kettle任务,并保存到资源仓库任务创建略。任务......
  • Nginx 反向代理 (泛域名->泛域名,https,静态文件)
    Nginx反向代理配置指南(泛域名->泛域名,HTTPS,静态文件)完整版server{#监听80端口listen80;listen443sslhttp2;; #...... #泛域名server_name*.{fromName}.com;#获取"*"参数set$subdm'';if($host~*"(.*......
  • HTTP协议详解
    文章目录HTTP协议简介HTTP和HTTPS协议的区别HTTP工作原理HTTPS工作原理HTTP协议特点无连接性优化无连接特性无状态性如何优化无状态性HTTP请求方法HTTP状态码常见状态码使用场景用例:在浏览器地址栏键入URL,按下回车之后会经历以下流程HTTP协议简介简介:HTTP协议工......
  • 应用同时支持HTTP和HTTPS
    生成证书:keytool-genkeypair-keystoretest.jks-aliastest-keyalgRSA-keysize2048-validity3650应用配置:server:port:18081#httpshttp-port:8081#httpssl:key-store:/test.jks#密钥库路径key-store-password:ENC(djVg6Ri/rp7cHwh9ZTmq/Q==)......