Альтернативный способ удаления дубликатов из CSV, кроме Sort-Object-unique? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть ошибка, которую я не могу победить.Когда я запускаю скрипт, который попадает в этот фрагмент кода, он неправильно удаляет уникальные значения:

import-csv "$LocalPath\A1-$abbrMonth$Year.csv" | 
    where {$_."CustomerName" -match $Customersregex} |
    select "SubmitterID","SubmitterName","JobDate","JobTime",@{Name="Form";Expression={if ($_.FormName -match "Copy"){"C"};if ($_.FormName -match "Letter"){"L"} else {""} }},"TotalDocs",@{Name="AddnPages";Expression={$_.TotalAdditionalPages}},"InputFilename",@{Name="ActualDocs";Expression={[string]([int]$_.RegularDocs + [int]$_.UnqualifiedDocs)}}|
    sort "InputFilename" -Unique |
    export-csv "$LocalPath\A2-$abbrMonth$Year.csv" -NoTypeInformation

Это происходит во время строки "sort" InputFilename "-Unique", однако он будет работать правильно, когда я его обрежуи выполнить его построчно, но не в оригинальном сценарии.

Есть ли другой способ удаления дубликатов на основе значения столбца?Я попытался использовать параметр -unique в операторе Select-Object, но не могу найти способ ограничить его только одним столбцом.

EDIT: Чтобы уточнитьУ меня проблема, у меня есть БОЛЬШОЙ список бухгалтерских данных.Я пытаюсь удалить дубликаты записей с помощью "Sort -unique".После запуска приведенного выше кода отсутствуют записи, которых не должно быть, потому что они уникальны.Я могу изолировать их в их собственном CSV-файле, запустить приведенный выше код, и все записи присутствуют, что должно быть, однако, когда я запускаю свой основной CSV-файл через вышеуказанный код (и только этот код, ничего больше) и ищу эти записи, они являютсяотсутствует. РЕДАКТИРОВАТЬ 2: Похоже, это была проблема с файлом данных.Печаль во благо.

1 Ответ

0 голосов
/ 01 марта 2019

Вы всегда можете группировать вещи, а затем развернуть первый элемент в группе.Это не быстро, но работает для того, что вы делаете.

import-csv "$LocalPath\A1-$abbrMonth$Year.csv" | 
    where {$_."CustomerName" -match $Customersregex} |
    group InputFilename |
    % { $_.Group[0] } |
    select "SubmitterID","SubmitterName","JobDate","JobTime",@{Name="Form";Expression={if ($_.FormName -match "Copy"){"C"};if ($_.FormName -match "Letter"){"L"} else {""} }},"TotalDocs",@{Name="AddnPages";Expression={$_.TotalAdditionalPages}},"InputFilename",@{Name="ActualDocs";Expression={[string]([int]$_.RegularDocs + [int]$_.UnqualifiedDocs)}}|
    sort "InputFilename" |
    export-csv "$LocalPath\A2-$abbrMonth$Year.csv" -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...