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 kill不掉线程的原因
May 07 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
MySQL中出现乱码问题的终极解决宝典
May 26 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
安装配置mysql及Navicat prenium的详细流程
Jun 10 MySQL
详解Oracle数据库中自带的所有表结构(sql代码)
Nov 20 Oracle
Oracle 触发器trigger使用案例
Feb 24 Oracle
Redis实现一个账号只能登录一个设备
Apr 19 Redis
Oracle使用别名的好处
Apr 19 Oracle
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
关于mysql中string和number的转换问题
Jun 14 MySQL
关于MySQL中explain工具的使用
May 08 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
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
微信小程序实现购物车小功能
2020/12/30 Javascript
介绍Python中内置的itertools模块
2015/04/29 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
python里 super类的工作原理详解
2019/06/19 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
干部个人考察材料
2014/12/24 职场文书