MCPcopy Create free account
hub / github.com/apache/arrow-rs / parse

Function parse

arrow-csv/src/reader/mod.rs:682–935  ·  view source on GitHub ↗

Parses a slice of [`StringRecords`] into a [RecordBatch]

(
    rows: &StringRecords<'_>,
    fields: &Fields,
    metadata: Option<std::collections::HashMap<String, String>>,
    projection: Option<&Vec<usize>>,
    line_number: usize,
    null_regex: &Null

Source from the content-addressed store, hash-verified

680
681/// Parses a slice of [`StringRecords`] into a [RecordBatch]
682fn parse(
683 rows: &StringRecords<'_>,
684 fields: &Fields,
685 metadata: Option<std::collections::HashMap<String, String>>,
686 projection: Option<&Vec<usize>>,
687 line_number: usize,
688 null_regex: &NullRegex,
689) -> Result<RecordBatch, ArrowError> {
690 let projection: Vec<usize> = match projection {
691 Some(v) => v.clone(),
692 None => fields.iter().enumerate().map(|(i, _)| i).collect(),
693 };
694
695 let arrays: Result<Vec<ArrayRef>, _> = projection
696 .iter()
697 .map(|i| {
698 let i = *i;
699 let field = &fields[i];
700 match field.data_type() {
701 DataType::Boolean => build_boolean_array(line_number, rows, i, null_regex),
702 DataType::Decimal32(precision, scale) => build_decimal_array::<Decimal32Type>(
703 line_number,
704 rows,
705 i,
706 *precision,
707 *scale,
708 null_regex,
709 ),
710 DataType::Decimal64(precision, scale) => build_decimal_array::<Decimal64Type>(
711 line_number,
712 rows,
713 i,
714 *precision,
715 *scale,
716 null_regex,
717 ),
718 DataType::Decimal128(precision, scale) => build_decimal_array::<Decimal128Type>(
719 line_number,
720 rows,
721 i,
722 *precision,
723 *scale,
724 null_regex,
725 ),
726 DataType::Decimal256(precision, scale) => build_decimal_array::<Decimal256Type>(
727 line_number,
728 rows,
729 i,
730 *precision,
731 *scale,
732 null_regex,
733 ),
734 DataType::Int8 => {
735 build_primitive_array::<Int8Type>(line_number, rows, i, null_regex)
736 }
737 DataType::Int16 => {
738 build_primitive_array::<Int16Type>(line_number, rows, i, null_regex)
739 }

Callers 15

flushMethod · 0.70
build_primitive_arrayFunction · 0.70
criterion_benchmarkFunction · 0.50
parse_formattedMethod · 0.50
parseMethod · 0.50
parse_interval_day_timeFunction · 0.50
parse_date32Function · 0.50
test_interval_precisionFunction · 0.50
parse_string_iterFunction · 0.50

Calls 14

build_boolean_arrayFunction · 0.85
collectMethod · 0.80
and_thenMethod · 0.80
with_row_countMethod · 0.80
cloneMethod · 0.45
iterMethod · 0.45
data_typeMethod · 0.45
append_nullsMethod · 0.45
lenMethod · 0.45
finishMethod · 0.45
getMethod · 0.45

Tested by 6

parse_date32Function · 0.40
test_interval_precisionFunction · 0.40
mainFunction · 0.40
mainFunction · 0.40
mainFunction · 0.40