Hive Full Join多个表与Union All多个表
一.引言
假设有如下三张表,里面分别记录了三类不用用户的购买记录,现在想将下属记录合并为 => | 用户 | 果蔬购买量 | 饮品购买量 | 零食购买量 | ,没有购买则为 Null:
Table A:用户在超市近一个月购买果蔬的记录
Table B:用户在超市近一个月购买饮品的记录
Table C:用户在超市近一个月购买零食的记录
先建一个表供我们插入数据
hive -e "
create table if not exists user_act_of_buying (user string,fruits string,drinks string,snacks string)PARTITIONED BY(dt string)row format delimited fields terminated by '\t'
"
二.Full Join(适合两个表)
遇到上述场景的第一反应就是使用FullJoin,以用户名为聚合字段进行联合,这里采用套娃的方式,将Table A 和 Table B结合 再将结合的表与Table C结合得到最终结果,因为Hive没办法使用连等号: a.user = b.user = c.user,所以只能通过嵌套的方式。
hive -e "
select tmp.*,c.* from
(select user,fruit,drink from(select user,fruits from tableA where dt=$dt) aFULL OUTER JOIN(select user,drinks from tableB where dt=$dt) bon a.user = b.user
) tmp
FULL OUTER JOIN
(select user,snacks from tableC where dt=$dt) c
on tmp.user = c.user;
"
三.Union All(推荐
Hive Full Join多个表与Union All多个表相关推荐
- 5.4广义表的定义5.5广义表的存储结构
广义表是线性表的推广. 广义表一般记作LS=(α1,α2,...,αn) n是它的长度αi可以是单个元素也可以说广义表,分别称为广义表LS的原子和子表. 当广义表LS非空时,称第一个元素α1为LS的表 ...
- 5、HIVE DML操作、load数据、update、Delete、Merge、where语句、基于分区的查询、HAVING子句、LIMIT子句、Group By语法、Hive 的Join操作等
目录: 4.2.1 Load文件数据到表中 4.2.2查询的数据插入到表中 4.2.3将Hive查询的结果存到本地Linux的文件系统目录中 4.2.4通过SQL语句的方式插入数据 4.2.5 UPD ...
- Hive的Join操作
文章目录 简介 1.LEFT JOIN 2.INNER JOIN 3.RIGHT JOIN 4.FULL JOIN 5.CROSS JOIN 6.JOIN ON和WHERE条件区别 7.其他常用SQL ...
- mysql 多表并列查询_MySQL-18(多表查询INNER/LEFT/RIGHT JOIN)
# 1. 多表联合查询 基本用法:查询需要显示的数据来自多张表 /* 两个关联的table查询 */ SELECT * FROM table_name1 ,table_name2: ...
- Hive中JOIN操作
1. 只支持相等JOIN. 2. 多表连接当使用不同的列进行JOIN时,会产生多个MR作业. 3. 最后的表的数据是从流中读取,而前面的会在内存中缓存,因此最好把最大的表放在最后. SELECT /* ...
- Hive中JOIN的使用入门
Hive中join的用法 Hive中Join的通常使用有以下几种: inner join 等值连接 left join right join full join left semi join cr ...
- Hive中Join的 MR 底层原理
Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join) 一. Hive Common Join 如果不指定MapJoin或者不符合 ...
- hive中判断A表时间字段是否在B表的两个时间字段中及求订单中间休息时间
问题:在hive中,A表中有一个时间的字段,类型位string,格式为2018-12-0 13:34:12:在B表中有字段start_time和end_time,类型为string,格式为2018-1 ...
- 六、Hive中的内部表、外部表、分区表和分桶表
文章目录 内部表 外部表 分区表 分桶表 在Hive数据仓库中,重要点就是Hive中的四个表.Hive 中的表分为内部表.外部表.分区表和分桶表. 内部表 默认创建的表都是所谓的内部表,有时也被称为管 ...
最新文章
- getopt 函数2
- rac 火星舱如何备份oracle_Oracle数据库(RAC)巡检报告
- springcloud注册中心eureka
- 无法创建t的通用数组_创建通用数组的问题
- 【APICloud系列|4】APP设计统一图标大小的方法
- 系统架构师学习笔记-系统性能评价
- Mysql排序添加名词_记面试中问到的MySQL的SQL调优问题
- java报表 统一服务器_java报表软件中本地效果与服务器效果不一致问题处理经验分享...
- python手机版做小游戏代码大全-20行python代码的入门级小游戏的详解
- 智能门锁与网关:海康萤石智能门锁的网关分析(二)
- SUMO地图中添加交通流
- vue实现坐标拾取器功能demo
- tar打包命令的用法
- 个人简历英语及计算机能力怎么写,简历个人能力怎么写(简历中个人能力的填写技巧)...
- 成君忆不幸被彭剑锋言中
- 适配器模式(Adapter)
- 集福啦!你想要的“福”这里都有~
- 解决google扩展程序已损坏的问题
- iframe去除边框
- Android:视频播放器dkplayer
热门文章
- 一款跨平台小巧的端口爆破工具
- [网鼎杯 2020 青龙组]boom复现
- PCL估计点云的表面法向量
- Android Studio 配置翻译工具
- 休谟问题---至今无解的难题!
- 能详细讲一下关于 18 世纪哲学家大卫 • 休谟和恐怖悖论吗
- 带搜索框的百度地图html
- ironpython调用c dll_IronPython.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家...
- 盟百照相馆影楼摄影工作室选片系统
- Kaggle实战:Store Sales - Time Series Forecasting
广义表是线性表的推广. 广义表一般记作LS=(α1,α2,...,αn) n是它的长度αi可以是单个元素也可以说广义表,分别称为广义表LS的原子和子表. 当广义表LS非空时,称第一个元素α1为LS的表 ...
目录: 4.2.1 Load文件数据到表中 4.2.2查询的数据插入到表中 4.2.3将Hive查询的结果存到本地Linux的文件系统目录中 4.2.4通过SQL语句的方式插入数据 4.2.5 UPD ...
文章目录 简介 1.LEFT JOIN 2.INNER JOIN 3.RIGHT JOIN 4.FULL JOIN 5.CROSS JOIN 6.JOIN ON和WHERE条件区别 7.其他常用SQL ...
# 1. 多表联合查询 基本用法:查询需要显示的数据来自多张表 /* 两个关联的table查询 */ SELECT * FROM table_name1 ,table_name2: ...
1. 只支持相等JOIN. 2. 多表连接当使用不同的列进行JOIN时,会产生多个MR作业. 3. 最后的表的数据是从流中读取,而前面的会在内存中缓存,因此最好把最大的表放在最后. SELECT /* ...
Hive中join的用法 Hive中Join的通常使用有以下几种: inner join 等值连接 left join right join full join left semi join cr ...
Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join) 一. Hive Common Join 如果不指定MapJoin或者不符合 ...
问题:在hive中,A表中有一个时间的字段,类型位string,格式为2018-12-0 13:34:12:在B表中有字段start_time和end_time,类型为string,格式为2018-1 ...
文章目录 内部表 外部表 分区表 分桶表 在Hive数据仓库中,重要点就是Hive中的四个表.Hive 中的表分为内部表.外部表.分区表和分桶表. 内部表 默认创建的表都是所谓的内部表,有时也被称为管 ...