我试图确定是否有一种更简单的方法来编写一个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
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的:
$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
}
}
Run Code Online (Sandbox Code Playgroud)
这对我有用,但我只是觉得我过度了,并且可能有更简洁的方式来编写它,特别是如果我按更多属性进行分组并想要总结或汇总更多分组值.
在此先感谢您的帮助!
我有同样的,也许有点简单,我删除两个 |
$grouped = $ungrouped | group ID, ID2
$grouped | foreach {
$b= $_.name -split ', '
[pscustomobject] @{
ID = $b[0];ID2 = $b[1]
'Sum Value' = ($_.group | measure value -sum).sum
}
}
Run Code Online (Sandbox Code Playgroud)
一个班轮:
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}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8906 次 |
| 最近记录: |