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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL系列之七 MySQL存储引擎
Jul 02 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
Feb 12 Redis
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
MySQL中一条SQL查询语句是如何执行的
Apr 08 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 MongoDB
分析SQL窗口函数之排名窗口函数
Apr 21 Oracle
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
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php header功能的使用
2013/10/28 PHP
mac下安装nginx和php
2013/11/04 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python接口测试get请求过程详解
2020/02/28 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
校外活动方案
2014/08/28 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
java版 简单三子棋游戏
2022/05/04 Java/Android