列A、B、C、Dなどの詳細データを含むcsvファイルがあります。列AとBはカテゴリで、Cはタイムスタンプです。
A と B の組み合わせごとに 1 つの行を示す要約ファイルを作成しようとしています。C が最新の日付である元のデータから行を選択する必要があります。
以下は、問題を解決するための私の試みです。
Import-CSV InputData.csv | `
Sort-Object -property @{Expression="ColumnA";Descending=$false}, `
@{Expression="ColumnB";Descending=$false}, `
@{Expression={[DateTime]::ParseExact($_.ColumnC,"dd-MM-yyyy HH:mm:ss",$null)};Descending=$true} | `
Sort-Object ColumnA, ColumnB -unique `
| Export-CSV OutputData.csv -NoTypeInformation
最初にファイルが読み取られ、次にすべてが 3 つの列すべてで並べ替えられ、2 番目の Sort-Object 呼び出しがそれぞれの最初の行を取得することになっています。ただし、 -unique スイッチを使用した Sort-Object は、最初の行ではなく、ランダムな行を選択するようです。したがって、これは AB の組み合わせごとに 1 つの行を取得しますが、最新の C に対応する行は取得しません。
改善のための提案はありますか?データ セットは非常に大きいため、ファイルを 1 行ずつ調べるのは面倒なので、powershell ソリューションを使用することをお勧めします。