我必须在5个表上使用4个连接条件,其中一个表上有过滤条件。
TableB.ColumnX = 'A' and TableB.ColumnY = 'B'
TableA.ColumnA = TableB.ColumnA and
TableB.ColumnB (left outer) = TableC.ColumnB and
TableB.ColumnB = TableD.ColumnB and
TableD.ColumnB = TableE.ColumnB
这些尝试都是成功的:
(i)过滤为单一陈述 (ii)一个连接条件,每个连接条件为单个语句(表示4个独立的连接语句)
但我希望所有联接组合/合并。
请帮忙解决一些问题。谢谢!
答案 0 :(得分:2)
由于您希望在连接2个不同的表时加入2个不同的B列(在与TableC连接时与A列连接,在与TableC连接时与B列连接),并且由于它也涉及OUTER连接,因此无法实现此目的SINGLE JOIN声明。
在最小语句中实现这一目标的最佳方法如下:
TableB = FILTER TableB BY ColumnX = 'A' AND ColumnY = 'B';
JoinAB = JOIN TableA BY ColumnA, TableB BY ColumnB;
JoinBDE = JOIN TableB BY ColumnB, TableD BY ColumnB, TableE BY ColumnB
JoinABDE = JOIN JoinAB BY TableB::ColumnB, JoinBDE BY TableB::ColumnB;
JoinABCDE = JOIN JoinABDE BY TableB::ColumnB LEFT OUTER, TableC
来自http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#JOIN+%28outer%29的Fyi: "外连接仅适用于双向连接;要执行多向外连接,您需要执行多个双向外连接语句"