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 COUNT函数的使用与优化
May 10 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
MySQL中使用or、in与union all在查询命令下的效率对比
May 26 MySQL
MySQL 数据类型选择原则
May 27 MySQL
浅谈MySQL next-key lock 加锁范围
Jun 07 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
redis使用不当导致应用卡死bug的过程解析
Jul 01 Redis
MySQL之select、distinct、limit的使用
Nov 11 MySQL
面试分析分布式架构Redis热点key大Value解决方案
Mar 13 Redis
MySql分区类型及创建分区的方法
Apr 13 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
oracle delete误删除表数据后如何恢复
Jun 28 Oracle
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数组赋值方法
2015/11/07 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python实现的批量下载RFC文档
2015/03/10 Python
从Python的源码浅要剖析Python的内存管理
2015/04/16 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python列表使用实现名字管理系统
2019/01/30 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
员工晚婚的请假条
2014/02/08 职场文书
环保公益广告语
2014/03/13 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
离婚协议书格式范本
2016/03/18 职场文书
python实现简易名片管理系统
2021/04/11 Python
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
详细了解MVC+proxy
2021/07/09 Java/Android