簡體   English   中英

Powershell - 分組並從 CSV 文件中計數

[英]Powershell - Group and count from CSV file

在我的 CSV 文件中,我有兩列 header Start_dateStatus 我試圖找出每個Start_date的成功百分比

    Start_date       Status
------------------------------------------
    02-03-2022      Completed
    02-03-2022      Completed
    03-03-2022      Failed
    03-03-2022      Completed

我正在尋找最終的 output,如下所示,我導出 CSV

Start_date  Total Completed  Failed Success %
02-03-2022   2       2         0      100
03-03-2022   2       1         1       50

作為第一步,我嘗試使用以下代碼獲取每天的工作量。

$data = Import-Csv "C:\file.csv"
$data | group {$_.Start_date} | Sort-Object {$_.Start_date} | Select-Object {$_.Status}, Count

上面的代碼會給我 output 之類的

$_.Status Count
--------- -----
              1
              1

它沒有顯示日期值。 這個問題的正確方法是什么?

您可以使用Group-Object按日期列對對象進行分組,然后它只是數學:

$csv = @'
Start_date,Status
02-03-2022,Completed
02-03-2022,Completed
03-03-2022,Failed
03-03-2022,Completed
'@ | ConvertFrom-Csv

# This from your side should be:
# Import-Csv path/to/csv.csv | Group-Object ....

$csv | Group-Object Start_date | ForEach-Object {
    $completed, $failed = $_.Group.Status.where({ $_ -eq 'Completed' }, 'Split')
    $totalc  = $_.Group.Count
    $complc  = $completed.Count
    $failc   = $failed.Count
    $success = $complc / $totalc

    [pscustomobject]@{
        Start_Date = $_.Name
        Total      = $totalc
        Completed  = $complc
        Failed     = $failc
        Success    = $success.ToString('P0')
    }
}

這是另一個:

$csv = Import-Csv C:\Temp\tmp.csv
$Results = @()
foreach ($group in $csv | Group Start_date)
{
    $Completed = ($group.Group | group status | ? Name -eq Completed).Count
    $Failed = ($group.Group | group status | ? Name -eq Failed).Count
    $row = "" | Select Start_date,Total,Completed,Failed,"Success %"
    $row.Start_date = $group.Name 
    $row.Total = $group.Count
    $row.Completed = $Completed
    $row.Failed = $Failed
    $row."Success %" = $Completed / 2 * 100
    $Results += $row
}

$results

Start_date Total Completed Failed Success %
---------- ----- --------- ------ ---------
02-03-2022     2         2      0       100
03-03-2022     2         1      1        50

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM