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部分函数解析的更多相关文章

  1. [Hive]HiveSQL解析原理

    Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ...

  2. hive中解析json数组

    -- hive中解析json数组 select t1.status ,substr(ss.col,,) as col ,t3.evcId ,t3.evcLicense ,t3.evcAddress , ...

  3. hive源代码解析之一hive主函数入口

    hive其实做的就是解析一条sql然后形成到mapreduce任务,就是一个代码解释器.hive源代码本身就可以分为ql/metasotre/service/serde 这几块:其中 对于Hive来说 ...

  4. Hive基本命令解析

    1. Hive的分区作用 命令:创建分区 create table t_sz_part(id int, name string) partitioned by (country string) row ...

  5. hive 元数据解析

    在使用Hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具. 要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在 ...

  6. Hive Hadoop 解析 orc 文件

    解析 orc 格式 为 json 格式: ./hive --orcfiledump -d <hdfs-location-of-orc-file> 把解析的 json 写入 到文件 ./hi ...

  7. 如何在 Apache Hive 中解析 Json 数组

    我们都知道,Hive 内部提供了大量的内置函数用于处理各种类型的需求,参见官方文档:Hive Operators and User-Defined Functions (UDFs).我们从这些内置的 ...

  8. hive sql 解析json

    在hive中会有很多数据是用json格式来存储的,而我们用数据的时候又必须要将json格式的数据解析成为正常的数据,今天我们就来聊聊hive中是如何解析json数据的. 下面这张表就是json格式的表 ...

  9. Saiku部分函数解析(八)

    Saiku函数解析 1.   now()  :  获取当前日期 直接使用即可 2. IIF(logic_exp, string, string): IIF判断,logic_exp是逻辑表达式,结果为t ...

随机推荐

  1. git下载问题

    官网下载:打不开,可用git for Windows 下载 地址:https://github.com/git-for-windows/git/releases

  2. Java_编写99乘法表

    public class Work100{ public static void main(String[] args){ // 积 int mu = 0; for(int i=1;i<10;i ...

  3. IDEA 支持scala开发

    IDEA支持scala开发,需要安装scala插件,并且pom.xml也需要添加对应依赖. 1. 安装scala插件 下载地址:https://plugins.jetbrains.com/plugin ...

  4. 《Dotnet9》建站-本站使用的什么主题?

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  5. MongoDB安装与Spring整合

    MongoDB是面向文档的非关系型数据库,数据模型是一种类似于JSON的结构,在数据库中存的是各种各样的JSON.官网下载地址:https://www.mongodb.com/download-cen ...

  6. SQL Server 2012 官方版 / SQL Server 2012下载

    SQL Server是微软的一款专业免费的关系数据库管理工具, 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理服务,SQL Server 数据库引擎为关系型数据和结构化 ...

  7. 二分查询-leetcode

    二分查找-leetcode /** *  * 278. First Bad Version *  * You are a product manager and currently leading a ...

  8. IT兄弟连 HTML5教程 CSS3属性特效 圆角

    传统的圆角生成方案,必须使用多张图片作为背景图案.CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,只需要border-radius属性,支持浏览器IE 9.Opera 10.5.Safari ...

  9. Fibonacci数Python的四种解法

    1: # 计算Fibonacci数: # Naive版本,时间效率O(1.618^n) # 记忆化版本(增加line8.10.13),时间效率O(n) # 注意:当n超过1000,可能超过系统允许的最 ...

  10. DevExpress Applications<3>

    Project Template Project Template Information Template Name Template Description Controls and Compon ...