FSharp 17.10.2019, 13:23 Uhr

Daten per F# Type Provider einlesen

Der italienische Entwickler mit dem Pseudonym Klaus78 zeigt auf CodeProjekt eindrucksvoll, wie einfach man mit F# Daten einlesen und auswerten kann – per Type Provider.
(Quelle: fsharp.github.io/FSharp.Data)
Der Autor zeigt dafür ein sehr einfaches Beispiel anhand einer CSV-Datei mit vier Zeilen und drei Spalten. In der ersten Zeile steht der Header, welcher die Spaltendaten benennt. Die Daten in den drei Zeilen darunter sind Ziffern, getrennt durch Kommata. Die Hilfestellung zum Einlesen der Daten gibt der FSharp Type Provider FSharp.Data, welcher per NuGet zum Projekt hinzugefügt werden kann. Dieser Provider arbeitet mit den Typen CSV, HTML, JSON und XML. Daneben gibt es noch andere Type Provider, die beispielsweise mit SQL klarkommen.
Nach dem Einbinden von FSharp.Data (open FSharp.Data) wird ein Type Provider mit der Datendatei verbunden mit:
type myCsvTypeProvider = CsvProvider<"myFile.csv", HasHeaders=true> 
Das genügt bereits, damit das FSharp-Programm Kenntnis über die Datenstruktur der CSV-Datei sowie deren Spaltenüberschriften erlangt. Das Programm kann sofort auf die Daten zugreifen, ohne sie in Zeilen zu splitten und weiter zu gliedern. So ist beispielsweise folgender Zugriff erlaubt um das Maximum einer Spalte zu ermitteln:
let main argv = 
    let myCsv = myCsvTypeProvider.GetSample()
    let maxC1 =
        myCsv.Rows
        |> Seq.map(fun row -> row.C1)
        |> Seq.max
     printfn "the max value in c1 is %A" maxC1
     ...
Den Beitrag von Klaus78 finden Sie hier. Mehr zu FSharp Type Providern ist auf GitHub zu lesen unter fsharp.github.io/FSharp.Data/.


Das könnte Sie auch interessieren