pig:2个以上关系的外部连接

7bsow1i6  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(294)

我想做一个包含3个表的外部连接。我试过这个:

features = JOIN group_event by group left outer, group_session by group, group_order by group;

我希望groupu事件的所有行都出现在输出中,即使其他两个关系中的一个或两个都不匹配。
上面的命令不起作用。显然,既然它不应该起作用(http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#join+%28(外部%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;

用一个命令就能做到这一点吗(如果我加入更多的表,会很有用)

bkhjykvo

bkhjykvo1#

我认为在某些时候,我们需要信任文档,不要尝试单命令多外部连接。
为什么?下面的行应该如何工作?

JOIN a BY a1 LEFT OUTER, b BY b1, c BY c1

LEFT OUTER 为两张table工作,还是只为第一张table工作?如果是前者,那么应该是后者 LEFT OUTER 介于 b 以及 c 删除中不匹配的所有记录 b ? 或在 a ? 你越是寻找它,它就越没有意义,不是吗?
你想做的是 JOIN 关系 ab 进入 ab 然后 abc . 仔细想想,由于中间状态的存在,在一个命令内执行此操作是不自然的 ab .

相关问题