@AlexNov001

Из объектов получить таблицу с привязкой к значениям?

День добрый

Имеется 2 набора данных:
1. $objects, состоящая из n строк {object}
2. $data_cur, хеш таблица {name, object, quantity},
наполняемая вот так: $data_cur += "" | Select-Object -Property @{N = 'name'; E = {$var1.name}}, @{N = 'object'; E = {$var2.name}, @{N = 'quantity'; E = {$var3.count}}

Данные вида:
name object quantity
name1 object1 1
name1 object5 10
name1 object2 5
name2 object2 1
name2 object3 4

Мне нужно получить (как итог) таблицу вида:
6107cfe855db2384278275.png
Т.е. соответствие данных между name, object и quantity.
В целом, достаточно получить для csv строки вида "name1;1;5;0;0;10;0" и т.д чтобы значения соответствовали

Подскажите, пожалуйста, как это можно реализовать. Вроде выглядит просто, но никак не выходит
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
$fields = 'object1','object2','object3','object4','object5','object6'
$data = 'name object quantity
 name1 object1 1
 name1 object5 10
 name1 object2 5
 name2 object2 1
 name2 object3 4' -split "`r`n" | ConvertFrom-Csv -Delimiter ' '


foreach($d in ($data | Group-Object -Property name)) {
    $o = [ordered]@{ name = $d.name }
    $name_data = $d.Group | Group-Object -Property object -AsHashTable
    foreach ($field in $fields) {
        if ($name_data.ContainsKey($field)) {
            $o[$field] = $name_data[$field].quantity
        }
        else {
            $o[$field] = 0
        }
    }
    [PSCustomObject]$o
}


name    : name1
object1 : 1
object2 : 5
object3 : 0
object4 : 0
object5 : 10
object6 : 0

name    : name2
object1 : 0
object2 : 1
object3 : 4
object4 : 0
object5 : 0
object6 : 0


а складывать сазу в кучку было бы примерно так же. создать $o
в цикле заполнить поля, преобразовать в объект

p.s. интересно, подсветка powershell когда-нибудь появится ?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы