- 博客(46)
- 收藏
- 关注
原创 kettle完成mysql表与表之间的更新和插入
版本:20231209kettle完成数据库表与表之间的转换非常的简单,只需要在输入模块选择:输入表;在输出模块选择:插入和更新表模块1.表输入设置表输入比较简单,选定设置好的数据库,读取数据即可这里我们要选择关键字,即id,同时stu表里面有两个字段,选择要跟新的两个字段,注意选择的字段需要和stu2的表一致,不然会报错
2023-12-09 19:05:50
881
原创 hql面试题之上海某资深数仓开发工程师面试题-求不连续月份的月平均值
A,B两组产品的月平均值,月平均值是当月的前三个月值的一个平均值,注意月份是不连续的,如果当月的前面的月份不存在,则为0。如A组2023-04的月平均值为2023年1月的数据加2023-02月的数据的平均值,因为没有其他月份则需要再加一个0,再求平均值。要求:求出每个月的月平均值。使用lag窗口函数,lag的偏移量可以锁定前三个月的数据,没有的显示为0;
2023-11-29 21:19:51
580
原创 kettle spoon连接MySQL8.0数据库报错解决方法
参考和jar包来自:https://www.bilibili.com/video/BV1244y1K7oz/?解决:kettle\data-integration\lib包下面加装mysql连接的jar包。kettle 连接 mysql 8.0报错,显示无法连接到数据库服务。现状,url,库名,表名都没有问题。重新连接mysql,测试显示成功。原因:因为没有安装jar包。
2023-11-22 13:02:40
2312
原创 hive数仓-数据的质量管理
数据的质量管理,表现保障在数据的健康性,即满足消费者期望程度,体现在他们对数据的使用预期,只有达到预期才能满足决策层的参考。
2023-11-16 22:13:07
1280
原创 hive窗口函数记录
窗口函数,能为每行数据划分一个窗口,然后对窗口范围内的数据进行计算, 最后将计算结果返回给该行 数据。使用场景:在一条数据中既想要展示明细,又想要体现一部分数据整体的效果,就可以使用窗口函数。这也是它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。如下图式例:既想要展示sc表每个sid学生的成绩,又想要展示展示每个学生在整个年级的排名情况,rw即为窗口所展示的数据。
2023-10-23 19:54:00
698
原创 大数据练习题mysql之求连续出勤和连续最大登陆天数
某APP活跃用户,字段uid和dt两个字段,求连续出勤天数大于等于三天的用户和用户最大登录天数求连续出勤天数,使用row_number()方法:SELECT a.uid, DATE_SUB(a.dt,INTERVAL a.rn DAY),COUNT(1) FROM(SELECT uid ,dt ,row_number() over(PARTITION BY uid ORDER BY dt) AS rn FROM active) aGROUP BY a
2022-05-26 23:37:40
1181
原创 mysql基础操作导入数据
文章目录展示三种不需要使用数据操作的数据导入方法1.mysql命令导入:mysql -u用户名 -p密码 < 要导入的数据(sql文件)2.source 命令导入: source c:\Desktop\text.sql3.使用MySQL 语句来插入数据:LOAD DATA INFILE展示三种不需要使用数据操作的数据导入方法1.mysql命令导入:mysql -u用户名 -p密码 < 要导入的数据(sql文件)实例:向表temp_test_01(user_id,dat
2022-05-23 11:39:34
5689
原创 python3字符串的操作
文章目录一、字符串的编码和解码1.encode()2.decode()二、字符串取值和切片1.str[]三、字符串的查询操作1.find()2.index()3.count()4.rfind()5.rindex()6.len()四、字符串替换、裁剪、拼接1.replace()2.split()3.join()五、字符串的大小写转换capitalize()title()upper()lower()swapcase()七、字符串对齐1.ljust八、字符串删除九、字符串判断一、字符串的编码和解码1.enco
2022-02-28 15:56:04
996
原创 python3 里面的print可以作为变量名,但是没有意义
学python3的时候发现了一个好玩的事情,print是可以作为变量名去使用的具体分析如下:1.print 是一个函数名在 Python3.x 是一个函数,但在 Python2.x 版本不是一个函数,只是一个关键字,我们现在用的是python3,应该是可以作为变量名使用的2.变量和打印不可兼得但是这样相当于把原来print指向的函数名,替换成一个变量,那样的话你使用的print 就不是函数,而是你设定的变量值,这样的话print本身的打印功能就会失效,也就是说你把print作为变量名,你就不能直接
2022-02-16 15:20:27
2861
原创 使用git将自己的代码管理起来,添加和回滚
1.什么是git?简单记忆:一个帮助我们做版本控制的软件Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是大佬 Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。2.安装地址:https://git-scm.com/3.如何将自己的代码放入git用到的方法:git init 初始化git仓库git pull 更新代码git status 看状态git add .将所有文件暂存gi
2022-01-20 17:42:14
582
原创 shell基础的正则表达式
什么是正则表达式正则表达式是使用某种模式去匹配字符串的一种公式,是由一串字符和元字符构成的字符串基础的正则表达式表达式作用.(句点)匹配换行符(\n\r)意外任意的字符*后面有0个或多个,重复匹配*号前面的字符{m,n}mn均为非负整数,其中m<=n。大小匹配1此,最大匹配n次^以…开头,标识从字符串首位匹配,书写时必须写在首位,否则匹配为空$以…结尾, 标识从字符串末尾匹配,书写时必须写在末尾,否则匹配为空[]字符集范围,[0-9]
2021-12-29 14:56:40
293
原创 shell 输入一个开始时间和一个结束时间,如何找出其中所有的周一和周日
题目:当输入一个开始时间,一个结束数据,我们如何计算其中的周一和周末思路分析:确认第一个周日和最后一个周日,使用while循环每周+7的形式,确定每一个周日,周一就是周日 -6天1.先建立一个text脚本vim text.sh2.输入以下代码:#!/bin/sh#获取开始时间sta_date=$1#获取结束时间end_date=$2echo "开始时间为:${sta_date}"echo "结束时间为:${end_date}"#限定开始日期只能是 yyyymmdd 的数字
2021-12-23 11:27:57
919
原创 #如何用shell查询一张hive的表是否为空表
例如:一张分区表表名: table_ku.table_name分区: t-1天,每天一个分区,10000条数据方案一:调用hive的方法去统计方法1:统计一共有多少条数据,为0条说明表格为空file_memory=`hive -e "select count(1) from table_ku.table where dt=${yesterday}"|sed -n '2p'`#导出统计值echo file_memory输出10000方法2:统计是否有数据,有数据证明不为空file_mem
2021-12-21 14:44:55
1507
原创 python学习之函数变量的作用域
变量的作用域相当于变量的命名空间,赋值过的变量并不是在哪里都可以使用的。如何定义变量决定了变量在哪里可以被使用什么是变量的作用域?程序代码能访问该变量的区域根据变量的有效范围可分为:局部变量和全局变量1.局部变量在函数内定义并使用的变量,只在函数内有效,局部变量使用global声明,这个变量就会变成全局变量2.全局变量函数体外定义的变量可作用于函数内外实列:s='hello Python' #全局变量def fnc(): x='hello world' #局
2021-12-17 14:36:43
785
原创 python学习之函数创建和参数定义
文章目录1.什么是函数2.函数的创建和调用(1)函数的创建(2)函数的调用3.函数的参数的定义(1)必须参数:(2)关键字参数:(3)默认值参数(4)可变参数1.什么是函数背景:在编程中,我们经常要用到调用相同或者类似的操作,这些相同或者类似的操作是由同一段代码完成的。函数的出现可以帮助我们避免重复编写这段代码。把相对独立的某个功能抽象出来,使之称为一个独立的实体定义:函数就是完成特定任务,执行特定功能的一段代码作用:复用代码,隐藏实现细节,提高可维护性,提高可读性,便于调试2.函数的创建和调用
2021-12-17 11:56:21
861
原创 python学习之递归函数以及用递归实现斐波那契数列
1、什么是递归函数如果一个函数的函数体内调用了该函数本身,这个函数就称为递归函数实列:使用递归实现一个阶乘 5*4*3*2*1def fun(a): if a==1: return 1 #终止条件 else: return a*fun(a-1) #递归调用print(fun(5)) ************************* 120分析: 当输入值5时,按照递归依次带入到函数中 5 * (4 * (3*(2*fun(1
2021-12-16 17:58:45
1661
原创 python学习-字符串的驻留机制
1.什么是字符串的驻留机制字符串驻留:是一种在内存中保存一份且不可变字符串的方法。(相同的字符串只保留一份)不同的值被存放在字符串的驻留池当中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同的字符串时,不会开辟新的空间,而是把字符串的地址赋给新的创建变量。a='hello'b="hello"c="""hello"""print(a,id(a)) #hello 2967447375728print(a,id(b)) #hello 2967447375728print(a,
2021-12-15 15:26:28
2129
原创 python学习1--列表的创建、增删改查、以及反转、统计、排序
1.什么是列表列表是pyhon的一种数据结构,序列中的每个值都有对应的位置值,称之为索引。列表可以储存N多个元素。它相当于其他语言中的数组2.列表的创建1.使用中括号lst=['hello','world',98]2.内置函数list3.列表生成式3.列表的查询1.查询元素索引2.获取单个元素3.获取多个元素4.in/not in4.列表元素的增删改append() 在列表的末尾添加一个元素extend() 在列表的末尾至少添加一个元素insert() 在列表的任意位置添
2021-12-13 14:59:48
917
原创 如何设置一个简单的pycharm模板
流程简述:file --> settings --> editor --> file and code templates --> python script -->设计–>完成1.点击file – 选择settings2.editor --> file and code templates3.在目标栏里找到 python script,设计一个自己的模板,我这里随便写了一个#项目名称:#姓 名:半夏清风#开发时间:${DATE} ${TIM
2021-12-08 14:38:15
667
原创 hive sql自动生成id的两种方法随机id和自增id
文章目录1.生成自增id:row number() over(order by)2.随机不重复id: regexp_replace(reflect('java.util.UUID','randomUUID'),'-','')1.生成自增id:row number() over(order by)使用窗口函数来生成自增id是比较常见的手法select * from yc_test1grade_id subject_name max_score1 语文 982 数学 952 政治 875
2021-08-10 00:32:35
11474
原创 hive sql 常见错误:invalid table alias or column difference ‘b‘
invalid table alias or column difference ‘b’f翻译:无效的别名或者列引用 ‘b’我们从这里可以看出应该是我们使用hql的时候错误的引用了别名,这里我们直接查找到与 ‘b’ 相关的字段语句就可以确定问题点,出现这种问题的原因主要是给字段设置别名后做了修改,但是有残余,或者引用其他的sql的时候,忘记去处理场景举例select a b c x.d from text_table这里的
2021-08-06 02:04:42
5585
原创 hive常见错误:cannot insert into target table because column number/type are different ‘table_name‘
cannot insert into target table because column number/type are different ‘table_name’由于字段数量或者字段类型与源表 table_name 不同不能插入到目标表table insclause-0 has 78 columns,but quary has 79 columns目标表有78列数据,但是插入的查询有79列从字面意思很好理解,就是我们使用查询插入的时候,查询的字段数比目标表的字段数要多举例:一张表targ
2021-08-06 01:54:33
10687
2
原创 hive 中 null和 ‘‘的区别
null 和 ‘’ 是两个完全不同的概念null 相当于没有有任何值,指向不同的数据类型或对象 而’'则只是表示没有一个空的字符串.使用上的区别在hql 或者 sql 中 如果一个字段是没有值的,通常就会默认显示null,而 ‘’ 是人们主动设置的① 我们查找表里的null的时候 x(字段名) is null 或者 x is not null② 查找表里的 ‘’ x(字段名) = '' 或者 x <> ''当表示字符串的时候,null 和 ‘’ 呈现出来的效果是一样的,所以
2021-07-27 16:29:26
825
原创 with as复习
什么是with aswith as 公用表表达式如果一段查询的sql涉及多个重复的子查询,可以使用with as 来简化,with as 是一个简单查询的临时结果集(会把查询的表数据放到内存中,供其他查询随时使用),oracle、hive都存在with as的用法,用于将重复的查询结果复用可以在Hive SELECT,INSERT, CREATE TABLE AS SELECT或CREATE VIEW AS SELECT语句中使用一个或多个。例如CREATE TABLE TABLE_A AS
2021-05-16 15:02:59
749
原创 sqoop同步数据字段常见的一些问题及解决办法
文章目录1.字段名称错误2.数据长度超过设定3.字段格式错误1.字段名称错误解决方法: 字段名称发生错误的时候,直接别对字段名,hive表的字段名和rmdb数据库表的字段名是否有写错的地方2.数据长度超过设定实际状况,使用sqoop将数据导入postgresql时报错,显示有字符超过pg表设定的长度,但是并没有显示是那个字段超出解决方法: 查看postgresql里面设定为长度的字符,.使用length函数,定位临时表里面超过字符长度的字段,找出详细的字段详细参考下面的方法https://bl
2021-05-16 14:09:11
1585
转载 hql习题:求每天最大在线人数
题目来自: https://blog.csdn.net/qq_40713537/article/details/114096931题目刷题遇到一个大佬遇到的京东面试题,也做了一下给定一个表event_log,字段有date,timestamp,event_name(只有login、logout两种),user_id。用hql求每天同时最大在线人数date_time time_stamp userid event_name2021-02-23 1614211111 a
2021-04-23 21:52:23
425
原创 hive 函数:取整和绝对值
文章目录1.取整函数2.绝对值1.取整函数 1.round 四舍五入 2.ceil 向上取整 3.floor 向下取整1.round 四舍五入:select round(9.4) as num;--输出结果num9.0select round(9.5) as num;--输出结果:num10.02.ceil向上取余select ceil(9.4) as num;--输出结果num103.floor向下取余select floor(9.5) as n
2021-04-22 00:17:22
12736
1
原创 如何用hql实现 一个按天分区的指标表,当昨天该表里某一个指标全为空,该指标将单独使用前天的数据,如果昨天该表某指标有一条不为空,那该指标还是使用昨天的数据
思路:需要统计昨天的某一个指标是否为空,为空则取前天的数据,有一条不为空取昨天的数据。例如 表x 有指标 aa bb cc dd ff gg ee select case when aa.flag > 0 then p.aa else s.aa end as aa ,case when bb.flag > 0 then p.bb else s.bb end as bb ,case when cc.flag > 0 then p.cc else s.cc
2021-04-13 20:51:15
170
原创 sqoop导入postgresql报字符长度超过设定的20
使用sqoop将数据导入postgresql时报错,显示有字符超过pg表设定的20长度,但是并没有显示是那个字段超出。原因分析可能存在字符转化的时候,超出了原有的长度。解决方案1.查看pg库那些字段设置长度为202.使用length函数,定位临时表里面超过20字符的字段select * from 临时表 where length(长度设定为20的字段名)>203.定位到相应字段后,我们再去查看是我们原表在转化时存在存在错误,还是源表里面就存在相应的问题。4.比如笔者这边,时间的字符串与t
2021-04-13 20:30:05
939
原创 用shell写一些简单的触发程序
文章目录1.只在特定的时间执行脚本,其他时间脚本直接结束,并返回成功2.输入不同的参数,脚本可以反馈不同的功能3.根据表是否存在触发脚本运行,返回成功,但是不要报错使用循环函数,做一个关于时间的迭代1.只在特定的时间执行脚本,其他时间脚本直接结束,并返回成功案例一:每天8:00~12:00不执行脚本,其他时间正常执行脚本#获取当前时间now_time=`date +'%Y%m%d%H%M%S'`#上午八点start_time=`${now_time:0:8}080000`#中午十二点end_
2021-04-09 00:32:35
457
原创 使用shell来获取调度系统里的提供的配置文件参数
使用shell来获取调度系统里的提供的参数例如使用scheduler 我们通常是将配置文件和脚本一起打包到一个压缩文档里面cat name.cfgusername=adcpassword=123思路:scheduler是可以设置给定参数的,这里我们可以把配置文件的名字做为参数传递给脚本因此这里我们需要设置一个变量来获取配置文件参数,并且使用shell来解析配置文件 #!/bin/bash #设定参数接受函数,这里假设第二个参数为设置在scheduler上的配置文件参数名 config=$2
2021-04-07 22:10:22
482
原创 hql练习题不定期更新
hql练习题文章目录hql练习题习题一: 展示合规产品的开始时间和结束时间习题2习题一: 展示合规产品的开始时间和结束时间表一产品 合规 日期1 1 202012011 1 202012021 1 202012031 0 202012041 0 202012051 1 202012061 1 20201207表二产品 合规的产品 开始时间 结束时间1 1 20201201 202012031 1 20201206 20201
2021-03-16 01:23:53
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人