- 博客(34)
- 资源 (4)
- 收藏
- 关注
原创 数据仓库中的ETL,到底是什么
“ETL是建立数据仓库最重要的处理过程,是Extract、Transform、Load三个英文单词首字母的简写,中文意为抽取、转换、装载。”数据的ETL过程在日常的开发或交流中,会多次提到了ETL一词,它是Extract、Transform、Load三个英文单词首字母的简写,中文意为抽取、转换、装载。ETL是建立数据仓库最重要的处理过程,也是最体现工作量的环节,一般会占到整个数据仓库项目工作量的一半以上。其中: 抽取:从操作型数据源获取数据。 转...
2021-03-15 16:02:25 6597 1
原创 数据仓库之分析型系
“在计算机领域,分析型系统是一种快速回答多维分析查询的实现方式。它也是更广泛范畴的所谓商业智能的一部分。”什么是分析型系统?在计算机领域,分析型系统是一种快速回答多维分析查询的实现方式。它也是更广泛范畴的商业智能(BI)的一部分(商业智能还包含数据库、报表系统、数据挖掘、数据可视化等研究方向)。分析型系统的典型应用包括销售业务分析报告、市场管理报告、业务过程管理(BPM)、预算和预测、金融分析报告及其类似的应用。分析型系统的数据库操作...
2021-03-13 21:08:03 410
原创 什么是数据仓库
“对于每一种技术,先要理解相关的概念和它之所以出现的原因,这对于我们继续深入学习其技术细节大有裨益。”什么是数据仓库?数据仓库的概念可以追溯到20世纪80年代,当时IBM的研究人员开发出了“商业数据仓库”。本质上,数据仓库试图提供一种从操作型系统到决策支持环境的数据流架构模型。数据仓库概念的提出,是为了解决和这个数据流相关的各种问题,主要是解决多重数据复制带来的高成本问题。在没有数据仓库的时代,需要大量的冗余数据来支撑多个决策支持环境。在大组织里,多个决策支...
2021-03-10 21:52:08 457
原创 什么是数据湖
“对许多企业来说,数据变得越来越重要,数据的重要性在多个方面得到了凸显。事实上,企业正在用核心数据来改善自己的运营。为了利用数据,企业需要能存储海量数据的“仓库”,随着数据类型的不断丰富,一些半结构化、非结构化数据愈发重要,这些仓库不再被称为“数据仓库”,它们被称为“数据湖”。”什么是数据湖?数据湖(Data Lake)是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。数据湖是以其自然格式存储的数据的系统或存储库,通常是对象Blob或文件。数据湖...
2021-02-25 15:21:31 1950
原创 数仓分层架构如何设计?
数仓分层架构如何设计?刚接触数据仓库之前,小白我就有一个疑问,数据仓库为什么分层?难道我一一层不能把所有逻辑都写完吗?大佬口中的ODS,DW到底是什么含义?经过长时间的工作,也有了自己的理解,跟着小白探索数据分层的真谛。为什么要分层?首先,数据仓库为什么分层?对于较复杂的的逻辑处理,分层可以清晰的看出数据结构,每一个分层都有它的作用域,在开发人员使用表时能够方便的定位和理解; 分层利于开发人员快速定位问题,并清除问题的影响范围,可以快速追踪数据血缘; 规范化的分层,开发一些通用的中间层数
2021-01-15 10:11:33 823
原创 hiveSql时间函数
hiveSql 时间跟标准的sql有些差别,主要是时间戳的转换日常用的时间函数有以下几种:unix时间戳转日期函数:from_unixtime语法:from_unixtime(bigint unixtime[,string format])转化unix时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:select from_unixt...
2019-08-30 16:57:41 6560 1
原创 hive中的时间函数
hive中的时间处理函数HiveSql中的时间处理函数与标准的SQL有些差别,其中差别最大的是对标准时间的处理,hive中常见到标准时间(即1970年1月1日到当前时间的秒数),而Oracle中基本没有这类的用法,另外Hive中的时间格式通常为“YYYY-MM-DD”格式的,对于8位的日期函数,转化起来略微麻烦。常见到的时间函数如下unix时间戳转日期函数:from_unixtime语法...
2019-04-28 10:01:39 949
原创 Oracle中的in 和 not in
Oracle中的in和not in在日常的数据统计中,尽量不要用not in 来查询数据,可以考虑使用exist或者left join 来代替。但是如果用到in 和 not in 时,必须要考虑null值的影响,不能简单理解为not in 是in的差集。举例 原数据关联表使用in使用not in由上面查询结果可见,用in函数查询时有两条数据,但是利用not in时候没有得到剩...
2019-04-16 14:56:17 28448
原创 sql “=”优化
sql “=” 优化禁止对“=”左侧字段使用函数、运算,避免在join、group by 中使用函数,这样可以让优化器更好的发挥作用说明:如果在等号左侧进行表达式、函数操作,会导致数据库引擎放弃索引进行全表扫描eg:SELECT * FROM t2 WHERE score/10 = 9SELECT * FROM t2 WHERE SUBSTR(username,1,2) = ‘li’优...
2018-12-20 10:19:20 320
原创 Oracle 中create table as 复制表结构
Oracle 中create table as 复制表结构在日常测试或者数据迁移的过程中,经常使用create table as …复制表结构或者复制表结构和数据,用法如下:复制表结构:create table tab_target as select * from table where 1=0复制表结构保留数据:create table tab_target as select * fr...
2018-12-18 10:00:33 16218 2
原创 Oracle中取某几个数的最大值最小值
Oracle中取某几个数的最大值最小值一直有误区认为Oracle或者说关系型数据库中没有取某些数据中最大值最小值的函数,其实是存在的 分别为: greatest( expr1, expr2, ... expr_n )least( expr1, expr2, ... expr_n )如图:上述两个函数都使用 N 个参数,并分别返回最大值和最小值。 另需注意参数可能具有混合数据类型。具体规则...
2018-12-18 09:45:09 26602 1
原创 Xshell无法连接到虚拟机
1. Type `help’ to learn how to use Xshell prompt当虚拟机异常关机之后,重启,发现xshell连不上虚拟机,此时会报“Type `help’ to learn how to use Xshell prompt.”,如下此时需要重启ssh服务service sshd startservice sshd stopservice sshd res...
2018-11-30 11:01:51 7470 1
原创 Linux基本命令
Linux基本命令1.1帮助命令man command,如 man ls 、man unamecommand -help,如uname -helpinfo command,如info uname1.2基本操作和命令ctrl+R :查找历史使用过的命令(同'↑'键)ctrl+c、ctrl+z:终止或退出当前操作1.3 table键的使用自动补全命令或目录在某个目录下只有一个目录...
2018-11-30 10:37:09 229
原创 VMware Linux虚拟机运行提示“锁定文件失败 虚拟机开启模块snapshot失败”
非正常关闭虚拟机,再次启动虚拟机可能会出现提示:“锁定文件失败 虚拟机开启模块snapshot失败”解决办法:1、找到虚拟机所安装的文件夹2、删除该文件夹下所有后缀为 .lck 的文件3、重启虚拟机即可...
2018-11-12 17:23:46 1840
原创 Oracle 中的over函数
Oracle 中的开窗函数over 函数SQL中有经常跟over()开窗函数搭配的是row_number(),一般用于去重或者根据某些字段分组(partition by)然后再进行排序(order by )得到最终的数据。rank () over() 和 dence_rank() over()根据业务需求,一般就会用到排名函数rank,或者dence_rank这两个函数跟row_numb...
2018-10-25 09:42:31 697
原创 Oracle中case when的用法
Oracle中case when的用法case when 表达式是一个通用条件的表达式,可以在表达式有效的任何位置使用。 用法如下: CASE WHEN condition THEN result [ WHEN condition THEN result ] ... [ ELSE result ] END condition:返回一个布尔结果的表达式。如果结果为...
2018-09-11 22:23:28 192643 4
原创 COALESCE()函数
sql 中的COALESCE()函数对于Oracle数据库,一般经常对空值处理的函数为NVL,而mysql中常用到的是ifnull,这两个函数相似,其实都是由一个函数衍生而来,那就是COALESCE()函数。COALESCE()函数 定义:返回列表中第一个非null表达式的值。如果所有表达式求值为null,则返回null COALESCE()函数有两种用法: 1.COALESCE ( ...
2018-09-11 21:39:12 53896 1
原创 vertica中的分割函数split_part
vertica中的分割函数在数据统计中,经常会遇到将一个字段中以‘,’或者‘|’隔开的字符串分割开,取第一个或者取第二个值,在oracle中经常会用到substr(str,1,instr(str,’,’,1)) 类似于这种形式的写法来提取想要的数据,但是vertica中有一个比较强大的分割函数:split_part 具体用法为:SPLIT_PART ( string , delimiter ...
2018-09-11 21:25:23 5919
原创 数据库中length的用法
数据库中length的用法一直使用length这个函数,但是每个数据库对其定义不同,所以得到的结果也不同。Oracle length : 表示字符串长度 lengthb :表示字符串的字节长度例: MySQL length:返回字符串所占的字节数 char_length:返回字符串的字符数 例: vertica length:返回CHAR和VARCHAR列的字...
2018-07-30 17:11:51 66871
转载 SQL中的cast()函数
一、语法:CAST (expression AS data_type)参数说明:expression:任何有效的SQServer表达式。AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。使用CAST函数进行数据类型转换时,在下列情况下能够被接受:(1)两
2017-12-08 14:49:50 3064
原创 Oracle 中delete truncate 及drop的区别
Oracle 中删除数据有三种方法:delete truncate drop 其中:delete 删除数据表中记录的语句,但是此语句并不能删除表空间,它只能把被删除的数据标记为unused。 用法: delete from 表名 where 条件,此过程可以回滚。 如果要删除全部记录,可以用truncate,它可以释放占用的数据块表空间。 用法:truncate table 表名;此操作不
2017-12-07 17:02:34 374
原创 mysql rownum的实现
MySQL中可以用@rownum代替Oracle中row_number…over…的用法 可以测试Select @rownum:0 表示从开始排序,所以第一个就为1,若括号内为select @rownum = 10 ,则下面会从11开始排序
2017-12-04 16:39:46 1460
转载 NotePad++快捷键总结
文件相关快捷键 动作定义 Ctrl-O 打开文件 Ctrl-N 新建文件 Ctrl-S 保存文件 Ctrl-Alt-S 文件另存为 Ctrl-Shift-S 保存所有打开文件 Ctrl-P 打印 Alt-F4 退出程序 Ctrl-Tab 文件标签跳转,跳至下一个打开文件 Ctrl-Shift-Tab 文件标签跳转,跳至上一个打开文件 Ctrl-W 关
2017-11-08 10:57:43 305
原创 Linux常用指令
工作用涉及到脚本在Linux中运行,所以经常用到几个Linux指令,都是常用的 ls:显示文件或目录(-lht) cd:切换目录 rm:删除 Exit():退出命令行 ctrl_f:向下滚动一屏 Ctrl+b:返回上一屏vim的使用: vi:进入VI处于命令行模式 i:进入插入模式 :q:退出 :q!:强制退出 :wq:保存并退出 Esc:返回命令模式
2017-10-26 15:57:52 270
原创 ORA-28001: 口令已经失效
1、在CMD命令窗口中输入:sqlplus 用户名/密码@数据库本地服务名 as sysdba;(如:sqlplus scott/1234@oracle1 as sysdba;) 2、SELECT username,PROFILE FROM dba_users;(查看用户的proifle是哪个,一般是default :) 3、SELECT * FROM dba_profiles s WHERE
2017-10-19 16:54:21 1838
原创 MySQL 字符串转时间
Mysql 中字符串转时间跟Oracle略不同,函数为 str_to_date 应注意的是里面的大小写 如下: MySQL内置函数,在mysql里面利用str_to_date()把字符串转换为日期。 示例:分隔符一致,年月日要一致select str_to_date(‘2017-10-16 15:30:28’,’%Y-%m-%d %H:%i:%s’);select str_to_date(‘2
2017-10-16 15:50:33 38452 4
原创 Oracle中instr与like
在Oracle中like是经常用到的,但是对于数据比较多的查询使用like这种模糊查询效率会比较低,所以可以尝试用instr代替like进行查询。用法: instr(‘源字符串/列名’,’目标字符串’) >0 相当于 like instr(‘源字符串/列名’,’目标字符串’) = 0 相当于 not like 另外,对于大小写不固定的like也可以用regexp_like
2017-10-13 10:40:42 1043
原创 MySQL下删除重复记录只保留一条数据
对于Oracle来讲,可以用rowid去删除,保留最大或最小,如下:DELETE from tablename WHERE (id) IN ( SELECT id FROM tablename GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM tablename GROUP BY id HAVIN
2017-10-12 19:41:01 312
原创 Oracle中的join函数
在日常统计数据中最常用的有三个连接,分别是left join, right join, inner join,首先首先几个连接的意思 左(外)连接、右(外)连接、内(\等值)连接 其中: left join(左(外)连接):返回左表中的所有记录和右表中关联字段相等的记录 right join(右(外)连接): 返回右表中的所有记录和左表中关联字段相等的记录 inner join (内(\等值
2017-10-12 19:30:02 5797
原创 vertica数据库中copy的用法
利用vertica数据库测试数据时,一定要向库里面插入数据,这时就会用到vertica中的copy函数。 具体语法为: COPY tablname FROM local dat文件(绝对路径) DELIMITER ‘|’ ; 其中DELIMITER 表示分隔符,是以 ‘|’作为分隔去插入数据的。 eg: COPY prov_code FROM local ‘/home/dyh/prov_co
2017-10-12 19:21:51 5313
原创 regexp_like的使用
Oracle中偶遇正则表达式的使用,简直逆天,在数据统计方面,最长用的就是regexp_like与regexp_replace两个了,此外还有regexp_instr,regexp_substr 这些函数跟对应的like,replace函数功能相似,但是可以加入正则表达式 用法: select * from tb_temp t where name like ‘%z%’; s
2017-09-29 11:18:53 61805 1
原创 next_day的使用
用next_day可以返回指定日期之后一周中特定的日期 用法为:next_day(date,char) 其中char可以是1-7或者Monday/Mon-Sunday/使用时发现,用Monday这种用法会出现 周中的日无效这种错误,解决方法如下: alter session set NLS_DATE_LANGUAGE = American; 之后再运行就会出现特定日期。但是在vertica
2017-09-28 09:42:24 5287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人