具有不同列顺序的F#csv提供程序

具有不同列顺序的F#csv提供程序,csv,f#,type-providers,f#-data,Csv,F#,Type Providers,F# Data,如果我定义一个类型 type MyType = CsvProvider<"schema.csv", Schema="A->MyA=int, B->MyB=int"> 如果“file1.csv”包含“schema.csv”具有的所有列,但顺序不同,并且具有未显示在“schema.csv”中的额外列。如果我只对“schema.csv”中指定的列感兴趣,那么我仍然可以加载它吗?该用例不受支持。如果列顺序不同,则无法正常工作。整个CsvProvider是建立在您提供的数

如果我定义一个类型

type MyType = CsvProvider<"schema.csv",
    Schema="A->MyA=int, B->MyB=int">

如果“file1.csv”包含“schema.csv”具有的所有列,但顺序不同,并且具有未显示在“schema.csv”中的额外列。如果我只对“schema.csv”中指定的列感兴趣,那么我仍然可以加载它吗?

该用例不受支持。如果列顺序不同,则无法正常工作。整个CsvProvider是建立在您提供的数据与您提供的样本结构相同的假设之上的。您始终可以在此处提交问题:

您有一个CSV文件的锁定模式,并使用CsvProvider,或者您没有

您始终可以选择“还原”到CsvFile(CsvParser):

使用后者,您可以轻松解析任何CSV文件,确认它具有所需的列,然后根据需要读取它们


我通常会返回到CsvFile,因为通常创建CSV文件是非结构化的,并且是临时的(至少在我遇到的情况下是这样),然后CsvFile是一个很好的解决方案,比CsvProvider更具灵活性。是的,还有一些代码,但还是…

我不知道。如果您尝试,会发生什么情况?要么架构不匹配,要么加载奇怪的数据。我不知道我是否做错了,或者csv提供商根本不支持这个用例。
let csv1 = MyType.Load("file1.csv")