Поиск отсортированного массива, извлечение данных и создание новых файлов в PowerShell - PullRequest
0 голосов
/ 09 июля 2019

Вот пример файла, который я хотел бы отсортировать, найти и, наконец, извлечь данные и создать новые файлы.

Column1, Column2, Column3
A,1,2 
B,1,2
C,1,2
A,1,3
B,3,4
A,2,3
B,4,5
C,1,4
D,3,4
A,2,3
D,2,3

Прежде всего, я бы хотел отсортировать по Column1 (легко). Далее создайте файлы, все строки которых принадлежат определенным значениям из Column1 Например:

File1:

A,1,2
A,1,3
A,2,3
A,2,3

File2:

B,1,2
B,3,4
B,4,5

...

Первая идея - прочитать каждую строку отсортированного массива и прекратить создавать первый файл, в котором появляются новые значения из Column1 (и начинать создание следующего файла), но я бы хотел этого избежать, потому что у меня есть сотни тысяч строк. Вторая идея - найти уникальные значения из Column1 и использовать его для поиска данных в массиве. но здесь у меня будут тысячи запросов. Код:

$array = Import-CSV -Path .\IDMUsers.csv -Delimiter ";"
$sorted = $array | Sort-Object -Property ManagerMail -Unique | Select-   Object 'ManagerMail'
$sorted_array = $array | sort {$_.ManagerMail,$_.DisplayName}
ForEach ($manager in $sorted){
    $UsersofManager = $sorted_array | ? {$_.ManagerMail -contains   $manager.ManagerMail} | Export-Csv ".\$($manager.ManagerMail).csv" -NoTypeInformation
}

У меня есть 100 000 строк в CSV. Сначала я нахожу уникальные строки ($ sorted -> около 200 строк) и, наконец, запрашиваю $ sorted_array для каждой строки и создаю файл. Это займет около 20 минут. Есть идеи, как ускорить этот процесс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...