Свинья - конвертировать строки в несколько столбцов
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")