Я могу различать содержимое («ячейки») двух CSV и получать вывод с наивысшим значением, используя следующую функцию:
Compare-Object $oldfile $latestfile -Property "UsedSize" -PassThru | select-Object "VolumeName", "UsedSize" | export-csv c:\kits\_write\snapshots\voldelta.csv -NoTypeInfo
Однако я хочу получить дельту/разницу между значениями в ячейках.
Можно ли выполнить арифметические действия, чтобы найти различия значений в двух CSV?
Чтобы обеспечить контекст, мы увеличиваем расписание моментальных снимков томов NetApp, например, с шести часов до 15 минут. Я хотел бы начать собирать дельту от момента времени N
до момента времени N+15 minutes
, чтобы узнать предполагаемую общую скорость роста данных в томе (включая моментальные снимки, конечно), прежде чем мы внедрим изменение. Да, snap delta
— это метод Data ONTAP для создания этого для существующих моментальных снимков.
Спасибо
[обновление в отношении комментария]
файл А:
VolumeName,TotalSize,AvailableSize,UsedSize
netapp_vol1,375809648400,101430421264,274379237136
файл Б:
VolumeName,TotalSize,AvailableSize,UsedSize
netapp_vol1,375809638400,101430456320,274379182080
Я нашел «лид», используя что-то вроде следующего:
$combocsv = $oldfile + $latestfile
$combocsv | group VolumeName | select name,@{Name="Totals";Expression={($_.group | Measure-Object -sum UsedSize).sum}}
За исключением того, что мне нужно выполнить различие с measure-object
, а не суммированием. У меня возникли проблемы с поиском, как это сделать.
Решено в соответствии с выбранным ответом ниже!
$oldfilecsv = @{}
$oldfile = import-csv "C:\kits\_write\snapshots\filera_version.csv" | foreach-object { $oldfilecsv[$_.VolumeName] = [long]$_.UsedSize }
$latestfilecsv = @{}
$latestfile = import-csv "C:\kits\_write\snapshots\filera_latest.csv" | foreach-object { $latestfilecsv[$_.VolumeName] = [long]$_.UsedSize }
$deltas = @{}
foreach ( $volume in $latestfilecsv.keys ) {
$delta = $latestfilecsv[$volume] - $oldfilecsv[$volume]
$deltas.add($volume, $delta)
}