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

数据库 相关文章推荐
SQL Server 数据库实验课第五周——常用查询条件
Apr 05 SQL Server
如何使用PostgreSQL进行中文全文检索
May 27 PostgreSQL
详解Redis集群搭建的三种方式
May 31 Redis
Django使用redis配置缓存的方法
Jun 01 Redis
安装配置mysql及Navicat prenium的详细流程
Jun 10 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
MongoDB数据库之添删改查
Apr 26 MongoDB
mysql5.5中文乱码问题解决的有用方法
May 30 MySQL
Redis实现分布式锁的五种方法详解
Jun 14 Redis
数据设计之权限的实现
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自动注册登录验证机制实现代码
2011/12/20 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
windows下python安装pip图文教程
2018/05/25 Python
python求质数的3种方法
2018/09/28 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
同学聚会欢迎辞
2014/01/14 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
服务行业口号
2014/06/11 职场文书
学生保证书
2015/01/16 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
利用python做数据拟合详情
2021/11/17 Python