2016-09-18 53 views
0

我有一个CSV有以下的列文件:计数和组由多个列

  • ERROR_ID
  • 日期
  • HH(小时在两位数字)
  • 错误描述

它看起来像这样:

screenshot

在SQL这是非常容易的:

SELECT X,Y,Count(1) 
FROM #Table 
GROUP BY X,Y 

在PowerShell中的多一点不同。

回答

1

Group-Object cmdlet允许由多个属性分组:

Import-Csv 'C:\path\to\your.csv' | Group-Object ErrorID, Date 

,这将给你这样的结果:

Count Name   Group 
----- ----   ----- 
    3 1, 15/07/2016 {@{ErrorID=1; Date=15/07/2016; Hour=16}, @{ErrorID=1; Da... 
    1 2, 16/07/2016 {@{ErrorID=2; Date=16/07/2016; Hour=9}}

但是,表格形式显示分组值就像一个SQL查询将你是否需要从组中提取它们:calculated properties

Import-Csv 'C:\path\to\your.csv' | Group-Object ErrorID, Date | 
    Select-Object @{n='ErrorID';e={$_.Group[0].ErrorID}}, 
        @{n='Date';e={$_.Group[0].Date}}, Count 

这将产生这样的输出:

ErrorID Date  Count 
------- ----  ----- 
1  15/07/2016  3 
2  16/07/2016  1
0

您可以使用以下方法:

$csv = import-csv path/to/csv.csv 
$csv | group-object errorid 
Count Name      Group                                             
----- ----      -----                                             
    2 1       {@{errorID=1; time=15/7/2016; description=bad}, @{errorID=1; time=15/8/2016; description=wow}}                      
    1 3       {@{errorID=3; time=15/7/2016; description=worse}}                                  
    1 5       {@{errorID=5; time=15/8/2016; description=the worst}}       

$csv | where {$_.errorid -eq "2"} 
errorID                 time                 description               
-------                 ----                 -----------               
1                  15/7/2016                bad                 
1                  15/8/2016                wow  

可以通过管道将第一和第二个例子,以获得所需的结果。

+0

非常感谢。这正是我所期待的。 Appriciate你的帮助。 –