gpt4 book ai didi

hadoop - Hive:连接两个具有不同键的表

转载 作者:可可西里 更新时间:2023-11-01 16:33:59 26 4
gpt4 key购买 nike

我有如下两个表格。基本上我想加入他们两个并期待如下结果。

表 2 的前 3 行没有任何事件 ID 只是空的。

所有字段均以制表符分隔。根据表 2,类别“33”具有三个描述。

我们需要使用“事件 ID”来获取“33”类别的结果,因为它有 3 个值。

谁能告诉我如何实现这个输出?

表:1

Empid 类别 ActivityID

44126 33 火车

44127 10 个 UFL

44128 12 个话题

44129 33 未分配

44130 15 微软

44131 33 个好处

44132 43 个好处

表 2:

类别 ActivityID Categdesc

10 计费

12 计费

15 不可计费

33 TRAIN培训

33 未分配的替补席

33 好处 好处

43个好处

预期输出:

44126 33 训练

44127 10 计费

44128 12 计费

44129 33 板凳

44130 15 不可计费

44131 33个好处

44132 43个好处

最佳答案

做这个 Hive 并不难,因为有很多限制。这就是我解决问题的方法,但可能还有更好的方法。

我将您的表格命名如下。表 1 = EmpActivityTable2 = ActivityMas

挑战来自表 2 中的空字段。我创建了一个 View 并使用 UNION 合并来自两个不同查询的结果。

Create view actView AS Select * from ActivityMas Where Activityid ='';

SELECT * From (
Select EmpActivity.EmpId, EmpActivity.Category, ActivityMas.categdesc
from EmpActivity JOIN ActivityMas
ON EmpActivity.Category = ActivityMas.Category
AND EmpActivity.ActivityId = ActivityMas.ActivityId
UNION ALL
Select EmpActivity.EmpId, EmpActivity.Category, ActView.categdesc from EmpActivity
JOIN ActView ON EmpActivity.Category = ActView.Category
)

您必须使用顶级 SELECT 子句,因为顶级语句不直接支持 UNION ALL。这将运行总共 3 个 MR 作业。下面是我得到的结果。

44127   10      billable
44128 12 billable
44130 15 Non-billable
44132 43 Benefits
44131 33 Benefits
44126 33 Training
44129 33 Bench

关于hadoop - Hive:连接两个具有不同键的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15702815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com