F#类型提供商行为不一致

时间:2017-10-28 16:41:35

标签: f# type-providers f#-interactive f#-data

我想制作一系列蜡烛' (一种简单的结构)用于对财务数据进行测试。我从经纪商处下载了一些财务数据,它们采用csv格式。

我有以下代码,使用类型提供程序:

type DukasCandles = CsvProvider<"C:\Users\**\Documents\Visual Studio 2017\Projects\FI\FI\Data\schema.csv" > 

let row2Candle (myTicker: string )  (mySide: Side)  (aRow:DukasCandles.Row)  : Candle = 
    {Open = aRow.Open ; 
     Close = aRow.Close;  
     Low = aRow.Low
     High = aRow.High
     StartTime  = aRow.LocalTime    
     Volume = aRow.Volume  
     Ticker = myTicker
     Side = mySide } 

let  sortedCandles aTicker aParsedFile  = 
    aParsedFile 
    |> Seq.map   ( row2Candle aTicker Side.Bid  ) 
    |> Seq.sortBy ( fun candle -> candle.StartTime)  

let fileContent = inputFile |> DukasCandles.Load 
let rows = fileContent.Rows
let dataContent = rows|> (sortedCandles "EUR_USD")  

这只是一个测试我对类型提供者的理解的玩具示例。我在必要的样板之后用FSX脚本声明文件名并打开必要的模块。

现在的问题是:如果我按原样突出显示并尝试在F#interactive中执行,则输入

dataContent;;

我收到以下消息

val it : seq<Candle> =


 Error: Couldn't parse row 1057 according to schema: Expecting DateTime in LocalTime, got 13.01.2016 00:00:00.000

奇怪的是以下内容: 假设我在F#interactive中输入以下代码:

fileContent;;

得到答案,然后通过&#39; it&#39;来引用它。关键字,如:

it.Rows |> sortedCandles "EUR_USD";;

然后执行代码没有问题。

为什么我们会出现这种不一致的行为?任何的想法? 任何帮助高度赞赏。谢谢。

0 个答案:

没有答案