Hive HQL支持2种查询语句风格

目录
  • 背景
  • 风格一
  • 风格二
  • 两种风格的区别

背景

在平时业务运营分析中经常会提取数据,也就是大家俗称的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 语句理解为建立了一个临时视图/表一样,后面的表引用前面的表,逻辑是正向推进

两种风格的区别

  • 风格一:用的最多,从结果向源头倒着推
  • 风格二:容易理解,从源头向结果正向推

相关参考

Python 利用Pandas把数据直接导入Mysql

Python 基于ssh连接远程Mysql数据库

以上就是Hive HQL支持2种查询语句风格的详细内容,更多关于Hive HQL查询语句风格的资料请关注我们其它相关文章!

时间: 2022-06-22

一文了解Hive是什么

目录 一.Hive介绍 Hive的优缺点 Hive架构 Hive用户接口 Hive元数据的三种存储模式 Hive数据存储 架构原理 Hive文件格式 Hive本质 Hive工作原理 Hive数据类型 一.Hive介绍 hive: 由 Facebook 开源用于解决海量结构化日志的数据统计工具. Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能. Hive的优缺点 优点: 类似于SQL语句,简单学习易上手 避免了去写 MapRedu

PostgreSQL pg_archivecleanup与清理archivelog的操作

pg_archivecleanup 和 pg_rewind 是PG 中两个重要的功能,一个是为了清理过期的 archive log 使用的命令,另一个是你可以理解为物理级别的 wal log的搬运工. 我们先说第一个 pg_archivecleanup 命令,这个命令主要是用于使用了archive log 功能的 postgresql 但在 archive log 堆积如山的情况下,你怎么来根据某些规则,清理这些日志呢? 这里面就要使用 pg_archivecleanup 这个命令了,可以定时的

Hive-SQL查询连续活跃登录用户思路详解

连续活跃登陆的用户指至少连续2天都活跃登录的用户 解决类似场景的问题 创建数据 CREATE TABLE test5active( dt string, user_id string, age int) ROW format delimited fields terminated BY ','; INSERT INTO TABLE test5active VALUES ('2019-02-11','user_1',23),('2019-02-11','user_2',19), ('2019-02

Hive常用日期格式转换语法

目录 获取当前时间 日期格式转换 返回日期中的年,月,日,时,分,秒,当前的周数 计算日期差值 返回当月或当年的第一天 参考汇总 获取当前时间 获取当前时间戳 select unix_timestamp() 把时间戳转为正常的日期 select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') select from_unixtime(unix_timestamp(),'yyyy-MM-dd') 业务中有时存放的是包含毫秒的整数,需要先转

详解oracle 日期格式(总结)

to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,"转换格式" ) 即把给定的日期按照"转换格式"转换. 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月:mon 用简写形式 比如11月或者nov :m

浅析GridView中显示时间日期格式的问题

以下都是GridView基本常用的日期,时间格式 形式 语法 结果 注释 数字 {0:N2} 12.36   数字 {0:N0} 13   货币 {0:c2} $12.36   货币 {0:c4} $12.3656   货币 "¥{0:N2}" ¥12.36   科学计数法 {0:E3} 1.23E+001   百分数 {0:P} 12.25% P and p present the same. 日期 {0:D} 2006年11月25日   日期 {0:d} 2006-11-25  

mysql常用日期时间/数值函数详解(必看)

1.日期时间函数 时间转化秒函数:time_to_sec MySQL> select time_to_sec('01:01:01'); +-------------------------+ | time_to_sec('01:01:01') | +-------------------------+ | 3661 | +-------------------------+ 1 row in set (0.00 sec) 秒转化时间函数:sec_to_time mysql> select se

Java中SimpleDateFormat日期格式转换详解及代码示例

SimpleDateFormat是处理日期格式转换的类. 官方API_1.8关于SimpleDateFormat继承于DateFormate截图: SimpleDateFormat的构造器如下: SimpleDateFormat中的格式定义,常用的用红色框圈出: 中文解释: y : 年 M : 年中的月份 D : 年中的天数 d : 月中的天数 w : 年中的周数 W : 月中的周数 a : 上下/下午 H : 一天中的小时数(0-23) h : 一天中的小时数(0-12) m : 小时中的分钟

php常用日期时间函数实例小结

本文实例讲述了php常用日期时间函数.分享给大家供大家参考,具体如下: 时间戳 时间戳我就不赘述了,手册里有,就是能精确的表示一个时间点.我在做项目的时候经常用时间戳来表示数据,这样比较方便,如果保存为日期时间型的数据,显示的时候可能比较省事,但是如果是获取这个日期的某个年份或月份,就比较麻烦了. <?php echo time();//返回一个以秒为单位的时间戳 :1467968841 echo microtime(true);//返回一个以毫秒为单位的时间戳 :1467968841.4155

PHP常用日期加减计算方法实例小结

本文实例总结了PHP常用日期加减计算方法.分享给大家供大家参考,具体如下: PHP 标准的日期格式 date("Y-m-d H:i:s"); PHP 简单的日期加减计算 <?php date_default_timezone_set('PRC'); //默认时区 echo "今天:",date("Y-m-d",time()),"\n"; echo "今天:",date("Y-m-d"

python中有关时间日期格式转换问题

每次遇到pandas的dataframe某列日期格式问题总会哉坑,下面记录一下常用时间日期函数.... 1.字符串转化为日期 str->date import datetime date_str = '2006-01-03' date_ = datetime.datetime.strptime(date_str,'%Y-&m-%d') 这是单个字符串的转化,其中"%Y-%m-%d"表示日期字符串的格式,若date_str='2006/1/3',则可写为"%Y/%

Python 常用日期处理 -- calendar 与 dateutil 模块的使用

本文紧承上一篇 Python 常用日期处理,因制于篇幅的大小需求才临时分立新篇,这里要简单提到 calendar 和 dateutil 模块的使用,其中 calendar 是 Python 内置的.相比于上一篇而言,此处主旨会更明确一些,只记录三个应用案例,分别是 用 dateutil 灵活的解析 datetime 字符串 给定起始日期后的连续日期 给定起始日期后连续的月末日期 dateutil 灵活的解析 datetime 字符串 使用 Python 内容的 date 或 datetime,

解决json日期格式问题的3种方法

开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下所示: 复制代码 代码如下: //设置服务器响应的结果为纯文本格式            context.Response.ContentType = "text/plain";           //学生对象集合            List<Student> students = new List<St

C#正则表达式判断输入日期格式是否正确

本文将介绍一段实例代码,来讲解利用正则表达式使C#判断输入日期格式是否正确的方法.希望这段代码能对大家有所帮助. 通常我们在用C#编写系统程序或者Web开发时,都会遇到需要验证输入的字符串是否是日期的情况,下面为大家介绍一种非常全面的用正则表达式验证日期的方法: c 正则表达式日期代码一: /// <summary> /// 是否为日期型字符串 /// </summary> /// <param name="StrSource">日期字符串(2008