循环遍历大型数据集

时间:2018-03-20 17:25:26

标签: powershell dataset

我有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小时。

是否有更有效/更好的方法来实现这一目标?

谢谢!

试图嵌入图片,链接如下:

Sample Data Sets and desired results

1 个答案:

答案 0 :(得分:0)

如果数据集之间没有顺序依赖关系,则可以使用 Start-job cmdlet而不是内部循环来实现并发。