5 分ごとにいくつかのプロセスのスナップショットをキャプチャする区切りログ ファイルがあります。それらについていくつかの統計分析を行い、データのサブセットをグループ化およびチャート化するなどしたいと思います。その一部には、プロセスが開いていた時間をカウントすることが含まれます(つまり、合計分 = x 5 でスナップショットがどのように表示されるか)。Python、R、または任意の言語を使用できます。
課題は、どのフィールドも一意ではない (1 対多および多対多の関係がある) ことです。したがって、唯一の一致は、行全体のすべての要素が同じ場合です。
例が役立つかもしれません。最初のスナップショット ログが次のようになっているとします。
R123,M,5,... <-- line A
R190,Z,4,...
R663,M,8,...
それから 5 分後、次のスナップショットはこれを示しています。
R123,M,5,... <-- line A
R123,P,3,... <-- line B
R955,Z,3,...
明らかに、行 A のプロセスは少なくとも 5 分間実行されています。しかし、B 行の最初のフィールドは同じですが、他のフィールドが一致しないため、同じプロセスではありません。
このデータを簡単に操作できる優れたデータ モデルを見つけようとしています。
1 つのオプションは、単純な頻度カウントです。すべての行全体を Python dict または Perl ハッシュに読み取り、その行をキーとして、次のスナップショットに重複行が表示されたときにカウントに追加するだけです。たとえば、Perl では次のようになります。$count{$_}++ foreach @lines;
しかし、データの完全な行は辞書のキーとして有効でしょうか? また、行 A が 3 つのスナップショットに対して連続して表示され、別の日に再び表示される場合など、連続していないインスタンスについてはどうでしょうか?-時間ベースのクエリが引き続き有効になるように、これらは個別のインスタンスである必要があります。
このデータを処理および保存する方法について何か提案はありますか?