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查询语句风格的资料请关注我们其它相关文章!

(0)

相关推荐

  • 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是什么

    目录 一.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常用日期格式转换语法

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

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

    目录 背景 风格一 风格二 两种风格的区别 背景 在平时业务运营分析中经常会提取数据,也就是大家俗称的Sql Boy,表哥表姐,各大公司数据中台现在大部分用的都是基于Hadoop的分布式系统基础架构,用的比较多的有Hive数据仓库工具,数据分析师在数据查询时用的就是HQL,语法与Mysql有所不同,基本每天都会写大量的HQL语句,但你有试过哪些风格的写法呢?哪种风格的查询语句更容易理解呢?可能不同的人有不同的看法,下面展示具体的风格代码样式,看看你喜欢哪种 Hadoop是一个由Apache基金会

  • Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍

    先来定义分页语句将要用到的几个参数: int currentPage ; //当前页 int pageRecord ; //每页显示记录数 以之前的ADDRESSBOOK数据表为例(每页显示10条记录): 一.SqlServe下载 分页语句 String sql = "select top "+pageRecord +" * from addressbook where id not in (select top "+(currentPage-)*pageRecor

  • 整理MySql常用查询语句(23种)

    废话不多了,直接贴代码了 一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 SELECT * FROM tb_stu WHERE sname = '小刘' SELECT * FROM tb_stu WHERE sname like '刘%' SELECT * FROM tb_stu WHERE sname like '%程序员' SE

  • MySQL 重写查询语句的三种策略

    在优化存在问题的查询时,我们需要改变方式去获取查询结果--但这并不意味着从 MySQL获取同样的结果集.有些时候我们可以将查询转换为获取相同结果,但更好性能的查询形式.然而,我们也需要考虑重写查询去获取不同的结果,因为这样可以提高开发效率.也可以通过修改应用程序代码来取得相同的效果.本篇文章将介绍如何重写查询的技巧. 复杂查询与分步查询 一个重要的查询设计课题是将复杂查询分解为多个简单查询是否会更好.在传统的数据库设计中强调尽可能地用更少的查询解决大量工作.在过往,这种方式会更好.这是因为以前的

  • MySQL中一条SQL查询语句是如何执行的

    目录 前言 1. 处理连接 1.1 客户端和服务端的通信方式 1.1.1 TCP/IP协议 1.1.2 UNIX域套接字 1.1.3 命名管道和共享内存 1.2 权限验证 1.3 查看MySQL连接 2. 解析与优化 2.1 查询缓存 2.2 解析器 & 预处理器(Parser & Preprocessor) 2.2.1 词法解析 2.2.2 语法分析 2.2.3 预处理器 2.3 查询优化器(Optimizer)与查询执行计划 2.3.1 什么是查询优化器? 2.3.2 优化器究竟做了什

  • sql连接查询语句中on、where筛选的区别总结

    前言 相信对于每位程序员来说,sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言的逻辑表达能力,就能实现所有功能. 但是增删查改并不能代表sql语句的所有, 完整的sql功能会另人望而生畏. 就拿比普通增删查改稍微复杂一个层次的连接查询来说, 盲目使用, 也会出现意料之外的危险结果,导致程序出现莫名其妙的BUG. 在连接查询语法中,另人迷惑首当其冲的就要属on筛选和where筛选的区别了, 在我们编写查询的时候, 筛选条件的放置不管是在on后面还是where

  • Mysql查询语句优化技巧

    索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录. 查询的开销指标: 执行时间 检查的行数 返回的行数 建立索引的几个准则: (1).合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度. (2).索引越多,更新数据的速度越慢. (3).尽量在采用MyIsam作为引擎的时候使用索引(因为My

  • SQL查询语句优化的实用方法总结

    查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率.最近在对项目中的一些sql进行优化,总结整理了一些方法. 1.在表中建立索引,优先考虑where.group by使用到的字段. 2.尽量避免使用select *,返回无用的字段会降低查询效率.如下: SELECT * FROM t 优化方式:使用具体的字段代替*,只返回使用到的字段. 3.尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描.如下: SELEC

  • mysql查询字段类型为json时的两种查询方式

    表结构如下: id varchar(32) info json 数据: id = 1 info = {"age": "18","disname":"小明"} -------------------------------------------- 现在我需要获取info中disanme的值,查询方法有: 1. select t.id,JSON_EXTRACT(t.info,'$.disname') as disname fro

  • Mybatis查询语句结果集的总结大全

    简单查询-resultType 数据准备 字段 注释 SNO 学号 SNAME 学生名字 SSEX 性别 SBIRITHDAY 生日 CLASS 班级 <!--建表语句:--> create table TEST.STUDENT ( SNO varchar(3) not null, SNAME varchar(4) not null, SSEX varchar(2) not null, SBIRTHDAY datetime null, CLASS varchar(5) null ) <!

随机推荐