我有2个CSV
left.csv
Ref_ID,First_Name,Last_Name,DOB
321364060,User1,Micah,11/01/1969
946497594,User2,Acker,05/28/1960
887327716,User3,Aco,06/26/1950
588496260,User4,John,05/23/1960
565465465,User5,Jack,07/08/2020
right.csv
First_Name,Last_Name,DOB,City,Document_Type,Filename
User1,Micah,11/01/1969,Parker,Transcript,T4IJZSYO.pdf
User2,Acker,05/28/1960,,Transcript,R4IKTRYN.pdf
User3,Aco,06/26/1950,,Transcript,R4IKTHMK.pdf
User4,John,05/23/1960,,Letter,R4IKTHSL.pdf
最终结果:
Combined.csv
Ref_ID,First_Name,Last_Name,DOB,Document_Type,Filename
321364060,User1,Micah,11/01/1969,Parker,Transcript,T4IJZSYO.pdf
946497594,User2,Acker,05/28/1960,Transcript,R4IKTRYN.pdf
887327716,User3,Aco,06/26/1950,Transcript,R4IKTHMK.pdf
588496260,User4,John,05/23/1960,Letter,R4IKTHSL.pdf
我需要在First_Name,Last_Name,DOB上匹配它们,然后从左侧返回Ref_ID,first_name,last_name,DOB.csv,从右侧返回Document_Type,Filename.csv
使用比较对象:只返回一个csv中的列,而不是两个csv中的列。
使用join-object:这是我最大的希望,但这只让我匹配一列,我需要匹配多列(无法弄清楚如何做多个)
我不知道从这里去哪里,开放的建议。
5条答案
按热度按时间m3eecexj1#
mftmpeh82#
您可以从每个csv创建自己的键,然后使用此键从每个csv添加到新的哈希表。
在调试器(伊势或VSCode)中逐步完成此操作,并根据您的需要进行定制...根据数据的完整性,添加适当的错误检查。下面的一些语句只是用于调试,以便您可以检查它运行时发生的情况。
qv7cva1a3#
已经有一些很好的答案了,还有一个。
将大量对象导入到单个(dis)数组中:
使用
Group-Object
将它们组织成具有相同键值的组:然后合并对象,将所有缺少的属性添加到输出
$mergedObject
中这与你已经得到的答案没有太大的不同,但是消除“左”“右”的区别可能会有所帮助;上面的代码应该处理三个或更多的源代码,并合并所有包含相同
$keyProps
的对象。请注意,还有一些极端情况需要考虑。例如,如果一个对象的用户名为“City=Chigago”,而另一个对象的用户名为“City=New York”,会发生什么?
fnatzsnv4#
试试这个Join-Object。
除了基于多列的连接之外,它还有一些其他功能:
wnvonmuf5#
我找到了答案: