假设我有关系A
DUMP A;
(a)
(d)
(g)
现在我想使用A的值来过滤G组:
DUMP G;
(a, {(a,b), (a,c)})
(c, {(c,d), (c,x)})
(d, {(d,b), (d,e)})
......所以结果将是
(a, {(a,b), (a,c)})
(d, {(d,b), (d,e)})
然后我想提取组来生成:
(a,b)
(a,c)
(d,b)
(d,e)
我尝试了以下过滤部分,但它不起作用:
J = JOIN G BY group, A BY a1;
R = FOREACH (FILTER J BY J::group == A::a1)
GENERATE FLATTEN(J.group);
答案 0 :(得分:1)
如果我正确理解你的问题,J
的输出应该已经是你想要的了。默认情况下,JOIN
是内部联接,因此c
中A
未显示J
,因此J
的输出中不会包含(a, {(a,b), (a,c)}, a)
(d, {(d,b), (d,e)}, d)
。如果您转储FLATTEN
,您应该看到:
R = FOREACH J GENERATE FLATTEN(G::FOO) ;
(或者与变量位置相似的东西。)
要FOO
打包,你需要做以下事情:
GROUP
在这种情况下,DESCRIBE G ;
是您在{{1}}上执行的关系的名称。您可以使用{{1}}验证其名称。