0

以下のようなデータを含むCSVファイルをインポートしています

----------
ID | VALUE
----------
1  |   1
2  |   1
3  |   1
1  |   2
2  |   2
3  |   2
1  |   3
2  |   3
3  |   3

私がやりたいのは、各IDの最大値と最小値を取得することです。出力は次のようになります

--------------
ID | MAX | MIN
--------------
1  |  3  |  1
2  |  3  |  1
3  |  3  |  1

以下のようなコードを使用して、値の列の最大値と最小値を取得できます

MAX_MIN_VALUE = LOAD 'SampleData.csv'  AS (id:chararray, value:int);
MAX_MIN_VALUE_GROUP = GROUP MAX_MIN_VALUE ALL;
WITH_MAX_MIN = FOREACH MAX_MIN_VALUE_GROUP 
       GENERATE
           FLATTEN(MAX_MIN_VALUE.(id)), MAX(MAX_MIN_VALUE.value), MIN(MAX_MIN_VALUE.value);

私が頭を悩ませているのは、各IDの最大値と最小値を取得できるようにデータをフィルタリングする方法です。SQLでは自己結合を行いますが、PIGで同等の方法を考えることはできません。

PIGでこれを解決するための良いアプローチについて誰かが私を正しい方向に向けることができますか?

アイデアを事前に感謝します、大いに感謝します!ダーム

4

1 に答える 1