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...

数据库 相关文章推荐
SQL Server——索引+基于单表的数据插入与简单查询【1】
Apr 05 SQL Server
SQL 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
linux下安装redis图文详细步骤
Dec 04 Redis
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
Nebula Graph解决风控业务实践
Mar 31 MySQL
一文搞懂Redis中String数据类型
Apr 03 Redis
redis复制有可能碰到的问题汇总
Apr 03 Redis
SQL Server使用导出向导功能
Apr 08 SQL Server
mysql序号rownum行号实现方式
Dec 24 MySQL
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应用JSON技巧讲解
2013/02/03 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
设定php简写功能的方法
2019/11/28 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
json的前台操作和后台操作实现代码
2012/01/20 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
js实现前端图片上传即时预览功能
2017/08/02 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
python多线程与多进程及其区别详解
2019/08/08 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
大学生党员个人对照检查材料范文
2014/09/25 职场文书
环保证明
2015/06/23 职场文书
文明上网主题班会
2015/08/14 职场文书