2023/05/09

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

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

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

internal class STSrc
{
    public string JouCD { get; set; }
    public byte TrackCD { get; set; }
    public short Kyori { get; set; }
    public byte Tenko { get; set; }
    public byte Baba { get; set; }
    public long Chichi { get; set; }
    public float KishuSyoritsu { get; set; }
    public float ChokyosiSyoritsu { get; set; }
    public float Souha { get; set; }
    public STSrc
    (
        string JouCD,
        byte TrackCD,
        short Kyori,
        byte Tenko,
        byte Baba,
        long Chichi,
        float KishuSyoritsu,
        float ChokyosiSyoritsu,
        float Souha
    )
    {
        this.JouCD = JouCD;
        this.TrackCD = TrackCD;
        this.Kyori = Kyori;
        this.Tenko = Tenko;
        this.Baba = Baba;
        this.Chichi = Chichi;
        this.KishuSyoritsu = KishuSyoritsu;
        this.ChokyosiSyoritsu = ChokyosiSyoritsu;
        this.Souha = Souha;
    }
}

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

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

と準備して、

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

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

kaisaibi = rs.GetDateTime("KAISAIBI");
jouCD = rs.GetString("JOUCD");
rno = rs.GetByte("RNO");
tracdCD = rs.GetByte("TRACKCD");
ketto = rs.GetInt32("KETTO");
syoritsu = GetSyoritsu(cmdCK, kaisaibi, jouCD, rno, ketto, tracdCD);
// データクラス
STSrc shinbaTime = new STSrc(
                        jouCD,
                        tracdCD,
                        rs.GetInt16("KYORI"),
                        rs.GetByte("TENKO"),
                        rs.GetByte("BABA"),
                        GetChichi(cmdU, ketto),
                        syoritsu.Kishu,
                        syoritsu.Chokyosi,
                        rs.GetFloat("SOUHA")
                        );
st.Add(shinbaTime);

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

var path = @"ShinbaTime.csv";
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = true
};
using (StreamWriter sw = new StreamWriter(path, false))
using (var csv = new CsvWriter(sw, config))
{
    csv.Context.RegisterClassMap<STTable>();

    csv.WriteRecords(st);
}

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

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

0 件のコメント:

コメントを投稿