我想做一个涉及3个表的外连接。我试着这样做:
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)
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.拆分的工作方式如下所示:
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;有什么想法可以在一个命令中做到这一点吗?(如果我要加入更多数量的表,这将非常有用)
发布于 2013-03-02 00:09:33
我认为在某种程度上,我们需要信任文档,不要尝试单个命令多个外部连接。
为什么?下面这行代码应该如何工作?
JOIN a BY a1 LEFT OUTER, b BY b1, c BY c1LEFT OUTER是适用于两个表,还是只适用于第一个表?如果是前者,那么b和c之间的LEFT OUTER是否应该删除b中不匹配的所有记录?还是在a中?你越是寻找它,它就越没有意义,不是吗?
您要做的是将带有b的关系a转换为ab,然后使用c将其转换为ab。仔细想想,由于中间状态ab的存在,在单个命令中执行此操作是不自然的。
https://stackoverflow.com/questions/13131759
复制相似问题