5 분마다 일부 프로세스의 스냅 샷을 캡처하는 로그 파일을 구분했습니다. 데이터의 일부를 그룹화하고 차트로 만드는 등의 통계 분석을하고 싶습니다. 그 중 일부는 프로세스가 열려있는 시간을 계산하는 것입니다 (즉 총 시간 = 스냅 샷이 x 5로 표시되는 방식). 나는 Python, R, 또는 내가 선택한 언어를 사용할 수있다.스냅 샷 데이터의 데이터 구조 권장
도전은 필드의 없음이 고유한지 전체 라인에 모든 요소가 인 경우에만 일치하므로, (한 일대 다 및 다 대다 관계가있다) 같은.
예를 들어 도움이 될 것입니다.
R123,M,5,... <-- line A
R190,Z,4,...
R663,M,8,...
그런 다음 오분 후, 다음 스냅 샷이 표시됩니다 : 그럼 첫 번째 스냅 샷 로그는 다음과 같습니다 가정 해 봅시다
R123,M,5,... <-- line A
R123,P,3,... <-- line B
R955,Z,3,...
분명히 공정 라인에서 지금은 5 분 이상 동안 주변되었습니다 지금. 그러나 B 행의 첫 번째 필드가 같더라도 다른 필드는 일치하지 않으므로 동일한 프로세스가 아닙니다.
나는이 데이터를 쉽게 사용할 수있는 좋은 데이터 모델을 찾기 위해 노력하고 있습니다.
하나의 옵션은 간단한 빈도 카운트가 될 것입니다 : 모든 전체 라인을 파이썬 dict 또는 펄 해시로 라인을 키로 읽으십시오. 그러면 다음 스냅 샷에 중복 라인이 나타날 때 카운트에 추가됩니다. 예를 들어 Perl : $count{$_}++ foreach @lines;
그러나 전체 데이터 행은 사전 키로 유효할까요? A 연속적으로 3 개의 스냅 샷이 나타나고 나중에 또 다른 날이 다시 나타나는 것처럼 연속되지 않는 인스턴스의 경우 - 시간 기반 쿼리가 여전히 유효하도록 별도의 인스턴스 여야합니다.
처리 방법에 대한 의견이 있으면 &이 데이터를 저장 하시겠습니까?
복제 된 줄을 꺼내지 않는 이유는 무엇입니까? 데이터 프레임 방법을 가진'duplicated' 함수가 있습니다. –
@DWin : 중복 된 선을 계량화해야하기 때문에 프로세스가 지속 된 시간에 대한 주요 데이터는 첫 번째 모습에서 마지막 모습까지 몇 번이나 얼마나 오랫동안보아야 만 알 수 있습니다. – ewall