F# で一部のクライアント データのレコード タイプを次のように定義しました。
type DataPoint = {
date: string;
dr: string;
Group: string;
Product: string;
Book: int;
Revenue: int} with
static member fromFile file =
file
|> File.ReadLines
|> Seq.skip 1 //skip the header
|> Seq.map (fun s-> s.Split ',') // split each line into array
|> Seq.map (fun a -> {date = string a.[0]; dr = string a.[1];
Group = string a.[2]; Product = string a.[3];
Book = int a.[4]; Revenue = int a.[5] });;
// creates a record for each line
let pivot (file) = DataPoint.fromFile file
|> ??????????
date、dr、Group、Product がすべて等しい行については、Book と Revenue のすべてのエントリを合計して、ピボットされた行を生成します。したがって、ある種の if else ステートメントは問題ないはずです。最初のデータ ポイントから開始し、一致する各行を再帰的に追加してから、一致する行を削除して、出力の重複を避ける必要があると思います。
これが完了すると、これらのピボットされた行を別の csv ファイルに簡単に書き込むことができます。
誰でも始められますか?