按多列进行计数和分组

Dav*_*ffe 2 powershell group-by count

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

  • 错误ID
  • 日期
  • hh(两位数的小时)
  • 错误描述

它看起来像这样:

截屏

在 SQL 中这非常简单:

SELECT X,Y,Count(1)
FROM #Table
GROUP BY X,Y
Run Code Online (Sandbox Code Playgroud)

在 PowerShell 中,情况稍有不同。

Ans*_*ers 5

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

Import-Csv 'C:\path\to\your.csv' | Group-Object ErrorID, Date
Run Code Online (Sandbox Code Playgroud)

这会给你这样的结果:

计数名称组
----- ---- -----
    3 1, 15/07/2016 {@{ErrorID=1; 日期=2016年7月15日;小时=16},@{ErrorID=1; 达...
    1 2, 16/07/2016 {@{ErrorID=2; 日期=2016年7月16日;小时=9}}

但是,要像 SQL 查询一样以表格形式显示分组值,您需要从具有计算属性的组中提取它们:

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
Run Code Online (Sandbox Code Playgroud)

这将产生如下输出:

ErrorID 日期计数
------- ---- -----
1 2016年7月15日 3
2 2016 年 7 月 16 日 1