2012-10-24 4 views
3

Je suis bloqué en essayant d'obtenir une sortie significative à partir d'un fichier csv.Import-CSV GroupBy Sum

L'entrée brute ressemble à ceci.

Col1,Col2,Col3,Col4 
a,2,b,z 
a,2,c,x 
a,1,d,y 
e,1,f,s 
e,2,g,t 
h,1,k,r 

Je suis en train de réaliser une sortie inférieure (exclure col4) et à l'exportation vers un fichier pour les rapports plus en utilisant PowerShell 2.

a 5 b,c,d 
e 3 f,g 
h 1 k 

code de ma fonction de script est:

 
    $data = import-csv $filename.csv | Select-Object -property Col1,Col2,Col3 
    $view | Group Col1 | ` 
    select Name,@{ 
     Name="Col2Sum"; 
     Expression = { 
     [math]::round(($_.Group | Measure-Object -Sum Col2).Sum/60,2) 
     } 
     } | ` 
    Sort "Col2Sum" -desc | ft -auto -GroupBy Col | out-file $file.txt 

Où je suis coincé est comment produire des tableaux à partir de Col3 dans une ligne et de les sortir correctement.

Si quelqu'un a des idées.

Répondre

1

Pouvez-vous essayer:

$a = import-csv C:\temp\F.csv |Group-Object -Property col1 | ` 
     % {$_.name + " " + $_.count + " " + ` 
     ($_.group | % {$i=0;$j=$_.count}{$i++ ; $_.col3 + ","*($j-$i -gt 0)})} 
    $a 

a 3 b, c, d 
e 2 f, g 
h 1 k 

Et puis

$a = import-csv C:\temp\F.csv |Group-Object -Property col1 | ` 
     % {$_.name + " " + ($_.group | %{$i=0}{$i+=$_.col2}{$i}) + " " + ` 
     ($_.group | % {$i=0;$j=$_.count}{$i++ ; $_.col3 + ","*($j-$i -gt 0)})} 
    $a 

a 5 b, c, d 
e 3 f, g 
h 1 k 
+0

Oui, qui a travaillé. Surtout deuxième. – Kinnara