全量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的, 这也太初级了,这谁不会啊
其实这个思路很有思考的,这只是个简单的栗子,是一种解决问题和简化问题的思路
比如这个栗子我们可以想到这个思路,那么我们是不是可以把每天的都分组开,或者我们需要计算天任务的一周平均任务执行的时间,那么如果一天内有很多个任务的话,我们是不是可以通过合并把两个分开。
再或者我们要开窗,开窗是不是也可以把两个字段合并,在全量表中计算出每一天的任务信息。



