FGALTS 6 /RE:04778 RE:データの集計  こんにちは、のとや さん 》 集計を行いたい環境について,OSやCPUクロック,メモリ量 》などを教えてください。 この集計作業を実行する環境として一番可能性が高いマシンは、以下のようなス ペックです。 マシン1 CPU:不明(x86 Family 6 Model 8 Stepping 6) メモリ:256MB HDD:40GB OS :Win98SE あと、以下のようなマシンでも実行するかもしれません。 マシン2 CPU:Celeron 433MHz メモリ:128MB HDD:6GB OS :Win98SE 》 また,実際に集計を行う頻度は,どの程度と推定されますか? 数ヶ月に1度、多くても1ヶ月に1回でしょうか。 とりあえず、マシン1に mawk32 を入れて、できるところまでやってみました。 まず、各時間毎の平均を求めてみました。 ------------------------------------------------------------- "/dev/stderr" print "装置番号","セクション番号","日時","最大値" for (i in snd){ split(i,separate,SUBSEP) average=(snd[i]/cnt[i]>rcv[i]/cnt[i])?snd[i]/cnt[i]:rcv[i]/cnt[i] print separate[1],separate[2],separate[3],average } for (i in snd) delete snd[i] for (i in rcv) delete rcv[i] for (i in cnt) delete cnt[i] next } { snd[$1,$2,$3]=snd[$1,$2,$3]+$5 rcv[$1,$2,$3]=rcv[$1,$2,$3]+$6 cnt[$1,$2,$3]+=1 } END{ print "装置番号","セクション番号","日時","最大値" for (i in snd){ split(i,separate,SUBSEP) average=(snd[i]/cnt[i]>rcv[i]/cnt[i])?snd[i]/cnt[i]:rcv[i]/cnt[i] print separate[1],separate[2],separate[3],average } } ------------------------------------------------------------- ave.csv というようにして、時間毎・送受信毎の平均を求めました。 今回のテストで使用したデータだと、ave.csv は 40MB 弱になりましたが、これ が10分とかからず出力されたときには、awk の威力を見せ付けられた気がし ました。 次に深夜帯の重複データを除外するために、 sortf -r -u ave.csv > ave2.csv とやったところ、これも5分とかからずに処理が終わって、ざっと 2MB ほどデー タ量が小さくなりました。 ところが、次の手順が結構大変でした。 日時毎に合計しようと、次のようなスクリプトを作ってみました。 ----------------------------------------------------------------