sql >> Database teknologi >  >> RDS >> Mysql

Rust:Læs dataramme i polarer fra mysql

Samme svar som i dette spørgsmål , virker ret dobbelt IMO.

Du kan bruge bygherrerne til det eller indsamle fra iteratorer. Indsamling fra iteratorer er ofte hurtig, men i dette tilfælde kræver det, at du sløjfer Vec to gange, så du bør benchmarke.

Nedenfor er et eksempel på en funktion for begge de viste løsninger.

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(),
    )
}

Når du har fået Serien , kan du bruge DataFrame::new(columns) hvor kolonner:Vec for at oprette en DataFrame .

Btw, hvis du vil have maksimal ydeevne, anbefaler jeg virkelig connector-x . Den har fået polar- og pil-integration og har en sindssyg ydeevne.



  1. Npgsql med Pgbouncer på Kubernetes - pooling &keepalives

  2. Jeg har forskellige resultater fra forespørgsel for COUNT('e.id') eller COUNT(e.id)

  3. PL/SQL lagret procedure ud cursor til VBA ADODB.RecordSet?

  4. Send lejer-id via sql-serverforbindelse