2010-04-16 4 views
2

통계를 실행하는 데 사용하려는 CSV 형식의 트랜잭션 로그 파일이 있습니다.CSV 파일에서 직접 통계 계산

 
date: Time/date stamp 
salesperson: The username of the person who closed the sale 
promo: sum total of items in the sale that were promotions. 
amount: grand total of the sale 

나는 다음과 같은 통계를 좀하고 싶습니다 : 로그는 다음과 같은 필드가 있습니다

나는 데이터베이스 구조를 구축이 파일을 가져 오기, SQL을 작성하고 끌어 유혹하고있어
 
salesperson: The username of the salesperson being analyzed. 
minAmount: The smallest grand total of this salesperson's transaction. 
avgAmount: The mean grand total.. 
maxAmount: The largest grand total.. 
minPromo: The smallest promo amount by the salesperson. 
avgPromo: The mean promo amount... 

통계를. 이 통계 자료보다이 데이터에서 더 필요한 것은 없습니다. 더 쉬운 방법이 있습니까? 나는 bash 스크립트가 이것을 쉽게 만들 수 있기를 바라고있다.

+0

문제의 어떤 부분에 문제가 있습니까? 통계 그 자체? 데이터 구조는? 파싱? 당신이 편한 스크립팅 언어에 대해 매우 어려운 문제는 아닌 것 같습니다. – Kena

+0

* cuddles PowerShell * ... – Joey

답변

2

awk 스크립트를 실행해볼 수도 있습니다. 몇 가지 변수가있는 것은 CSV입니다.

+0

Awk는 자연 스럽습니다. 시작/끝이있어서 초기화 할 수 있고 평균을 쉽게 계산할 수 있습니다. –

+0

매우 흥미 롭습니다. 어떻게 awk를 사용하여 "GROUP BY salesperson"을 할 수 있습니까? – User1

+0

@ User1 : 연관 배열 또는'asort()'또는'asorti()'. –

1

CSV의 행을 반복하고 bash 스크립트 변수를 사용하여 최소/최대 금액을 저장할 수 있습니다. 평균의 경우 누적 합계를 유지 한 다음 가능한 총 헤더 수를 제외하고 전체 줄 수로 나눕니다.

여기 bash에서 CSV 파일 작업을 위해 useful snippets이 있습니다.

데이터를 인용 할 수있는 경우 (예 : 쉼표가 포함 된 필드이므로) bash, sed 등의 처리는 훨씬 복잡해집니다.

3

TxtSushi이 작업을 수행합니다 :

tssql -table trans transactions.csv \ 
'select 
    salesperson, 
    min(as_real(amount)) as minAmount, 
    avg(as_real(amount)) as avgAmount, 
    max(as_real(amount)) as maxAmount, 
    min(as_real(promo)) as minPromo, 
    avg(as_real(promo)) as avgPromo 
from trans 
group by salesperson'

내가 그것을 사용하는 방법을 보여 example scripts의 무리가 있습니다.

수정 : 고정 구문

+0

+1 훨씬 쉽게 보입니다. 다음 번에 그걸 줘야 겠어. BTW : 당신은 aardvark입니까? – User1

+0

선생님, 전 설탕 글라이더예요. – Keith

+0

그건 내가 두려웠 던 것이군요. 당신 집이 미국에 있다면 당신의 주인이 당신 집에 데려 가서 파산하지 않기를 바랍니다. 나는 너희들이 "특히 지성적"이라고 들었지만, 와우, SO에 대한 답변은 상당히 위에있다. 그렇게 설득력있는 설탕 이니? – User1

관련 문제