hive中with as用法及注意事项

一、with...as语句说明

wih语句,允许hive定义一个sql片段,供整个sql使用,会将这个片段产生的结果集保存在内存中,后续的sql均可以访问这个结果集,作用与视图或临时表类似。

【注】目前 oracle、sql server、hive等均支持 with as 用法,但 mysql并不支持!

二、注意事项

1、with 语句是一次性的,相当于建立了一张临时虚拟表,但不会被物理创建,用完即销毁

2、每一个with语句,单独成为一个子模块,最后使用基础表将它们串联起来。这里必须要整体作为一条sql查询,即with as语句后不能加分号,不然会报错

3、with as允许跟多个子句,用逗号隔开,最后一个子句与后面的查询语句之间只能用右括号分隔,不能用逗号

sql 复制代码
create table a as
with t1 as (select * from firstTable),
t2 as (select * from secondTable),
t3 as (select * from thirdTable)
select * from t1,t2,t3;

4、with...as语句必须和其他sql一起使用,如果定义了wih子句,但其后没有跟selec查询,则会报错

sql 复制代码
with t1 as (select * from table1)   -- 该语句执行会报错

-- 正确写法:(没有使用 t1没关系,其后有select就行)
with t1 as (select * from table1)
select * from table1

5、前面的with子句定义的查询在后面的with子句中可以使用。但是一个with子句内部不能嵌套with子句

sql 复制代码
with t1 as (select * from table1),
t2 as (select t1.id from t1)
select * from t2

6、with不适合过大的表,会落盘,频繁shuffle ,过大时直接落表更好。

7、with as 是提高了可读性,可若是后面多次利用这个片段,那完整的SQL就会异常庞大,放在大数据Hive中,job数量甚至会翻几倍,这也是一个坑,所以适用情况得看自己权衡。

相关推荐
奇点爆破XC11 小时前
Hadoop大数据生态(Ambari管理)组件服务详解
大数据·hadoop·ambari
isNotNullX11 小时前
企业数据中台建设,ETL工具选错了会踩哪些坑?
数据仓库·etl·原型模式
SelectDB技术团队13 小时前
预约发布会|核心产品力首发,如何构建面向 Agent 时代的企业级数据引擎
数据库·数据仓库·人工智能·数据分析·可观测·apache doris·selectdb
段一凡-华北理工大学14 小时前
工业领域的Hadoop架构学习~系列文章22:Hadoop生态展望 - 面向未来的技术演进
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁
Nefu_lyh14 小时前
【Hive】六、Hive 运算逻辑:数学 / 逻辑 / 条件 / 日期 / 字符串函数
数据仓库·hive·hadoop
ChaITSimpleLove14 小时前
Etl.Net 2.2.0 项目深度分析
数据仓库·.net·etl·大数据处理·数据管道·数据处理引擎
知识分享小能手15 小时前
Hadoop学习教程,从入门到精通, HDFS分布式文件系统 — 完整知识点与案例代码(3)
hadoop·学习·hdfs
陆水A1 天前
【实时数仓·3】Flink多表JOIN状态爆炸——Event Time Temporal JOIN + TTL分层治理
大数据·数据仓库·数据分析·flink·数据库开发·bigdata
段一凡-华北理工大学1 天前
工业领域的Hadoop架构学习~系列文章20:故障诊断与根因分析 - 从表象到本质的智能推理
大数据·人工智能·hadoop·学习·架构·高炉炼铁·工业智能体
Francek Chen1 天前
【大数据处理与分析】MapReduce:05 MapReduce的具体应用
大数据·hadoop·分布式·mapreduce