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 ...
随机推荐
- BIOS安全设置
1.开机按F2进入BIOS 2.进入 Security 界面 3.Set user password 用户密码 开机密码 设置为123456 4.Set supervisor password 进BI ...
- 各大中间件底层技术-分布式一致性协议 Raft 详解
前言 正式介绍 Raft 协议之前,我们先来举个职场产研团队的一个例子
- Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序
前言 Orleans是一个跨平台的框架,用于搭建可扩展的分布式应用程序 第一次接触Orleans还是两年前做游戏服务器的时候,用SignalR+Orleans的组合,写起代码来不要太爽. 即将进入20 ...
- LNMP-Nginx配置SSL
SLL工作流程: 浏览器发送一个https的请求给服务器: 服务器要有一套数字证书,可以自己制作(后面的操作就是阿铭自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以 ...
- windows系统下sublime text3开发工具前端配置
1.打开https://www.sublimetext.com/3下载最新版Sublime Text 3安装. 2.打开packagecontrol安装方法按提示安装packagecontrol,或者 ...
- 网络编程基础之socket套接字编程实现同一IP下的信息传输
鲁照山 1.网络协议的5层模型,每层内容的整理 2.画图描述三次握手四次挥手,和C端S端的状态 3.写一个客户端,实现给服务端发送hello world 字符串, 写一个服务端,将客户端发送的数据变成 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS
除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux Distribution(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供 ...
- B站上传字幕问题解决
博客:blog.shinelee.me | 博客园 | CSDN B站上传字幕时,如果srt文件中出现如下空行,则会报错,仅上传了空行前的部分 于是写了个python脚本,如下: import pys ...
- 微服务分布式 spring cloud springboot 框架源码 activiti工作流 前后分离
1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...
- Android开发模版代码(4)——状态栏设置
下面的代码是基于开源项目SystemBarTint,我们需要添加其依赖 compile 'com.readystatesoftware.systembartint:systembartint:1.0. ...