2016-09-18 52 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你的幫助。 –