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 05 MySQL
redis实现共同好友的思路详解
May 26 Redis
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
MySQL创建定时任务
Jan 22 MySQL
高并发下Redis如何保持数据一致性(避免读后写)
Mar 18 Redis
sql server偶发出现死锁的解决方法
Apr 10 SQL Server
Windows 64位 安装 mysql 8.0.28 图文教程
Apr 19 MySQL
NoSQL优缺点与MongoDB数据库简介
Jun 05 MongoDB
mysql中关键词exists的用法实例详解
Jun 10 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL 原理与优化之Update 优化
Aug 14 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中请使用isinstance()判断变量类型
2014/08/25 Python
python实现计算倒数的方法
2015/07/11 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
宝信软件JAVA工程师面试经历
2012/08/19 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
生物化工专业个人自荐信
2013/09/26 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
关于学习的决心书
2015/02/05 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python