2023/05/09

ソースとしてはSQLiteからは無理な現状らしい

 アイビー先生の力も借りてみましたが、とっかかりの時点で使うInferColumnsメソッドがそもそもまあCSVが基本でSQLiteとかのデータ読込には対応してないので、前回リストに入れたものをデータビューにとかは出来ない。って事は、まあね、ソースをSQLiteからCSVとして抜き出して、それを元にすれば...ってこれするなら単純にモデルビルダーで行けるじゃんorz なのでautoMLについて調べる気力が失せました😨

なので、ちと方向転換して何をCSVとして吐き出すかがキーになりそうで、それを検討しながらまたCsvHelperのお世話になるんですが、既に忘れてます😖 出力用のクラスを

  1. internal class STSrc
  2. {
  3. public string JouCD { get; set; }
  4. public byte TrackCD { get; set; }
  5. public short Kyori { get; set; }
  6. public byte Tenko { get; set; }
  7. public byte Baba { get; set; }
  8. public long Chichi { get; set; }
  9. public float KishuSyoritsu { get; set; }
  10. public float ChokyosiSyoritsu { get; set; }
  11. public float Souha { get; set; }
  12. public STSrc
  13. (
  14. string JouCD,
  15. byte TrackCD,
  16. short Kyori,
  17. byte Tenko,
  18. byte Baba,
  19. long Chichi,
  20. float KishuSyoritsu,
  21. float ChokyosiSyoritsu,
  22. float Souha
  23. )
  24. {
  25. this.JouCD = JouCD;
  26. this.TrackCD = TrackCD;
  27. this.Kyori = Kyori;
  28. this.Tenko = Tenko;
  29. this.Baba = Baba;
  30. this.Chichi = Chichi;
  31. this.KishuSyoritsu = KishuSyoritsu;
  32. this.ChokyosiSyoritsu = ChokyosiSyoritsu;
  33. this.Souha = Souha;
  34. }
  35. }

として、このマッピング用に

  1. internal class STTable : ClassMap<STSrc>
  2. {
  3. private STTable()
  4. {
  5. Map(c => c.JouCD).Index(0).Name("競馬場コード");
  6. Map(c => c.TrackCD).Index(1).Name("トラックコード");
  7. Map(c => c.Kyori).Index(2).Name("距離");
  8. Map(c => c.Tenko).Index(3).Name("天候コード");
  9. Map(c => c.Baba).Index(4).Name("馬場状態コード");
  10. Map(c => c.Chichi).Index(5).Name("繁殖登録番号_父");
  11. Map(c => c.KishuSyoritsu).Index(6).Name("騎手勝率");
  12. Map(c => c.ChokyosiSyoritsu).Index(7).Name("調教師勝率");
  13. Map(c => c.Souha).Index(8).Name("走破タイム");
  14. }
  15. }

と準備して、

  1. List<STSrc> st = new List<STSrc>();

をリーダーループ前に宣言して、

  1. kaisaibi = rs.GetDateTime("KAISAIBI");
  2. jouCD = rs.GetString("JOUCD");
  3. rno = rs.GetByte("RNO");
  4. tracdCD = rs.GetByte("TRACKCD");
  5. ketto = rs.GetInt32("KETTO");
  6. syoritsu = GetSyoritsu(cmdCK, kaisaibi, jouCD, rno, ketto, tracdCD);
  7. // データクラス
  8. STSrc shinbaTime = new STSrc(
  9. jouCD,
  10. tracdCD,
  11. rs.GetInt16("KYORI"),
  12. rs.GetByte("TENKO"),
  13. rs.GetByte("BABA"),
  14. GetChichi(cmdU, ketto),
  15. syoritsu.Kishu,
  16. syoritsu.Chokyosi,
  17. rs.GetFloat("SOUHA")
  18. );
  19. st.Add(shinbaTime);

と回してリスト作ったら、

  1. var path = @"ShinbaTime.csv";
  2. var config = new CsvConfiguration(CultureInfo.InvariantCulture)
  3. {
  4. HasHeaderRecord = true
  5. };
  6. using (StreamWriter sw = new StreamWriter(path, false))
  7. using (var csv = new CsvWriter(sw, config))
  8. {
  9. csv.Context.RegisterClassMap<STTable>();
  10.  
  11. csv.WriteRecords(st);
  12. }

とすればCSV出力は完了する。

CSVが出来たのでまあ普通にモデルビルダーが動かせるので試してみた。

0 件のコメント:

コメントを投稿