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 11 MySQL
比较几种Redis集群方案
Jun 21 Redis
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
一次Mysql update sql不当引起的生产故障记录
Apr 01 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
Redis 异步机制
May 15 Redis
MySQL生成千万测试数据以及遇到的问题
Aug 05 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
如何选购合适的收音机
2021/03/01 无线电
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
Vue.js中的高级面试题及答案
2020/01/13 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
python psutil库安装教程
2018/03/19 Python
关于python写入文件自动换行的问题
2018/06/23 Python
Python如何实现转换URL详解
2019/07/02 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
厨房领班竞聘演讲稿
2014/04/23 职场文书
小学亲子活动总结
2014/07/01 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
个人工作表现自我评价
2015/03/06 职场文书
复兴之路观后感
2015/06/02 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
Python必备技巧之函数的使用详解
2022/04/04 Python
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers