Powershell 按多个属性分组

2024-04-28

我试图确定是否有更简单的方法来编写 Powershell 函数,该函数按多个属性对数组进行分组并对组中指定的属性求和,类似于以下内容:

#Ungrouped data
ID ID2 Value
-- --- -----
A  A1    100
A  A2    200
A  A2    300
B  B1    400
B  B1    500
B  B1    600
B  B3    700
C  C1    800
C  C2    900
C  C1   1000

#Grouped data
ID ID2 Sum Value
-- --- ---------
A  A1        100
A  A2        500
B  B1       1500
B  B3        700
C  C1       1800
C  C2        900

这是我到目前为止所拥有的:

$grouped = $ungrouped | group ID, ID2
$grouped | foreach {
    [pscustomobject] @{
        ID = $_.group | select -unique -expand ID
        ID2 = $_.group | select -unique -expand ID2
        'Sum Value' = ($_.group | measure value -sum).sum
    }
}

这对我有用,但我只是觉得我做得太过分了,可能有一种更简洁的方法来编写它,特别是如果我按更多属性进行分组并想要总结或聚合更多分组值。

先谢谢您的帮助!


我有相同的,也许更简单一点,我删除了两个|

$grouped = $ungrouped | group ID, ID2
$grouped | foreach {
    $b= $_.name -split ', '
    [pscustomobject] @{
         ID = $b[0];ID2 = $b[1]
        'Sum Value' = ($_.group | measure value -sum).sum
    }
}

一班轮:

Import-Csv 'YourFile.csv' | Group-Object -Property ID,ID2 | % {$b=$_.name -split ', ';$c=($_.group | Measure-Object -Property value -Sum).Sum;[PScustomobject]@{ID=$b[0];ID2=$b[1];Sum=$c}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell 按多个属性分组 的相关文章

随机推荐