2012-02-03 10 views
5
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)}) 

Bascially、私は数字でソートしたい:10,9,16とすべての行のトップ2を選択。
どうすればよいですか?

答えて

9

これは、このquestionに似ており、あなたはNested 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; 
+2

あなたはまただけではなく、ORDERとLIMITのTOP()関数を使用することができます。その豚のためのpiggybankの<0.8とのbuildin> = 0.8 – NerdyNick

+0

私は同様の問題があります。 私は出力が{10,5,5} だが実際には{10,5}であると予想しているので、入力は{10,5,5,1,2} ならTOP()でもTOP(2) どうすればこの問題を解決できますか? – sudheer

+1

DESCによるソート順ではありませんか?トップ2はリクエストされているので –

関連する問題