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