
ETL数据治理
文章平均质量分 52
沙漏无语
沙漏是时间的诗篇,是岁月的印记,承载着过往与未来。
展开
-
kettle中作业实现最简单的循环插入数据
2、检验字段的值设置,设置10,循环了9次。先转换,在js中++,就是10次了。5、生成19位的主键的java代码。3、javasript 中设置。原创 2025-04-18 13:50:28 · 188 阅读 · 0 评论 -
kettle生成uuid32位——kettle开发44
如 "550e8400-e29b-41d4-a716-446655440000"UUID是由一组字符组成,通常呈现为32位的十六进制数,生成的UUID是34位的,我们去掉-,转换为正常的32位。原创 2024-07-04 10:22:10 · 450 阅读 · 0 评论 -
批量去重合并文件夹中所有的excel——kettle开发43
合并所有的excel 成一个新的所有的excel: 并根据id排序,多个相同格式的excel。原创 2024-07-04 09:24:24 · 348 阅读 · 0 评论 -
Kettle新版下载安装使用-——kettle开发00
链接:https://pan.baidu.com/s/1xfjeUZKGMFZzWf2bP9ZHiQ?双击data-integration,找到spoon.bat进行双击,稍等几秒就可以显示界面啦。1.下载oracle的jar包,我这里我下载好了放在网盘里。(5)选择有“Data Integration”的下载。6.填写框起来的内容,点击测试,成功后再点击确认就好了。4.双击spoon.bat打开界面,新建转换。(1)复制链接在网页打开,点summary。(6)下载完就可以得到安装包了。原创 2024-05-17 11:06:12 · 20234 阅读 · 8 评论 -
kettle作业发送QQ邮箱提醒——kettle开发42
开通完成后会有一个授权码,此时记得保存授权码,如果忘记了也没关系,可以重新设置。授权码一般为16的字母乱码,如我的是vfgdsigddydbtfhh。随着kettle作业的不断深入和业务的不断运用,对于kettle作业是否正确执行保证底层数仓数据的及时准确是至关重要的。1、登录QQ邮箱,点击设置→账户→POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务→。4、设置发送邮箱的抬头,设置主题即可使用。2、开通IMAP/SMTP服务。一、开通SMTP邮箱服务。原创 2024-06-12 14:13:26 · 1284 阅读 · 0 评论 -
设置转换的执行顺序——kettle开发41
1、一个作业内的转换,是顺序执行的。2、一个转换内的步骤是并行执行的。3、作业内不支持事务,转换内支持事务。1、执行SQL是优先于所有步骤。2、使用“阻塞数据直到步骤都完成”,确保其他数据步骤都完成再进行下一步骤。1、设置转换只使用一个事务。转换设置-->夹项-->使用唯一连接。2、设置转换内的表插入等数据库的操作不进行批量提交。"提交记录数量"-->0。原创 2024-06-12 14:10:14 · 2071 阅读 · 0 评论 -
kettle缓存问题——kettle开发40
我们正常安装好kettle后会在c盘的用户下生成.kettle的文件夹,这里面的db.cache-5.4.0.1-130即1-130类型的文件就是保存了对应的缓存数据,主要包括共享数据库链接数据及转换和作业更新的缓存数据。kettle启动和定时任务启动都会先读取缓存加快加载速度,但是这也经常造成kettle程序不能运行,定时任务运行失败。但运行一段时间后会自动生成。2、创建bat文件,定时删除对应1-130文件,自动清理缓存。1、出现问题时手工删除对应的1-130文件,再重新启动kettle即可。原创 2024-06-12 14:00:04 · 902 阅读 · 0 评论 -
设置参数——kettle开发39
如上图所示,字符串替换可以将字符串A变成字符串B,因此我们可以通过字符串替换的功能可以清除类似包含""的数据等等。2、小案例字符串替换的时候如果我们是简单的讲A替换为B的话,我们只要选择需要替换的输入流字段,不使用正则表达式,搜索里面输入A,使用...替换,输入B即可,设置为空串为否等如下图所示即可。原始字段:替换后的结果如上图所示,我们成功将字符串,因为我们选了大小写不敏感,因为a也会被替换,因此我们需要根据自己的需要来选择对应的替换数据范围。原创 2024-06-12 13:57:01 · 638 阅读 · 0 评论 -
AI分流之case/switch——kettle开发38
如上图所示,我们的 Switch / Case 组件,主要包括Switch字段,即我们用于判断的字段,然后就是指定字符串的类型,掩码和小数点的符号等用来处理一些特殊数据。下面的case 值就是通过Switch字段里面的不同值,执行不同的目标步骤。下面的默认目标步骤即当Switch字段数值都不在case值里头就执行默认目标步骤。类似:case when Switch字段=1 then 目标步骤1when Switch字段=2 then 目标步骤2else 默认目标步骤。2、总结。原创 2024-06-12 13:52:56 · 1144 阅读 · 0 评论 -
AI算力组合——kettle开发37
日常中,也存在部分场景,我们表输入是没有唯一性主键的,我们无法判断哪些数据有更新和插入,但我们又不能用裁剪表来直接删除后再更新,这时候我们该如何是好。很多人会想到,那就提高算力,提高数据处理速度就好,在1秒时间内完成100万数据的处理。理论上是可行,但是正如ChatGpt的发展会受到算力的制约一样,我们来分析下,怎么通过调整数据处理策略来提高效率并保证数据的可用性。原创 2024-06-12 13:46:11 · 314 阅读 · 0 评论 -
自动同步库数据——kettle开发36
kettle中的那些人工智能。原创 2024-06-12 13:39:23 · 792 阅读 · 0 评论 -
SQ索引优化——kettle开发35
有个单表数据超249G了,里面存储的数据时间跨度就1年左右,那为啥会出现这种情况呢?数据来源为,一个生产基地所有电表的每分钟读数,一个基地大概500个电表左右,然后乘以1天24小时,一天1440分钟,一年365天,所以就出现了前面说的单表超249G的情况。真的是单表顶10库。因业务部门想看到每个时间点的电耗来安排排产,虽然当时满足了业务需求,但随着时间的推移对应数据量是越来越大,前端查询和后端数据抽取的耗时越来越大,因此怎么让如果大表实现快速的数据分析和数据处理呢?更换非关系型数据库?分表分库?原创 2024-06-12 13:18:30 · 661 阅读 · 0 评论 -
循环驱动作业——kettle开发34
我们通过变量传参来完成某个日期的数据转换。但可能因程序或者网络原因导致某个时间段的数据抽取失败。常见导致kettle作业失败的原因大概分为三大类,数据源异常、数据库异常、程序异常。因此面对这些异常时,怎么快速恢复批量数据,就需要利用循环来处理,指定含条件的数据,如恢复2023年1月6日至2023年2月02日的数据等等。原创 2024-06-12 10:33:46 · 2046 阅读 · 0 评论 -
设置参数——kettle开发33
定义方式是采用键=值对方式来定义,如:startdate=20230101,就说明我们定义了一个startdate的全局参数,对应值为20230101,需要注意的是配置全局变量时需要重启kettle才。通过作业我们就能让转换按顺序执行,作业包括作业项、作业跳,通过作业跳来控制作业项是无条件执行,还是当作业项执行结果为True时,怎么执行,为false时怎么执行。我们的实现过程包括,修改kettle.properties文件,使用变量STARTROW和PAGESIZE的值。参数分为两种:全局参数和局部参数。原创 2024-06-12 10:26:50 · 1170 阅读 · 0 评论 -
kettle分批导出excel——kettle开发32
假设有10条数据,一个sheet只能放6万,需要分两个excel导出。注意:输出的bb是string类型。原创 2024-06-11 17:22:40 · 546 阅读 · 0 评论 -
Kettle分组输出多个excel——kettle开发31
将整理好的一份供应商付款明细Excel文件,按供应商拆分成多个Excel文件。原创 2024-06-11 15:16:03 · 1547 阅读 · 0 评论 -
作业job——kettle开发30
一个作业包含一个或多个作业项,这些作业项以某种顺序来执行。如下图所示的作业,我们从START开始,传送数据,当我们传送数据成功后我们就加载维度表,但当我们传送数据失败后,我们就会发送错误邮件并结束这个作业。最终我们的作业包括转换1和转换2及对应成功和失败后的处理操作,如成功后发送邮件,错误后发送错误邮件,并终止作业。为了方便大家理解,我们可以执行一个作业案例,从Excel读取数据,保存到Excel,再从文本文件中读取数据保存到Excel,如果产生错误就发送邮件,并且停止作业,如果成功发送成功邮件。原创 2024-05-28 17:12:32 · 435 阅读 · 0 评论 -
Java脚本——kettle开发29
在java脚本里面我们通过点击,左边的Main函数来自动生成框架代码,然后我们通过在框架代码,根据提示的语法规则获取到code的值,当code为空或者为空字段值,我们获取name的值给它,否则就在code后面加上123,然后我们在最下面生成新的字段newcode来保持我们的数据,最后按提示语法编写输出语句,将数据流的输出结果赋值给newcode。和昨天所学的JavaScript脚本一致,java脚本也分为三个区域,分别是左边是代码的类和片段,右边是代码区、最下面是结果输出区,输出我们的字段等信息。原创 2024-05-28 15:16:14 · 867 阅读 · 0 评论 -
JavaScript脚本——kettle开发28
这个组件存在两种不同的模式:不兼容模式和兼容模式,不兼容模式:是默认的,也是推荐的 兼容模式:兼容老版本的kettle。兼容模式下:根据字段类型的不同,使用不同的方法:如字段是字符串类型,此时获取字段名为myVar=FileName.getString();最终我们的转换包括生成记录,即生成1000条日期数据,通过增加序列来增加序号,然后通过计算器来进行日期的累加,最终通过字段选择和JavaScript代码提取年、月、日将我们的数据获取,并输出至Excel。最终我们通过计算器就获取到我们需要的数据了。原创 2024-05-28 15:12:15 · 2020 阅读 · 0 评论 -
映射——kettle开发27
映射用来定义子转换,便于封装和重用。本次我们主要来讲解映射下面的三个子功能,分别为映射(子转换)、映射输入规范、映射输出规范。最终我们的转换由,表输入、映射(子转换)、Excel输出 映射输入规范、数据库查询、映射输出规范组成。users表的操作会经常用到,因此我们将u_id做成了映射(子转换)即可。操作起来也是相当的方便,我们只需要在组件里面选择我们需要的子转换即可。映射输入规范是输入字段,由调用的转换输入。,即我们在转换里面调用转换的时候可以用到。映射(子转换)是用来配置子转换,原创 2024-05-28 14:27:07 · 488 阅读 · 0 评论 -
分组——kettle开发26
分组是按照某一个或某几个进行分组,同时可以将其余字段按照某种规则进行合并,从字面意思来看,分组不但是分组而且还进行了合并操作。分组我们的主要需要注意的是,我们需要首先指定分组的字段,然后指定聚合后的新字段,如下图所示count就是按照group字段分组后,聚合的新字段。这里特别注意的是,我们排序的字段是我们分组的字段,因为只有这种排序才是有价值的,因此在本次任务中,我们排序的字段是group。对应的分组需要注意的是我们首先需进行排序,并指定分组字段,然后运行转换即可看到我们需要的结果。原创 2024-05-28 09:56:22 · 699 阅读 · 0 评论 -
记录集连接——kettle开发25
弄清楚对应记录集连接的语法后,我们来完成这么一个任务,从Excel中读取employees和departments,进行内关联、左关联、右关联、全关联,把数据保持至Excel。记录集连接就像数据库的左连接、右连接、内连接、外连接。需要注意的是,因为我们是对数据流进行操作,因此我们在进行记录集连接操作前,需要先将数据进行排序。新版的KETTLE,名字都改了,叫Merge join。原创 2024-05-28 09:49:16 · 815 阅读 · 0 评论 -
记录关联(笛卡尔积)——kettle开发24
因前面多次讲到了Excel输入和输出,在这边就不再重复阐述了,重点阐述下记录关联(笛卡尔输出)。记录关联的重点需要关注的是以哪个为主步骤,根据需求来看我们随便选择一个即可,然后我们运行转换即可看到我们笛卡尔积的运算结果了。如下图所示,我们有两组数据分别为aaa和bbb,笛卡尔积后我们生成了4种结果,即2*2=4条记录。我们有这么一个需求就是从Excel读取两位和三位数,完成两位和三位数的组合(笛卡尔积),把结果保存到Excel.记录关联(笛卡尔积)需要注意的是我们需要指定一个主步骤。原创 2024-05-28 09:05:57 · 487 阅读 · 0 评论 -
合并记录——kettle开发23
其中根据字段数据的状态,分为四种数据状态,分别为“identical”-旧数据和新数据一样、“changed”-数据发生了变化、“new”-新数据中有而旧数据中没有的记录、“deleted”-旧数据中有而新数据中没有的记录。合并后的数据将包括旧数据来源和新数据来源的所有数据,对于变化的数据将用新数据代替旧数据,同时在结果中用一个标示字段,来指定新旧数据的比较结果。合并记录是用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。原创 2024-05-28 09:00:00 · 1993 阅读 · 0 评论 -
流查询——kettle开发22
我们接下来重点讲下流查询操作,需要注意的是因为我们要输出depname因此我们在流查询步骤选择时,我们选择departments,然后指定depid和id关联,最后输出我们的匹配dep_name。流查询的操作包括指定数据源,即我们将数据进行流查询的数据源头,如下图所示流查询的数据源是我们的Excel输入-departments,然后我们还需要指定我们进行流查询匹配的字段,即我们进行等值查询的字段,depid和id。最后我们指定我们需要返回的字段,即depname 来接收我们流查询的值。原创 2024-05-27 17:32:01 · 638 阅读 · 0 评论 -
数据库连接——kettle开发21
"问号作为单参数来进行我们数据库的查询,对应问号的值我们用其他数据库来传递并过滤查询数据库的值,如 select * from employess where depid=?然后新建一个数据库连接,来查询employess表数据,增加一个where条件来查询对应的数据。我们的departments表是存在test库,但是我们的employess 表示存在我们的mysql库中。因此数据库连接就帮助我们实现了跨库查询操作,在本次案例中我们都是在。数据库连接可以执行两个数据库的查询,和单参数的表输入。原创 2024-05-27 17:11:34 · 669 阅读 · 1 评论 -
数据库查询——kettle开发20
如图所示我们在进行数据库查询操作时,我们首先需建立数据库连接,输入表名和查询需要的关键字,最后就是我们需要输出的字段。类似 select * from departments left join member on departments.dep_id=member.id。数据库查询就是数据库里面的左连接,左连接就是两张表执行左关联查询,把左边的表数据全部查询出来。从employees表中读取数据,根据dep。id从departments获取dep。name,保存到Excel中。原创 2024-05-27 16:55:15 · 651 阅读 · 0 评论 -
HTTP client——kettle开发19
HTTP client中选择第二种方式,选择字段的方式来获取URL,然后将结果保存至result中,因返回的是XML,因此还需要一个Get data from XML,我们从返回的XML数据可知,对应需要数据存储在perproties路径下,因此我们在设置数据循环读取路径到perproties即可。最终转换包括自定义常量数据,用来保存url地址,HTTP client 用于获取xml文件,Get data from xml就是用来解析XML文件的、EXCEL输出用来输出最终的结果。原创 2024-05-27 16:51:52 · 776 阅读 · 0 评论 -
空操作——kettle开发18
此时做个需求肯定让你联想到switch case 组件,当switch表达式值的字段code为空的时,我们输出至Excel1,当他不为空的时候数据保持到EXCEl2中,这时候我们会得到两份结果。这是因为空操作就是啥都不干,我们也没必要在每个转换后面加上一个空操作来告诉别人,这个转换结束了,哈哈哈,这不得不提下前面我说到过的,其实组件在转换里面是没有顺序的,只有的优先级的概念。接下来我们做个转换,是从Excel读取数据,分离code为空的数据,空数据不执行任何操作,不为空的数据保持到Excel中。原创 2024-05-27 16:44:53 · 425 阅读 · 0 评论 -
switch-case语句——kettle开发17
switch case组件的主要三大部分包括switch判断的字段,类似于前面说到的表达式,然后选择case值的数据类型,建议使用整形,因为这样运行速度相对更高,然后就是case 值分组标志,即case值=0时输出一个结果,=1时输出另外一个结果,=2时类似。原创 2024-05-27 16:41:20 · 728 阅读 · 0 评论 -
写日志——kettle开发16
原创 2024-05-27 16:38:27 · 153 阅读 · 0 评论 -
行扁平化——kettle开发15
如都是张三,一行是张三的个人,如姓名是张三,年龄20,性别男。类似李四也是一行个人信息,一行学习课程信息,只有这样的数据才能分组并排序后进行扁平化,扁平化后的效果就是一行显示了张三的个人信息和学习课程信息。对应转换的包括EXCEL输入、排序记录、行扁平化、EXCEL输出,对应的EXCEL表输入和EXCEL表输出和以前操作一样就不重复展示,关键是介绍我们的行扁平化的操作,行扁平化需要找到关键字段,并指定转换的列名称。如下图所示,张三的爱好信息,分别存储了两行,扁平化后,整合成一行,效果如图所示,zhnag。原创 2024-05-27 15:15:45 · 643 阅读 · 0 评论 -
行转列——kettle开发14
具体EXCEL输入主要包括,要输入的EXCEL的位置,然后获取对应字段,EXCEL输出为指定EXCEL输出保存的位置,然后获取对应EXCEL输出的位置。其中行转列,我们根据上面说的语法,配置对应key字段、字段名称、Key值、Value值。我们来看下行转列组件的关键语法,行转列包括关键的Key字段即转换后的列名,然后通过字段名称周一至周日与key值匹配对应,最后将原列名周一至周日对应的数字,全部对应一个新的字段即工作小时,这样我们就完成了行转列的基本操作了。原创 2024-05-27 15:01:27 · 835 阅读 · 0 评论 -
列转行——kettle开发13
其中EXCEL输入和之前一样选择输入的EXCEL表格位置,并获取字段,重点阐述列转行,首先指定关键字段即我们需要转换的数据列,在我们的任务中就是星期字段,然后就是我们分组的字段即姓名,需要注意的是我们生成的新字段,根据数据来,数据中是周一至周日因此我们的列转行新字段名也分别是周一至周日。需要注意的是列转行在转换前也需要进行排序操作,具体我们可以看到列转行主要包括关键字段即我们需要转换的字段,如星期,分组字段是我们相同的主字段,如姓名,目标字段是生成的字段名,数据字段是工作小时,即是目标字段的存储值。原创 2024-05-27 14:58:05 · 881 阅读 · 0 评论 -
列拆分为多行——kettle开发12
实例,如我们将一个信息录入为1行,其中包括ID、name、age、sex、hobby,其中ID、name、age、sex均只有一个值,只有我了的爱好hobby是通过分号;ID、name、age、sex、hobby1(eat),ID、name、age、sex、hobby1(basketball),ID、name、age、sex、hobby1(football),ID、name、age、sex、hobby1(sing)如下图所示。最终我们的转换包括EXCEL输入、列拆分为多行、EXCEL输出。原创 2024-05-27 14:43:16 · 683 阅读 · 0 评论 -
拆分字段——kettle开发11
EXCEL输出还是和以前一样,选择EXCEL输出的位置,点击运行转换,查看运行结果,如图所示我们看到我们将原来的name字段拆分为了firstname和lastname这两个新字段,功能还是非常强大的,但是我们需要注意的是原来字段就不存在数据流中,因此我们输出的EXCEL中就不存在原来name字段的值。拆分字段,我们先选择要拆分的字段,然后选择拆分符为-,然后输入两个新字段的名称分别为firstname 和 lastname并指定对应字段类型为string类型。EXCEL输入还是和以前一样,选择。原创 2024-05-27 14:30:33 · 707 阅读 · 0 评论 -
哈希值——kettle开发10
如图所示,虽然殊途同归,但是哈希值的实现原理和去除重复记录+排序记录实现用原理还是有较大的区别的。去除重复记录和排序记录是对相邻的两行记录进行对比,这也是为啥去除重复记录必须要先排序,然后进行对比。然后我们再指定输出,指定输出结果的位置,然后运行转换,来查看对应的结果。结果如我们所示,由以前的8条,变成了4行,效率较去除重复记录和排序记录要高,因此,我们要根据我们的需求合理选择。首先我们先对EXCEL进行设置,和前面一样,我们找到input目录,指定对应EXCEL输入的位置,并获取对应EXCEL中的字段。原创 2024-05-27 14:26:19 · 464 阅读 · 0 评论 -
去重复记录和排序——kettle开发09
EXCEL输入:如图所示我们EXCEL表里面一共有7条记录,这里面需要注意的是,我们在去除重复记录的时候,是不是大小写敏感,如果我们大小写敏感的话,那我们如图所示,我们是没有重复记录的,因此我们在去除重复记录的时候要根据需求来选择是否大小写敏感来过滤我们的数据,从而达到我们去除重复的目的。去除重复记录,就是将数据流中的数据进行字段比较,从而去掉重复值的过程。去除重复记录的前提是需要将数据流中的数据进行排序,然后再进行去重操作。去除重复记录的逻辑是,如下图,我们将需要比较的字段作为比较值来比较是否重复。原创 2024-05-27 14:22:08 · 835 阅读 · 0 评论 -
大数据相关概念——kettle开发00
通常我们发现当我们使用某宝、某音后,他们会自动推荐我们想要的东西,哪怕只是今天和朋友提了一句,或者是偶尔闲聊,这些都会被大数据记住,然后推荐你需要的给你。在大数据给我们带来方便的同时,我们害怕数据安全会侵犯我的个人隐私。为了不被大数据化,我们可以搜索些我们不关注的,比如我是个男生为了不被大数据去搜索一些化妆品,衣服包包的信息,来稀释我们的用户画像信息,从而推荐就不会那么准确了。那这些大数据背后都有哪些数据处理工具和数据处理办法呢?原创 2024-05-24 17:24:18 · 288 阅读 · 0 评论 -
定时调度任务——kettle开发08
当我们刚接触kettle时,我们为了方便测试和演示作业的效果,常常通过Start组件来定时完成作业的调度。在我们的作业里头,我们选择通用,然后选择一个START组件,双击打开,我们就可以看到,START组件可以通过勾选重复,按照我们的要求来定时运行我们的作业。如下图所示,我们设置作业每小时运行一次,然后我们可以在日志栏详细看到我们的运行记录,包括运行时长,读取、删除、插入、更新那些记录。原创 2024-05-24 17:10:04 · 2112 阅读 · 0 评论