Powershell 按多列进行计数和分组
我有一个包含以下列的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 按多列进行计数和分组,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
在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
谢谢。这正是我想要的。感谢你的帮助。