当前位置: 首页 > news >正文

kettle从入门到精通 第105课 ETL之kettle 解决api接口无返回页数和记录数的分页问题

场景:

今天下午小朋友和妈妈去游乐园玩了,一个人在家里也挺好,比较清净。学学习充充电,无意中看到赵总群里求助kettle分页问题。想着分页问题已经被我一网打尽了,不料实战时翻车了几次,搞了几次死循环直接内存溢出挂掉。接下来咱们一起来探索下。

f557503e-c050-4ed6-af8e-46860b61460c

1、API接口

接口入参数:token,page(当前页码),rows(每页获取的记录数)

响应参数:success(成功返回true),pagedata数组(无数据时接口返回空数组)

难点:此分页接口不同以往的接口,响应参数中缺少totalPages和totalRecords。

无数据时返回结果如下图所示:

d7c51076-fcd2-43f6-9e83-012ee3d799c3

 有数据时返回结果如下图所示:

9e66275c-73ee-4225-8077-c84837ae64be

 2、设计流程

初始化参数:初始化第一次请求接口的参数

检验字段的值:根据接口响应中pagedata数组是否为空进行判断数据是否已经取完,为空的话跳出循环结束流程,不为空的话继续取数据,直到取完所有数据。

获取数据:根据参数获取数据并且根据响应数据调整循环逻辑控制标记。

835556d0-4c76-4c39-8bdc-127ba4274e97

 3、初始化参数子转换

hasPage:当前请求是否有数据,默认值为1表示继续请求接口获取数据,无数据时此字段会被设置为0

currPage:请求接口时当前页码,默认值为1,会一直进行累加,如1,2,3,4 等

url:初始请求地址,地址的格式为http://xxx.com?page=1&rows=2&token=uuuuu,后续步骤会重新更新url中的page值

复制记录到结果:将参数往后续步骤传递

f6f0aad1-a2bd-46ff-b816-b2ae2ef68b17

 4、校验字段的值

检验:选择上一步结果的字段

字段名:hasPage

类型:String

成功条件:如果值等于1,也就是说如果hasPage的值是1 表示接口有数据,继续读取,否则跳出循环暂定。

f91cb259-568f-4f4d-ba61-0a3c6a0226fd

 5、获取数据子转换

从结果获取记录:从前值步骤获取请求参数

JavaScript(构造参数):重新构建请求参数

Http client:根据构建的请求参数获取数据

JavaScript代码(判断是否还有数据):根据返回的数据pagedata字段重新赋值hasPage

字段选择:只筛选hasPage,currPage,url三个参数往后续传递

Switch/case:根据hasPage字段判断数据是否落库还是空操作

8467de20-ab92-480b-b985-c21a74155c62

 6、保存&运行

调试了几次之后,可以正常work,不会出现死循环情况,完美!!!

86cd3c0e-f2b1-4662-8d03-5f3c1d6c80df

 写在最后

老铁们,这种场景的分页情况你们还有什么好的方法没,欢迎评论区留言探讨。

image

http://www.dtcms.com/a/347019.html

相关文章:

  • 1.10 本地模型调用编码实战(一)
  • Flink框架:算子链的介绍
  • 梯度下降(线性回归为例)
  • 深度学习入门:神经网络
  • 【KO】前端面试题六
  • Idea中 lombok 在“测试类中-单元测试”运行失败及解决方法
  • 怎样避免游戏检测到云手机?
  • C++矩阵类设计与实现:高效、健壮的线性代数工具
  • 文字学的多维透视:从符号系统到文化实践
  • 解密 Kubernetes 权限管理:supplementalGroups 的魔力与 fsGroup 的选择
  • Linux服务器systemd服务配置详细指南
  • 【线程池】ThreadPoolTaskExecutor和redis的配置案例
  • 《UE教程》第一章第十一回——UE5.6打包安卓
  • Python 字符串查找,计数,判断,修改
  • Linux服务器利用Systemd配置定时任务
  • 手机横屏适配方案
  • Python 实战:内网渗透中的信息收集自动化脚本(2)
  • Python爬虫实战:构建港口物流数据采集和分析系统
  • 英伟达显卡GPU驱动的本质
  • Ubuntu 的 apt-get 强制使用 IPv4 网络
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(九)数值拖拽控件、进度条、滑动条
  • JupyterLab在线调试实验室
  • 【C语言16天强化训练】从基础入门到进阶:Day 7
  • 【Github】SourceTree远端链接Github
  • 173-基于Flask的微博舆情数据分析系统
  • Dism++备份系统时报错[句柄无效]的解决方法
  • 大模型训练方法全面解析:SFT、RFT、TRPO、DPO、PPO、GRPO、RLH、RLHF技术深度剖析
  • chromadb使用hugging face模型时利用镜像网站下载注意事项
  • SQL Server Service Broker超全介绍
  • linux内核 - slab 分配器