栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

全量hive表中对于天级别任务的信息除了使用where还怎么提取然后连接到其他表上

全量hive表中对于天级别任务的信息除了使用where还怎么提取然后连接到其他表上

全量hive表中对于天级别任务的信息除了使用where还怎么提取然后连接到其他表上

内容目录

全量hive表中对于天级别任务的信息除了使用where还怎么提取然后连接到其他表上

一、需求说明二、思路讲解三、测试一下四、需求升级

一、需求说明

对于需求猛地一听有些云里雾里,其实是什么呢?

对于一个天级别的项目,每天都会执行一次,用的是同一个项目id,但是会产生不同的history_id,如果我想找到这一个项目今天所有的数据并且关联到其他的表中怎么办,如果直接将项目id作为关联键,又不能实现想要的结果,因为有很多的项目id在表中,同理另一张要join的表里也有许多多项目id存在。

类似于:

item_id		date				item_id		date					
123			20220314			123			20220314
123 		20220315			123			20220315
123			20220316			123			20220316

现在要把某一天的数据连接在一起,不使用where date = '20220314’能实现吗?

二、思路讲解

这个使用where语句当然可以实现我们要的需求,但是对于在全量表中,我们不只是想要得到某一天的数据,我们想得到所有天的数据,而且把每天的数据还要分开,同时还要按照item连接

那么是不是可以在join的时候把连接条件当作两个呢

select i1.item_id
from item1 i1
join item2 i2
on i1.item_id,i1.date=i2.item_id,i2.date;
三、测试一下

准备数据,两张表的数据如下

-- 表1
datetime	item_id		project_id			
20220314	123			321
20220315	123			321
20220316	123			321

-- 表2
datetime	project_id	job_id			
20220314	321			456
20220315	321			457
20220316	321			458

编写代码

select i1.datetime
  ,i1.item_id
  ,i2.project_id
  ,i2.job_id
from item1 i1
join item2 i2
on i1.datetime=i2.datetime
and i1.project_id=i2.project_id


注意:在很多地方字段连接使用的时候是 datetime,project这样用逗号隔开,比如分组,排序,但是这里join是不可以的

四、需求升级

上面这个需求你可能jio的, 这也太初级了,这谁不会啊

其实这个思路很有思考的,这只是个简单的栗子,是一种解决问题和简化问题的思路

比如这个栗子我们可以想到这个思路,那么我们是不是可以把每天的都分组开,或者我们需要计算天任务的一周平均任务执行的时间,那么如果一天内有很多个任务的话,我们是不是可以通过合并把两个分开。

再或者我们要开窗,开窗是不是也可以把两个字段合并,在全量表中计算出每一天的任务信息。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号