Свинья - конвертировать строки в несколько столбцов

Можем ли мы преобразовать входные строки в несколько столбцов, оканчивающихся на три.*

образ

1 ответ

Вот одно наивное решение.

Группировка каждые три строки с использованием RANK а также GROUP, а также FILTER по каждому из трех условий.

Мой Свинья Скрипт

A = Load '/path_to_data/data' as (c1 : chararray);
B = RANK A;
C = FOREACH B GENERATE (rank_A+2)/3 as id, c1;

D = FOREACH (GROUP C BY id) {
        ONE = FILTER C BY c1 matches 'One:.*';

        TWO = FILTER C BY c1 matches 'Two:.*';

        THREE = FILTER C BY c1 matches 'Three:.*';

        GENERATE 
            group as id
            , FLATTEN(ONE.c1) as c1_one
            , FLATTEN(TWO.c1) as c1_two
            , FLATTEN(THREE.c1) as c1_three
        ;
    };

DUMP D;

Мой результат

(1,One:"A",Two:"2",Three:"last")
(2,One:"B",Two:"1",Three:"first")
Другие вопросы по тегам