【发布时间】:2019-10-21 07:50:51
【问题描述】:
我有一大组数据,大约有 1000 万个项目,我需要根据六个列标题中的两个来高效、快速地删除重复项目。
我尝试过对项目进行分组和排序,但速度非常慢。
$p1 = $test | Group-Object -Property ComputerSeriaID,ComputerID
$p2 = foreach ($object in $p1.group) {
$object | Sort-Object -Property FirstObserved | Select-Object -First 1
}
我们的目标是通过评估两列来删除重复项,同时根据第一次观察来保持最旧的记录。
数据看起来像这样:
上次观察时间:2019-06-05T15:40:37 第一次观察:2019-06-03T20:29:01 计算机名称:1 计算机编号:2 虚拟:3 计算机序列号:4
上次观察时间:2019-06-05T15:40:37 第一次观察:2019-06-03T20:29:01 计算机名称:5 计算机编号:6 虚拟:7 计算机序列号:8
上次观察时间:2019-06-05T15:40:37 第一次观察:2019-06-03T20:29:01 计算机名称:9 计算机编号:10 虚拟:11 计算机序列号:12
【问题讨论】:
-
请更改您的标题-您不是在谈论二维数组...您是在谈论要根据该数组中对象中的两个属性进行过滤的一维数组。 [咧嘴]
-
老实说,有这么多项目,你为什么不使用真正的数据库来完成这项工作?我想你可以构建一个哈希表,并针对它执行查找,但与使用为处理大型数据集而构建的工具相比,这也会很慢。
标签: arrays powershell duplicates large-data