按多列计数和分组

时间:2016-09-18 15:36:01

标签: powershell count group-by

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

  • ERROR_ID
  • 日期
  • hh(两位数小时)
  • 错误说明

看起来像这样:

screenshot

在SQL中很容易:

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

在PowerShell中它有点不同。

2 个答案:

答案 0 :(得分:2)

Group-Object cmdlet允许按多个属性进行分组:

<select name="topic" id="user-topic" class="m-select">
    <option value="Not select">O que você precisa?</option>
    <option value="Topic 1">Solicitar contato de um vendedor</option>
    <option value="Topic 2">Agendar Revisão</option>
    <option value="Topic 3">Cotação de Peças</option>
<option value="Topic 3">Crítica/Sugestão</option>

会给你一个这样的结果:

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

将产生如下输出:

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

答案 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    

您可以管道第一个和第二个示例以获得所需的结果。