Hive HQL支持2种查询语句风格


Posted in 数据库 onJune 25, 2022

背景

在平时业务运营分析中经常会提取数据,也就是大家俗称的Sql Boy,表哥表姐,各大公司数据中台现在大部分用的都是基于Hadoop的分布式系统基础架构,用的比较多的有Hive数据仓库工具,数据分析师在数据查询时用的就是HQL,语法与Mysql有所不同,基本每天都会写大量的HQL语句,但你有试过哪些风格的写法呢?哪种风格的查询语句更容易理解呢?可能不同的人有不同的看法,下面展示具体的风格代码样式,看看你喜欢哪种

  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)
  • hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。

风格一

这种风格大家都比较常用,从结果向源头倒着推,直接多层嵌套,一层一层往里面写,业务逻辑复杂的话有可能写很多层,达到几百行之多,目前很多公司在有数仓的支持下,基本嵌套的层数会比较少

select *
from
(
    (select *
    from a_temp
    where xxxx
    group by xxxx) as a
    left join 
    (select *
    from b_temp
    where xxxx) as b 
    on a.id=b.id
) temp
where xxxx
group by xxxx
order by xxxx

风格二

with a as(select *
        from a_temp
        where xxxx 
        group by xxxx),
     b as(select *
        from b_temp
        where xxxx)
select *
from a left join b on a.id=b.id
where xxxx 
group by xxxx
order by xxxx

这种风格是利用 with 语句,从源头向结果正向推,可以把 with 语句理解为建立了一个临时视图/表一样,后面的表引用前面的表,逻辑是正向推进

两种风格的区别

  • 风格一:用的最多,从结果向源头倒着推
  • 风格二:容易理解,从源头向结果正向推

以上就是Hive HQL支持2种查询语句风格的详细内容,更多关于Hive HQL查询语句风格的资料请关注三水点靠木其它相关文章!


Tags in this post...

数据库 相关文章推荐
详解MySQL中的主键与事务
May 27 MySQL
5分钟教你docker安装启动redis全教程(全新方式)
May 29 Redis
Redis Cluster集群动态扩容的实现
Jul 15 Redis
MySQL去除重叠时间求时间差和的实现
Aug 23 MySQL
使用redis实现延迟通知功能(Redis过期键通知)
Sep 04 Redis
Redis的字符串是如何实现的
Oct 24 Redis
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
MySQL中的全表扫描和索引树扫描
May 15 MySQL
SQL Server中的逻辑函数介绍
May 25 SQL Server
PostgreSQL出现死锁该如何解决
May 30 PostgreSQL
Redis批量生成数据的实现
Jun 05 Redis
PostgreSQL逻辑复制解密原理解析
Sep 23 PostgreSQL
Hive日期格式转换方法总结
Jun 25 #数据库
PostgreSQL怎么创建分区表详解
Jun 25 #PostgreSQL
Mysql中的触发器定义及语法介绍
Jun 25 #MySQL
Hive常用日期格式转换语法
Jun 25 #数据库
MySQL数据库配置信息查看与修改方法详解
Jun 25 #MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 #MySQL
Oracle数据库事务的开启与结束详解
Jun 25 #Oracle
You might like
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python中类的初始化特殊方法
2017/12/01 Python
python文件写入write()的操作
2019/05/14 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
可靠的数据流传输TCP
2016/03/15 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
法学专业应届生求职信
2013/10/16 职场文书
内科护士实习自我鉴定
2013/10/17 职场文书
公司培训欢迎词
2014/01/10 职场文书
五年级英语教学反思
2014/01/31 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
自荐信模板大全
2015/03/27 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
css3 文字断裂效果
2022/04/22 HTML / CSS
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS