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

数据库 相关文章推荐
浅谈Redis存储数据类型及存取值方法
May 08 Redis
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
Oracle11g R2 安装教程完整版
Jun 04 Oracle
一篇文章带你深入了解Mysql触发器
Aug 02 MySQL
RPM包方式安装Oracle21c的方法详解
Aug 23 Oracle
redis中lua脚本使用教程
Nov 01 Redis
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
MySQL批量更新不同表中的数据
May 11 MySQL
mysql 排序失效
May 20 MySQL
SQL Server2019安装的详细步骤实战记录(亲测可用)
Jun 10 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
香妃
2021/03/03 冲泡冲煮
一个程序下载的管理程序(二)
2006/10/09 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
JsRender for object语法简介
2014/10/31 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
Python文本文件的合并操作方法代码实例
2020/03/31 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
浅谈django channels 路由误导
2020/05/28 Python
Python 发送邮件方法总结
2020/08/10 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
幼儿园庆六一游园活动方案
2014/01/29 职场文书
干部现实表现材料
2014/02/13 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
人代会简报
2015/07/21 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python