0

我正在尝试对具有相同 ID 的多行进行分组,然后检查组中的每个元组是否包含两个值,例如:

(10461 , 55 )
(10435 , 17 )
(10435 , 11 )
(10435 , 72 )
(10437 , 11 )
(10830 , 72 )

在我通过以下方式分组后:groupedData = group dataPoints by data_id;

我得到:

(10461 ,{(10461 , 55)})


(10435 ,{(10435 , 17),(10435 , 11),(10435 , 72)})

我想过滤并获取10435if 它包含17and的值11

4

1 回答 1

0

您可以使用嵌套FOREACH过滤袋,然后检查空袋。请注意,我不确定您使用数字(55、17、11 等)将字段称为什么,所以这value在下面的代码中 - 根据需要替换!

filteredBags = FOREACH groupedData {
    seventeen = FILTER dataPoints BY value == 17;
    eleven = FILTER dataPoints BY value == 11;
    GENERATE
    group AS data_id,
    seventeen,
    eleven;
}

nonNullBags = FILTER filteredBags BY NOT IsEmpty(seventeen) AND NOT IsEmpty(eleven);

finalIds = FOREACH nonNullBags GENERATE data_id;
于 2021-06-02T18:20:34.473 回答