Join CSV exports by key into one report
PowerShell
# Join two CSV exports on a shared key using a hashtable lookup.
$users = @'
Id,Name
1,Ada
2,Grace
'@ | ConvertFrom-Csv
$orders = @'
UserId,Total
1,120.50
2,89.99
1,15.00
'@ | ConvertFrom-Csv
$spendByUser = @{}
foreach ($order in $orders) {
if (-not $spendByUser.ContainsKey($order.UserId)) {
$spendByUser[$order.UserId] = [decimal]0
}
$spendByUser[$order.UserId] += [decimal]$order.Total
}
$report = foreach ($user in $users) {
[PSCustomObject]@{
Id = $user.Id
Name = $user.Name
Spent = $spendByUser[$user.Id]
}
}
$report | Format-Table -AutoSize