Свинья меняет порядок сгруппированных кортежей

Я запускаю сценарий свиньи, который сглаживает сумку, фильтрует ее и группирует вместе, чтобы я мог передать ее в UDF. Проблема в том, что последние даты [до последнего значения] находятся в порядке DESC, когда они мне нужны в порядке ASC

EX:

((RRRRRRR#,T2,19840101011),
{
 (RRRRRRR#,T2,19840101011,3.0,4.25,01-01-2014,31-03-2014,01-03-2014,20140101197),
 (RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-02-2014,20140101197),
 (RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-01-2014,20140101197)
}) //^ REVERSED ORDER

Что мне нужно:

((RRRRRRR#,T2,19840101011),
{
 (RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-01-2014,20140101197),
 (RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-02-2014,20140101197),
 (RRRRRRR#,T2,19840101011,3.0,4.25,01-01-2014,31-03-2014,01-03-2014,20140101197)
}) //^ NEED THIS ORDER

Есть ли способ заказать кортежи в сумке? Если нет, как я могу запретить сортировку команды GROUP таким образом?

1 ответ

Сумки по определению являются неупорядоченными. Поэтому вы не можете гарантировать, что любые преобразования, которые вы сделаете, сохранят порядок. Однако, если на определенном этапе вам нужно гарантировать заказ, вы можете использовать ORDER BY внутри вложенного FOREACH:

b = FOREACH a {
 field2_ord = ORDER field2 BY date;
 GENERATE
 field1,
 field2_ord;
 };

licensed under cc by-sa 3.0 with attribution.