Свинья: удалить кортежи во внутренней сумке - PullRequest
0 голосов
/ 10 января 2019

Вот как выглядят данные:

A: {id: int, data: {ARRAY_ELEM:(score:float, flag:boolean)}}
12, {(1.35, True), (2.46, False)}
13, {(0.98, False)}
14, {(0.23, True), (0.95, True)}

Я хочу удалить все кортежи, помеченные как False, без сглаживания данных. Ожидаемый результат:

12, {(1.35, True)}
13, {}
14, {(0.23, True), (0.95, True)}

Есть ли способ сделать это в Pig Latin? Спасибо !!

1 Ответ

0 голосов
/ 16 января 2019

Попробуйте вложенный foreach.

A = LOAD 'input.txt' AS (id: int, data:bag{(score:float, flag:boolean)});
B = FOREACH A {
    filtered_data = FILTER data by flag == true;
    GENERATE id, filtered_data;
}
store B into '$output';

Обратите внимание, что в вашем входном файле не должно быть пробелов для логических значений. (Значение "{(1.35, [пробел] True), (2.46, [пробел] False)}" должно быть "{(1.35, True), (2.46, False)}" без пробелов после запятой. В противном случае вы нужно будет загрузить их как chararray.

...