Powershell 按多列进行计数和分组

Powershell 按多列进行计数和分组,powershell,count,group-by,Powershell,Count,Group By,我有一个包含以下列的CSV文件: 错误号 日期 两位数的小时数 错误描述 它看起来像这样: 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}} ErrorID Date

我有一个包含以下列的CSV文件:

错误号 日期 两位数的小时数 错误描述 它看起来像这样:

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}} ErrorID Date Count ------- ---- ----- 1 15/07/2016 3 2 16/07/2016 1 在SQL中,这非常简单:

选择X、Y、Count1 从桌子上 按X,Y分组
在PowerShell中,它有点不同。

您可以使用以下选项:

$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    
您可以通过管道传输第一个和第二个示例来获得所需的结果

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}} ErrorID Date Count ------- ---- ----- 1 15/07/2016 3 2 16/07/2016 1 这将产生如下输出:

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}} ErrorID Date Count ------- ---- ----- 1 15/07/2016 3 2 16/07/2016 1
谢谢。这正是我想要的。感谢你的帮助。