我有一个包含详细数据的 csv 文件,比如列 A、B、C、D 等。列 A 和 B 是类别,C 是时间戳。
我正在尝试创建一个摘要文件,为 A 和 B 的每个组合显示一行。它应该从原始数据中选择 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 列对所有内容进行排序,第二个 Sort-Object 调用应该取每一行的第一行。但是,带有 -unique 开关的 Sort-Object 似乎选择了一个随机行,而不是第一个。因此,对于每个 AB 组合,这确实得到了一行,但不是对应于最近的 C 的那一行。
有什么改进建议吗?数据集非常大,所以逐行浏览文件很尴尬,所以更喜欢powershell解决方案。