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 12 MySQL
MySQL通过binlog恢复数据
May 27 MySQL
带你学习MySQL执行计划
May 31 MySQL
MYSQL 无法识别中文的永久解决方法
Jun 03 MySQL
ORACLE查看当前账号的相关信息
Jun 18 Oracle
使用Oracle跟踪文件的问题详解
Jun 28 Oracle
Mysql数据库按时间点恢复实战记录
Jun 30 MySQL
分布式架构Redis中有哪些数据结构及底层实现原理
Mar 13 Redis
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
SQL Server内存机制浅探
Apr 06 SQL Server
muduo TcpServer模块源码分析
Apr 26 Redis
讲解MySQL增删改操作
May 06 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
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
用 JSON 处理缓存
2007/04/27 Javascript
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
银行青年文明号事迹材料
2014/05/31 职场文书
大跃进口号
2014/06/16 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技