生成所有无效数据的报告 - Csv文件数据类型验证?

时间:2015-05-29 18:25:50

标签: f# f#-data

以下代码定义了CSV文件的架构,它将用于加载大量CSV文件。但是,存在一些数据错误,例如,日期格式不正确,缺少必填字段的数据等。如何使用所有无效数据的模式生成文件报告。只有在没有错误的情况下才会执行Request.InputStream

Load

建议的错误报告示例:

A
  Rows with missing values: 20, 40, 60, ...
  Rows with invalid values: 30(NaN), 31(Xyz), ....
B
C
  Rows with invalid values: 200 (2015Q1), ....

1 个答案:

答案 0 :(得分:3)

没有内置支持 - 您可以选择明确地使列的类型可选,然后检查数据集中的None值。这样,您可以获得缺少数据或没有数据的行列表:

type MyCsvType = CsvProvider<Schema="A (int option), B (string option), C (date option)", HasHeaders=false>

let c = MyCsvType.Parse(""", hi, 1/1/2001
1, hi, foo""")

printfn "Rows with missing/invalid values for A:"
c.Rows |> Seq.iteri (fun i v ->
  match v.A with
  | Some _ -> ()
  | None -> printfn "  %d" i)

不幸的是,我不认为在解析失败的情况下有办法获得无效值。请open an issue讨论如何支持这一点!