kettle开发-Day36-循环驱动作业
前言:
在日常数据处理时,我们通过变量传参来完成某个日期的数据转换。但可能因程序或者网络原因导致某个时间段的数据抽取失败。常见导致kettle作业失败的原因大概分为三大类,数据源异常、数据库异常、程序异常。因此面对这些异常时,怎么快速恢复批量数据,就需要利用循环来处理,指定含条件的数据,如恢复2023年1月6日至2023年2月02日的数据等等。这时有人会问为啥不直接用对应时间段过滤来恢复,但是实际的情况是,因对应抽取逻辑是按每日进行抽取,并且是某个同事编写的,他在当时考虑的可能是性能或者其他方面的原因,因此更改程序需要的时间成本或者风险相应较大。但又不想通过每次修改变量值去运行转换,如时间变量为${nydate},此时我们需要将变量分别赋值为2023-01-08、2023-01-07...2023-02-01、2023-02-02。因此我们有必要让kettle自己来处理这些结构的数据。
一、循环条件
1.1循环组件
在我们进行循环学习前,我们需要学习和循环相关的一个重要组件,“检验字段的值”,检验字段的值是实现循环的关键组件,类似for循环中的 i<100来判断什么时候终止作业。
1.2检验字段的值组件介绍
检验字段的值主要包括两部分:“源”即我们判断的数据来源,一般我们使用变量或者上一步骤传过来的值,两者使用方法一致,本来来介绍一种通过的通过变量来实现循环判断。掌握了变量判断,其他的就易如反掌了。第二部就是成功条件,从字面意思就是作业能运行的条件,即我们在for循环中i<100,其中100就是对应的值,其中值建议使用变量代替,如不熟悉使用也可以使用常量来代替。
在成功条件里面还有一个“Success when variable"的选型,默认是不勾选的,它的作用,第一是用来实现无条件执行,即死循环。你不点击停止它就会一直循环运行下次,还有就是我们在调试的时候使用,有时候我们发现循环不执行了,这时候,我们可能会怀疑"源"有问题,也可能是”成功条件“有问题,此时我们勾选“Success when variable"就可以排除成功条件带来的干扰了。
二、循环案例
根据前面所述我们需将2023年1月6日至2023年2月02日的数据恢复,将我们需要将变量${nydate}的值从2023年1月6日变化至2023年2月02日。因此我们需要设置${nydate}初始值为2023年1月6日,然后通过条件判断是否满足执行条件,满足的话执行转换,执行转换后,对应变量+1,然后再判断变量值是否执行条件,再执行转换,执行转换后,对应变量+1再判断...直至变量不满足判断条件。
因此最后我们的作业如上图所示,包括初始变量→检验字段的值→插入数据(执行带变量的转换恢复数据等)→累计变量值→检验字段的值....累计变量值→检验字段的值→成功(不满足执行条件)
2.1初始变量
我们可以通过SQ来设置我们初始变量的值,如oracle数据库,采用如下语句来初始化变量开始日期,采用to_day 来设置变量执行的终止日期加1天(这个在后面再解释)。这样我们就给我们执行的变量赋了初始值2023年1月6日,执行的终止条件为执行至昨天的数据为止。这里根据需求灵活设置。其中变量活动类型都选择"Valid in the root job"在job中进行生效。
select '2023-01-06' startdate,to_char(sysdate,'yyyy-mm-dd') to_day from dual
2.2循环条件
因为条件重点介绍了功能了,这里不再复述,对应我们在源,选择检验类型为变量,将初始变量的开始变量名放在对应变量名处。类似我们选择string类型即可。当然也可以选择时间类型。
成功条件我们选择,成功条件”如果值不包含“而不要去选择”如果值不等于“因为这个判定条件存在一定的问题,这也是为啥我们初始变量的时候对应终止变量值要设置为终止日期+1天了。对应值输入我们结束的条件变量${to_day},这样我们就完成了我们循环的最关键的一步了。
2.3循环执行
循环执行主要包括循环执行的主干程序,和累计循环条件。即在本文中执行恢复2023年1月6日的数据,然后执行一次数据恢复后,将变量日期加1天。
带变量的执行转换
变量累计程序
2.4结束循环
结束循环时我们可以直接用一个成功的组件也可以添加其他转换作业来完成数据转换等。
三、执行结果
为了让大家直观的看到循环的执行效果,我将执行过程中变量的变化值保存至数据库了,如下图所示我们可以看到变量从2023-01-06变化值2023-02-02。自此我们就成功了掌握了kettle的循环了。
2023年我们继续分享kettle相关开发经验,为大家布道、助力。
相关文章:
kettle开发-Day36-循环驱动作业
前言:在日常数据处理时,我们通过变量传参来完成某个日期的数据转换。但可能因程序或者网络原因导致某个时间段的数据抽取失败。常见导致kettle作业失败的原因大概分为三大类,数据源异常、数据库异常、程序异常。因此面对这些异常时࿰…...
2023秋招 新凯来 算法工程师 面经分享
本专栏分享 计算机小伙伴秋招春招找工作的面试经验和面试的详情知识点 专栏首页:秋招算法类面经分享 主要分享计算机算法类在面试互联网公司时候一些真实的经验 一面 技术面 30分钟左右 1.主要是问项目和论文上的东西,问的不深,中间还介绍他们是做缺陷检测的,大概问了16分钟…...
Web3CN|Damus刷频背后,大众在期待什么样的去中心化社交?
刚过去的一周,许多人的朋友圈包括Twitter、Faceboo在内都在被一串公钥字母刷屏,其重要起因就是 Twitter 前首席执行官 Jack Dorsey 发推称,(2月1日)基于去中心化社交协议 Nostr 的社交产品 Damus 和 Amethyst 已分别在…...
Jenkins自动发布到WindowsServer,在WindowsServer执行的命令
echo off set apppoolname"6.usegitee" set websitename"6.usegitee" set webfolder"usegitee" echo 停止站点的应用程序池 C:\Windows\System32\inetsrv\appcmd.exe stop apppool %apppoolname% echo 停止站点 c:\Windows\System32\inetsrv\a…...
【Git学习】Git如何Clone带有Submodule的仓库?
文章目录一、问题描述二、解决问题三、参考链接四、解决问题4.1 下载主模块4.2 查看主模块的配置4.2 子模块的添加4.3 查看子模块的配置4.4 查看子模块的检出状态4.5 检出submodule4.6 再次查看.git/config4.7 重新打开Android Studio运行代码一、问题描述 在GitHub上下载了一…...
C语言进阶——通讯录模拟实现
🌇个人主页:_麦麦_ 📚今日名言:只有走在路上,才能摆脱局限,摆脱执着,让所有的选择,探寻,猜测,想象都生机勃勃。——余秋雨《文化苦旅》 目录 一、前言 二、正…...
【C#基础】C# 变量和常量的使用
序号系列文章1【C#基础】C# 程序通用结构总结2【C#基础】C# 程序基础语法解析3【C#基础】C# 数据类型总结文章目录前言一. 变量(variable)1,变量定义及初始化2,变量的类别3,接收输出变量二. 常量(constant&…...
nvm安装后出现‘node‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
出现这个问题多半是path地址不对。 打开系统环境变量。看看path里面有没有?没有的话,加上就行! 我的报错原因就是因为path里没有自动加上nvm的相关路径。 注意项: 1,在安装nvm之前,提前要把本机以前安装…...
张驰咨询:关于六西格玛,有一些常见的疑惑!
很多想要学习六西格玛的学员,经常会有这些困惑: 以前没有接触过六西格玛,需要什么基础吗?自学还是培训?哪些行业会用到六西格玛呢?学习六西格玛对以后的工作有哪些帮助?如何选择六西格玛培…...
【Vercel】教你部署imsyy/home个人主页
本篇博客教你如何部署一个自己的个人主页 项目地址:https://github.com/imsyy/home 本文首发于 慕雪的寒舍 1.fork仓库vercel部署 首先我们点击fork,将仓库复刻到自己的账户 随后进入vercel,点击dashboard-add new-project 选择你复刻的仓库…...
GeekChallenge
2.GeekChallenge 1.web 1.朋友的学妹 url:http://49.234.224.119:7413/ 右键点击查看源码,找到flagU1lDe0YxQF80c19oNExwZnVsbGxsbGx9 然后base64解码得到SYC{F1_4s_h4Lpfullllll} 2.EZwww url:http://47.100.46.169:3901/ 根据网站提示…...
Java文件IO
文章目录Java中的文件操作File常用构造方法方法文件内容的读写——数据流InputStreamFileInputStream利用Scanner进行字符读取OutputStreamPrintWriter按字符读取文件(FileReader)练习代码实例如何按字节进行数据读如何按字节进行数据写如何按字符进行数据读如何按字符进行数据…...
useSSL使用安全套接字协议(史上最全最详细)
useSSL使用安全套接字协议(史上最全最详细) SSL即为:Secure Sockets Layer 安全套接字协议。 useSSLfalse和useSSLtrue的区别: 在MySQL进行连接时: 如果MySQL的版本是5.7之后的版本必须要加上useSSLfalse,…...
面向对象复习(2)
面向对象(2) 对象与引用 java语言中除基本类型之外的变量都称之为引用类型 java中的对象时通过引用对其操作的 Car bm new Car(); 右边的new Car是以Car类为模板,调用无参构造函数,在堆空间中创建一个Car对象 左边的Car bm 在栈中创建了一个Car类型的引用变量,所谓Car的…...
python中使用numpy包的向量矩阵相乘
一直对np的线性运算不太清晰,正好上课讲到了,做一个笔记整个理解一下 1.向量和矩阵 在numpy中,一重方括号表示的是向量vector,vector没有行列的概念。二重方括号表示矩阵matrix,有行列。 代码显示如下: …...
ElasticSearch 学习(一)
目录一、Elasticsearch 简介二、Elasticsearch 发展史三、Elasticsearch 功能四、Elasticsearch 特点五、Elasticsearch 应用场景一、Elasticsearch 简介 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据…...
【新】华为OD机试 - 交换字符(Python)| 刷完获取OD招聘渠道
交换字符 题目 给定一个字符串 S 变化规则: 交换字符串中任意两个不同位置的字符 M S 都是小写字符组成 1 <= S.length <= 1000 输入 一串小写字母组成的字符串 输出 按照要求变换得到最小字符串 示例一 输入 abcdef输出 abcdef示例二 输入 bcdefa输出 acde…...
手把手教你解决传说中的NPE空指针异常
1. 前言最近有好几个初学java的小伙伴,甚至是学习到了JavaWeb、框架阶段的小伙伴也跑来问壹哥,该如何解决Java中的NullPointerException空指针异常。因为NPE是初学者特别常见的典型异常,所以壹哥在这里专门写一篇文章,来手把手地教…...
【pytorch安装】conda安装pytorch无法安装cpu版本(完整解决过程)
问题描述 在安装pytorch过程中,发现最后验证torch时总是返回结果为False,结果翻上去发现自己安装的是cpu版本的。 然后又通过conda去更换不同版本尝试,发现都是cpu版本的。 问题分析 通过conda安装pytorch是从源中搜索匹配指令中的文件&am…...
云计算ACP云服务器ECS实例题库
😘作者简介:一名99年软件运维应届毕业生,正在自学云计算课程。👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。&…...
面试题:作用域、变量提升、块级作用域、函数作用域、暂存性死区、var和let的区别
<script>var a 10;(function () {console.log(a)a 5console.log(window.a)var a 20;console.log(a)})() </script> 上述代码: 1、主要是涉及到变量提升和函数作用域,var a20这行代码会在函数作用域中提升var a 至最顶部…...
JAVA练习49-爬楼梯
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-爬楼梯 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 2月13日练习内容…...
深兰科技机器人商丘制造基地正式投产,助力商丘经济高质量发展
2月9日,深兰科技机器人商丘制造基地投产仪式在商丘市梁园区北航创新园隆重举行。商丘市人大常委会副主任、梁园区委书记张兵,梁园区区长薛天江、河南省装备制造业协会会长张桦,河南省机器人行业协会会长王济昌,深兰科技集团董事长…...
ES倒排索引/查询、写入流程
ES学习笔记 Elasticsearch学习笔记_巨輪的博客-CSDN博客 Elasticsearch学习之图解Elasticsearch中的_source、_all、store和index属性_BUse的博客-CSDN博客 倒排索引 倒排索引:ES倒排索引底层原理及FST算法的实现过程_es fst_Elastic开源社区的博客-CSDN博客 【…...
2023软考考哪个证书好?
软考有三个级别(初级,中级和高级),这三个级别分别对应5个方向,下面这张图片呢,可以一目了然,一些小小建议!!!遵循一个原则:首先选专业对口的科目&…...
一般人我劝你不要自学软件测试!!!
本人5年测试经验,在学测试之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说:自学软件测试,一般人我还是劝你算了吧?因为我就是那个一般人! 软件测试基础真的很简单&…...
docker/docker-compose 安装mysql5.7
目录使用docker安装mysql5.7docker普通安装docker生产环境安装使用docker-compose 安装注意注意一:docker-compose权限问题注意二:docker pull 找不到镜像使用docker安装mysql5.7 docker普通安装 docker pull mysql:5.7 # 启动容器 docker run -p 3306:3306 --name mysql -e …...
【C++设计模式】学习笔记(6):Bridge 桥模式
目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…...
Allegro如何批量快速修改复用好的模块操作指导
Allegro如何批量快速修改复用好的模块操作指导 在做PCB设计的时候,相同模块可以用reuse复用的功能,可以大大提升效率,但是模块需要修改的时候,其它模块也要跟着修改,逐个再去复用一遍比较费时间,Allegro支持批量快速修改复用好的模块 前提是相同模块必须是相同的mdd文件…...
让我百思不得其解的infer究竟是怎么推导类型的?
情景再现 有这么一个条件类型的基本语法: T extends U ? X : Y; 如果占位符类型U是一个可以被分解成几个部分的类型,譬如数组类型,元组类型,函数类型,字符串字面量类型等。这时候就可以通过infer来获取U类型中某个部分的类型。 …...
wordpress升级流程/手机优化游戏性能的软件
文章目录分层思想OSI七层模型TCP/IP五层协议簇数据的封装与解封装过程设备与层之间的对应关系各层之间通信协议与层之间的对应关系TCP/IP四层模型分层思想 通信需求---->定义协议(规则)标准 完成一件事需要的协议太多!就需要进行分层&…...
web网站开发实训总结/品牌推广的概念
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81158566 定义问题 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存&#x…...
php网络公司网站源码/天津网站策划
前言:仅个人小记。 注意到 RSA 中并不要求消息 m 要和模数 n 互素,而 RSA 所依赖的“费马定理,欧拉定理”,仿佛都要要求 m 须和模数 n 互素。这里给出针对 RSA 中 n 为两个素数乘积时的具体解释,实际上应归属于广义的欧…...
北京天奕时代创意设计有限公司/深圳优化网站方法
打印机十大共性故障解决方法!!! 打印机已是我们现代办公必备的设备,可以说它的使用大大减轻了我们的劳动强度,提高了工作效率,使办公环境更加轻松。可是由于各种原因,打印机在使用一段时间后经常…...
昆明网站建设一条龙服务/游戏推广引流
文章目录1. 目标检测发展历程2. 目标检测基础概念2.1 边界框(bounding box)2.2 锚框(Anchor box)2.3 交并比3. 林业病虫害数据集和数据预处理方法介绍3.1 读取AI识虫数据集标注信息3.2 数据读取和预处理3.2.1 数据读取3.2.2 数据预…...
网站建设百度云/北京网上推广
算法设计与分析 钻石金字塔问题 一、 问题描述 现在你的任务是从金字塔的顶端向金字塔的底端收集钻石,并且尽可能收集价值高的钻石,但是只能从一块砖斜向左下或斜向右下走到另一块砖上,如从上图从用红色 A 标记的砖走向用蓝色 B 标记的砖上。…...