Hive部分函数解析
Hive部分函数解析
Hive里的exists ,in ,not exists ,not in 相关函数
表数据准备:
1.选择指定数据库 eg: use bg_database1;
2. 创建表
drop table demo0919 ;
create table demo0919(
name string
,age int
,sex int
) row format delimited fields terminated by '\001';
3.插入表数据
insert overwrite table demo0919 values('zs',18,1);
insert into table demo0919 values('ls',18,1);
insert into table demo0919 values('nisa',19,0);
insert into table demo0919 values('rina',22,0);
insert into table demo0919 values('zhaoxi',25,1);
4. 根据原表 demo0919 再创建一张表 demo0919_1,用于比对数据。
create table demo0919_1 as select *from demo0919;
5.查看表数据
select *from demo0919;
函数测试
in:
in的简单使用(ok,支持):
select name,age,sex from demo0919 where age in (18,22);
in 里面嵌套子查询 (error ,不支持)
select name,age,sex from demo0919 where age in (select a.age from demo0919_1 a );
not in :
not in 的简单使用(ok, 支持)
select name,age,sex from demo0919 where age not in (18,22);
not in 里面嵌套子查询 (error ,不支持)
select name,age,sex from demo0919 where age not in (select a.age from demo0919_1 a);
exists:
exists 基本使用(ok)
select name,age,sex from demo0919 where exists (select 1 from demo0919_1 a where a.age=18 and demo0919.name = a.name);
exists子查询里面使用了 外表demo0919中的字段 不等于(> , < , >= , <= , <>) 子查询表中的字段(error 不支持)
select name,age,sex from demo0919 where exists (select 1 from demo0919_1 a where a.age>demo0919.age and demo0919.name = a.name);
处理方案:
根据此段我们可以借助left outer join,left semi join 来实现类似功能 前者允许右表的字段在select或where子句中引用,而后者不允许。
(left semi join :需要注意 使用left semi join时 右侧的表不能被使用,只能在on后面作为条件筛选)
select d.name,d.age,d.sex from demo0919 d left outer join demo0919_1 a on d.name = a.name where a.age>d.age;
exists子查询里面未使用 外表demo0919中的字段 不等于(> , < , >= , <= , <>) 子查询表中的字段(ok 支持)
select name,age,sex from demo0919 where exists (select 1 from demo0919_1 a where a.age>18 and demo0919.name = a.name);
not exists 与 exist雷同。
Hive数据类型转换函数:
daycount string; daycount表示耗时数据信息,原来定义为string类型
cast(daycount AS FLOAT) 将string类型数据转换为FLOAT类型
Hive日期类型转换函数:
unix_timestamp(countdate) :将日期转换为时间戳, countdate为日期字段
from_unixtime(unix_timestamp(countdate),'yyyy-MM-dd HH:mm:ss') :格式化当前时间
Hive的group by :(这里是因为我们在使用group by时用到了带时分秒的日期字段,hive精确到了毫秒级别,mysql中精确到秒,带有日期字段的数据一起dsitinct 或 group by的时候 数据就会有差异)
因为hive保留了 毫秒位数据,故结果数据会比mysql多
例如: 2019-09-19 12:12:12.1 2019-09-19 12:12:12.2
在hive里面 distinct后这是两个不同的日期 2019-09-19 12:12:12.1 2019-09-19 12:12:12.2
在mysql里面 distinct后 这就是相同的日期了 2019-09-19 12:12:12
Hive部分函数解析的更多相关文章
- [Hive]HiveSQL解析原理
Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ...
- hive中解析json数组
-- hive中解析json数组 select t1.status ,substr(ss.col,,) as col ,t3.evcId ,t3.evcLicense ,t3.evcAddress , ...
- hive源代码解析之一hive主函数入口
hive其实做的就是解析一条sql然后形成到mapreduce任务,就是一个代码解释器.hive源代码本身就可以分为ql/metasotre/service/serde 这几块:其中 对于Hive来说 ...
- Hive基本命令解析
1. Hive的分区作用 命令:创建分区 create table t_sz_part(id int, name string) partitioned by (country string) row ...
- hive 元数据解析
在使用Hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具. 要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在 ...
- Hive Hadoop 解析 orc 文件
解析 orc 格式 为 json 格式: ./hive --orcfiledump -d <hdfs-location-of-orc-file> 把解析的 json 写入 到文件 ./hi ...
- 如何在 Apache Hive 中解析 Json 数组
我们都知道,Hive 内部提供了大量的内置函数用于处理各种类型的需求,参见官方文档:Hive Operators and User-Defined Functions (UDFs).我们从这些内置的 ...
- hive sql 解析json
在hive中会有很多数据是用json格式来存储的,而我们用数据的时候又必须要将json格式的数据解析成为正常的数据,今天我们就来聊聊hive中是如何解析json数据的. 下面这张表就是json格式的表 ...
- Saiku部分函数解析(八)
Saiku函数解析 1. now() : 获取当前日期 直接使用即可 2. IIF(logic_exp, string, string): IIF判断,logic_exp是逻辑表达式,结果为t ...
随机推荐
- linux自定义开机欢迎页面图案
1:编辑etc目录下motd文件 佛祖图案 [root@host1 ~]# vim /etc/motd _oo0oo_ 088888880 88" . "88 (| -_- |) ...
- Django模型层—ORM
目录 一.模型层(models) 1-1. 常用的字段类型 1-2. 字段参数 1-3. 自定义char字段 1-4. 外键关系 二.Django中测试脚本的使用 三.单表操作 3-1. 添加记录 3 ...
- 运算符副作用总结与例子(js)
js中运算符副作用总结与例子 js中赋值运算符,递增递减运算符,delete运算符具有副作用,简单地说就是前后表达式的值会相互影响,除此之外其它的js运算符都没有副作用. 但函数表达式和对象创建表达式 ...
- Linux下shell通用脚本启动jar(微服务)
Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...
- TypeScript引入moment.js报错“无法找到moment模块”及解决方法
npm i moment下载moment完成后,在ts文件中引入 import * as moment from "moment"; 结果疯狂报错,未找到moment模块. 一开始 ...
- mySql的case when用法
背景 有点忘了,记录下 写法一 case colume when condition then result when condition then result when condition the ...
- CefSharp禁止弹出新窗体,在同一窗口打开链接,或者在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接
说明:在同一窗口打开链接,只要稍加改造就可以实现,这里实现的是在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接 gi ...
- 如何快速将多个excel表格的所有sheet合并到一个sheet中
1.将需要合并的excel文件放在同一个文件夹下: 2.新建一个excel表格并打开,右键sheet1,查看代码,然后复制下方的代码到代码框里,点击菜单栏中的“运行”–“运行子过程/用户窗体”,等待程 ...
- AI: Web: 2 Vulnhub Walkthrough
靶机下载链接: https://www.vulnhub.com/entry/ai-web-2,357 主机端口扫描: 尝试SQL注入,未发现有注入漏洞,就注册创建于一账户 http://10.10.2 ...
- 综合5项百度大脑AI技术,快速构建智能交通方案
一.整体方案:思路:整合百度AI功能,通过百度AI解决.优化在公交运行过程中遇到的运营.管理.安全等方面的问题.具体如下: 安全方面:通过驾驶员检测+语音合成,对驾驶员状态进行实时检测,跟踪,告警. ...