sql >> データベース >  >> RDS >> Mysql

Rust:mysqlから極座標でデータフレームを読み取る

    この質問と同じ回答 、IMOがかなり重複しているようです。

    そのためにビルダーを使用するか、イテレーターから収集することができます。多くの場合、イテレータからの収集は高速ですが、この場合、Vec<Country>をループする必要があります。 2回なので、ベンチマークを行う必要があります。

    以下は、示されている両方のソリューションの関数の例です。

    use polars::prelude::*;
    
    struct Country {
        country: String,
        count: i64,
    }
    
    fn example_1(values: &[Country]) -> (Series, Series) {
        let ca_country: Utf8Chunked = values.iter().map(|v| &*v.country).collect();
        let ca_count: NoNull<Int64Chunked> = values.iter().map(|v| v.count).collect();
        let mut s_country: Series = ca_country.into();
        let mut s_count: Series = ca_count.into_inner().into();
        s_country.rename("country");
        s_count.rename("country");
        (s_count, s_country)
    }
    
    fn example_2(values: &[Country]) -> (Series, Series) {
        let mut country_builder = Utf8ChunkedBuilder::new("country", values.len(), values.len() * 5);
        let mut count_builder = PrimitiveChunkedBuilder::<Int64Type>::new("count", values.len());
    
        values.iter().for_each(|v| {
            country_builder.append_value(&v.country);
            count_builder.append_value(v.count)
        });
    
        (
            count_builder.finish().into(),
            country_builder.finish().into(),
        )
    }
    

    Seriesを入手したら 、DataFrame::new(columns)を使用できます ここで、columns: Vec<Series> DataFrameを作成するには 。

    ところで、最大のパフォーマンスが必要な場合は、connector-x をお勧めします。 。極と矢印が統合されており、非常に優れたパフォーマンスを発揮します。



    1. SQL / MySQL:数量値を日付ごとに複数の行に分割

    2. mysqlとmariadbを使用した場合の異なる結果クエリ

    3. TEXT / BLOBを同じテーブルに格納するかどうか?

    4. MYSQLを介して文字列の括弧内のデータを抽出しようとしています