Hive语法中with as的使用

一、with as是什么?

如果有一个需求,或者一堆需求,而这一堆需求中频繁的都要使用一个数据集,但是这个数据集在原始数据集中没有,可以通过一些操作在原始数据集中得到,那么该怎么办?

这个时候最基础的想法,写一个程序,把频繁使用到的中间数据得到,然后从中间数据中进行处理分析,这个思维方式其实就是with as语法的使用逻辑。

如果对于一个逻辑的处理,大量的需求都使用到了一个中间数据,我们就可以使用with as将中间数据先计算存储下来,以后的操作如果用到这个中间数据,就避免了重复的计算,这个思维也有点类似于数仓分层的一个小特点,简化不必要的重复计算。

这个中间数据又叫做视图。

二、with as怎么用?

那么with as怎么使用?

语法:

with tmp_tn1 as (
	select ... from .... where .... group ... ... ...
),
tmp_tn2 as (
	select ... from ... where ... group ... ...
),
tmp_tn3 as ()

一个with as 可以包含多个视图,中间用逗号隔开

视图存储了,怎么使用

with tmp_tn1 as (
	select ... from .... where .... group ... ... ...
),
tmp_tn2 as (
	select ... from ... where ... group ... ...
)

select * from tmp_tn1,tmp_tn2;

注意:视图建立和视图使用要写在一个with as中,而且在最后的with as视图中不用使用逗号

三、with as测试

比如有一个score的表,里面有三个字段名字、学科、成绩

现在使用with as,分别建立名字为孙悟空的名字,以及名字为孙悟空的成绩

说明:这里只是用于举例with as的使用,真是生产环境中大概率不会这么写

  with nam as (
    select name,subject
    from score
    where name='孙悟空'
  ),
  sco as (
    select name,score
    from score
    where name='孙悟空'
  )

  select * from nam,sco

在这里插入图片描述

四、with as总结

  1. with as类似于一个视图/临时表,我们可以将频繁使用的sql存储下来
  2. 视图的使用也要在with as中
  3. with as可以看作是一个一次性或者封闭型的函数,只能在with as中使用,所以如果有多sql使用的时候,要写在一个with as中
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值