あなたがしたいことは、両方のテーブルをロードしてからフィルター操作を実行することだと思います。
table1
内容を含むというファイルがある場合
adv1,app1,adg1,camp1
adv2,app3,adg2,camp2
table2
およびコンテンツを含むファイル
adv1,app2,adg2,camp1
adv3,app1,adg3,camp3
adv1,app1,adg4,camp2
次に、次のことができます。
T = load '{/path/to/table1,/path/to/table2}' using PigStorage(',')
as (adv:chararray, app:chararray, adg:chararray, camp:chararray);
result = filter T by adv == 'adv1';
> dump result
(adv1,app2,adg2,camp1)
(adv1,app1,adg4,camp2)
(adv1,app1,adg1,camp1)
または、ファイルからロードしていない 2 つのリレーションがある場合は、unionを使用してそれらを結合し、フィルタリングすることができます。
> dump T1
(adv1,app1,adg1,camp1)
(adv2,app3,adg2,camp2)
> dump T2
(adv1,app2,adg2,camp1)
(adv3,app1,adg3,camp3)
(adv1,app1,adg4,camp2)
T = union T1, T2;
result = filter T by adv == 'adv1';
さらに、adv1 だけでなく、考えられるすべてのキーに基づいてグループ化しようとしている場合は、最後の行のフィルターの代わりにグループ化を行うことができます。
result = group T by adv;
> dump result
(adv1,{(adv1,app1,adg1,camp1),(adv1,app2,adg2,camp1),(adv1,app1,adg4,camp2)})
(adv2,{(adv2,app3,adg2,camp2)})
(adv3,{(adv3,app1,adg3,camp3)})