【发布时间】:2018-03-21 21:16:06
【问题描述】:
我有 2 个大型数据集(每个数据集 >25K 记录),我正在尝试根据一个公共键查找记录。简而言之,我需要根据该公用键从第二个数据集中提取字段。不幸的是,公共键可以在两列之一中。
我设置了一个嵌套的 foreach 场景,但是处理记录需要很长时间。最终目标是使用来自每个数据集的数据字段构建自定义 PSObject。
foreach($MPD in $MPDS.Tables.Rows){
$i++
Write-Host "Outter: $i"
$linkedID = "http://site/" + $MPD.ID
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name MPDLinkedID -Value $linkedID
$obj | Add-Member -MemberType NoteProperty -Name OrderID -Value $MPD.OrderID
$obj | Add-Member -MemberType NoteProperty -Name DSID -Value $MPD.MDS_ID
$obj | Add-Member -MemberType NoteProperty -Name CreatedBy -Value $MPD.CreatedBy
foreach($DS in $DSTwoRecords.Tables.rows){
$j++
Write-Host "Inner: $j"
if(($MPD.MDS_ID -eq $DS.ID) -or ($MPD.ExternalRefernceID -eq $DS.DSID)){
$obj | Add-Member -MemberType NoteProperty -Name DSID -Value $DS.Code
$obj | Add-Member -MemberType NoteProperty -Name DeliveryDate -Value $DS.DeliveryDate
$obj | Add-Member -MemberType NoteProperty -Name DeliveryLocation -Value $DS.DeliveryLocation
}
}
$AllRecords += $obj
}
return $AllRecords
到目前为止,这个循环已经运行了超过 10 个小时。
有没有更有效/更好的方法来实现这一点?
谢谢!
尝试嵌入图片,链接如下:
【问题讨论】:
-
您可以尝试使用 DataRelation 作为 mentioned here 可以加快速度;该示例仍然使用嵌套的 foreach。
-
能否提供来源的样本数据?
-
谢谢 Filburt,会做一些关于 DataRelation 的研究。
标签: powershell dataset