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 函数调用优化
Apr 07 MySQL
解决redis sentinel 频繁主备切换的问题
Apr 12 Redis
MySQL安装后默认自带数据库的作用详解
Apr 27 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
浅谈Redis的几个过期策略
May 27 Redis
ORACLE查看当前账号的相关信息
Jun 18 Oracle
redis cluster支持pipeline的实现思路
Jun 23 Redis
oracle连接ODBC sqlserver数据源的详细步骤
Jul 25 Oracle
centos8安装MongoDB的详细过程
Oct 24 MongoDB
MySQL中一条update语句是如何执行的
Mar 16 MySQL
Redis安装使用RedisJSON模块的方法
Mar 23 Redis
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
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
PHP统一页面编码避免乱码问题
2015/04/09 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
详解Vue中过度动画效果应用
2017/05/25 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
three.js 入门案例详解
2018/01/23 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
记录Django开发心得
2014/07/16 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
就业推荐自我鉴定
2013/10/06 职场文书
大学生学年个人总结
2015/02/15 职场文书
试用期辞职信范文
2015/03/02 职场文书
办公室岗位职责范本
2015/04/11 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
2015入党自传书范文
2015/06/26 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
导游词之介休绵山
2019/12/31 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python
SQL Server删除表中的重复数据
2022/05/25 SQL Server