首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pig:两个以上关系上的外部联接

Pig:两个以上关系上的外部联接
EN

Stack Overflow用户
提问于 2012-10-30 08:51:22
回答 1查看 3K关注 0票数 4

我想做一个涉及3个表的外连接。我试着这样做:

代码语言:javascript
复制
features = JOIN group_event by group left outer, group_session by group, group_order by group;

我希望group_event的所有行都出现在输出中,即使其他两个关系中的一个或两个都不匹配也是如此。

上述命令不起作用。显然,因为它不应该工作(http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#JOIN+%28outer%29)

代码语言:javascript
复制
Outer joins will only work for two-way joins; to perform a multi-way outer join, you will need to perform multiple two-way outer join statements.

拆分的工作方式如下所示:

代码语言:javascript
复制
features1 = JOIN group_event by group left outer, group_session by group;
features2 = JOIN features1 by group_event::group left outer, group_order by group;

有什么想法可以在一个命令中做到这一点吗?(如果我要加入更多数量的表,这将非常有用)

EN

回答 1

Stack Overflow用户

发布于 2013-03-02 00:09:33

我认为在某种程度上,我们需要信任文档,不要尝试单个命令多个外部连接。

为什么?下面这行代码应该如何工作?

代码语言:javascript
复制
JOIN a BY a1 LEFT OUTER, b BY b1, c BY c1

LEFT OUTER是适用于两个表,还是只适用于第一个表?如果是前者,那么bc之间的LEFT OUTER是否应该删除b中不匹配的所有记录?还是在a中?你越是寻找它,它就越没有意义,不是吗?

您要做的是将带有b的关系a转换为ab,然后使用c将其转换为ab。仔细想想,由于中间状态ab的存在,在单个命令中执行此操作是不自然的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13131759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档