Powershell - конвертировать CSV с несколькими кулонами в CSV с двумя столбцами или UNPIVOT - PullRequest
0 голосов

1 Ответ

0 голосов
/ 08 января 2020

Для встряхивания обычной многоразовой функции UnPivot-Object:

Пример данных

$Table = ConvertFrom-Csv @'
Hour,9/6/2019,9/7/2019,9/8/2019
1,305,293,257
2,284,273,241
3,268,256,227
'@

Функция UnPivot

Function UnPivot-Object {
    [CmdletBinding()][OutputType([Object[]])]Param (
        [Parameter(ValueFromPipeLine = $True)]$InputObject
    )
    Process {
        $Properties = $InputObject.PSObject.Properties
        $Row = ($Properties | Select-Object -First 1).Value
        $Properties | Select-Object -Skip 1 | ForEach-Object {
            [PSCustomObject]@{Row = $Row; Column = $_.Name; Value = $_.Value}
        }
    }
}; Set-Alias UnPivot UnPivot-Object

Результат

$Table | UnPivot

Row Column   Value
--- ------   -----
1   9/6/2019 305
1   9/7/2019 293
1   9/8/2019 257
2   9/6/2019 284
2   9/7/2019 273
2   9/8/2019 241
3   9/6/2019 268
3   9/7/2019 256
3   9/8/2019 227

Specifi c на ваш вопрос

$Table | UnPivot | Sort Column | ForEach {'{0} {1:##}:00:00 - {2}' -f $_.Column, $_.Row, $_.Value}

9/6/2019 1:00:00 - 305
9/6/2019 2:00:00 - 284
9/6/2019 3:00:00 - 268
9/7/2019 1:00:00 - 293
9/7/2019 2:00:00 - 273
9/7/2019 3:00:00 - 256
9/8/2019 1:00:00 - 257
9/8/2019 2:00:00 - 241
9/8/2019 3:00:00 - 227
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...