4

3 つのテーブルを含む外部結合を実行したいと考えています。私はこれで試しました:

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

group_event のすべての行が、他の 2 つのリレーションの 1 つまたはどちらにも一致しない場合でも、出力に表示されるようにします。

上記のコマンドは機能しません。明らかに、動作するはずがないため (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;

単一のコマンドでこれを行うためのアイデアはありますか? (さらに多くのテーブルに参加している場合に便利です)

4

1 に答える 1

1

ある時点で、ドキュメントを信頼する必要があると思います。単一のコマンドで複数の外部結合を試みないでください。

なんで?次の行はどのように機能しますか?

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

LEFT OUTER両方のテーブルで機能していますか、それとも最初のテーブルだけですか? 前者の場合、LEFT OUTERbetweenbcで一致しないすべてのレコードを削除する必要がありbますか? またはでa?探せば探すほど意味不明じゃない?

あなたがしたいのは、とJOINの関係aであり、次にとの関係です。考えてみれば、中間状態だからといって、1つのコマンド内で行うのは不自然です。bababcab

于 2013-03-01T16:09:33.197 に答える