Возможно, вы захотите немного прояснить свой вопрос, потому что его немного сложно прочитать, но я постараюсь ответить как можно лучше, исходя из того, что я могу понять о том, что вы пытаетесь сделать.
К сожалению, с таким большим количеством данных нет способа сделать это быстро.Сравнение и сортировка строк выполняется методом грубой силы;нет никакого способа уменьшить сложность сравнения каждого символа в одной строке с другой, кроме как измерить их по одному за раз, чтобы увидеть, одинаковы ли они.
(Честно говоря, если бы это был я, яЯ бы просто использовал export-csv $object
и для выполнения этой операции в Excel. Компромисс времени к написанию чего-то подобного только один раз просто не стоил бы.)
По "Предметам" IЯ предполагаю, что вы имеете в виду строки в вашей таблице, и что вы не пытаетесь получить только те строки в строках, которые ищете.Вы уже поняли основную идею выбора объекта, вы можете сделать это для всей таблицы:
$outputFirstObserved = $inputData | Sort-Object -Property FirstObserved -Unique
$outputLastObserved = $inputData | Sort-Object -Property LastObserved -Unique
Теперь у вас есть ~ 20 миллионов строк в памяти, но я думаю, это лучше, чем делать эторука.Осталось только соединить две таблицы .Вы можете загрузить эту команду Join-Object из галереи powershell с помощью Install-Script -Name Join
и использовать ее описанным способом.Если вы хотите выполнить этот шаг самостоятельно, проще всего было бы сложить две таблицы вместе и снова отсортировать их:
$output = $outputFirstObserved + $outputLastObserved
$return = $output | Sort-Object | Get-Unique