Свинья заказ по запросу - PullRequest
       34

Свинья заказ по запросу

5 голосов
/ 03 февраля 2012
grunt> dump jn;

(k1,k4,10)
(k1,k5,15)
(k2,k4,9)
(k3,k4,16)

grunt> jn = group jn by $1;
grunt> dump jn;


(k4,{(k1,k4,10),(k2,k4,9),(k3,k4,16)})
(k5,{(k1,k5,15)})

Теперь отсюда я хочу следующий вывод:

(k4,{(k3,k4,16),(k1,k4,10)})
(k5,{(k1,k5,15)})

В сущности, я хочу отсортировать по номерам: 10,9,16 и выбрать 2 верхних для каждой строки.
Как мне это сделать?

1 Ответ

9 голосов
/ 03 февраля 2012

Это похоже на вопрос , и вы можете использовать NESED FOREACH , например:

A = LOAD 'data';
jn = group A by $1;
B = FOREACH jn {
  sorted = ORDER A by $2 ASC;
  lim = LIMIT sorted 2;
  GENERATE lim;
};
DUMP B;
...