以下のようなデータを含む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でこれを解決するための良いアプローチについて誰かが私を正しい方向に向けることができますか?
アイデアを事前に感謝します、大いに感謝します!ダーム