Expand description
Defines push-based APIs for constructing arrays
§Basic Usage
Builders can be used to build simple, non-nested arrays
let mut a = Int32Builder::new();
a.append_value(1);
a.append_null();
a.append_value(2);
let a = a.finish();
assert_eq!(a, PrimitiveArray::from(vec![Some(1), None, Some(2)]));let mut a = StringBuilder::new();
a.append_value("foo");
a.append_value("bar");
a.append_null();
let a = a.finish();
assert_eq!(a, StringArray::from_iter([Some("foo"), Some("bar"), None]));§Nested Usage
Builders can also be used to build more complex nested arrays, such as lists
let mut a = ListBuilder::new(Int32Builder::new());
// [1, 2]
a.values().append_value(1);
a.values().append_value(2);
a.append(true);
// null
a.append(false);
// []
a.append(true);
// [3, null]
a.values().append_value(3);
a.values().append_null();
a.append(true);
// [[1, 2], null, [], [3, null]]
let a = a.finish();
assert_eq!(a, ListArray::from_iter_primitive::<Int32Type, _, _>([
Some(vec![Some(1), Some(2)]),
None,
Some(vec![]),
Some(vec![Some(3), None])]
))§Custom Builders
It is common to have a collection of statically defined Rust types that you want to convert to Arrow arrays.
An example of doing so is below
/// A custom row representation
struct MyRow {
i32: i32,
optional_i32: Option<i32>,
string: Option<String>,
i32_list: Option<Vec<Option<i32>>>,
}
/// Converts `Vec<Row>` into `StructArray`
#[derive(Debug, Default)]
struct MyRowBuilder {
i32: Int32Builder,
string: StringBuilder,
i32_list: ListBuilder<Int32Builder>,
}
impl MyRowBuilder {
fn append(&mut self, row: &MyRow) {
self.i32.append_value(row.i32);
self.string.append_option(row.string.as_ref());
self.i32_list.append_option(row.i32_list.as_ref().map(|x| x.iter().copied()));
}
/// Note: returns StructArray to allow nesting within another array if desired
fn finish(&mut self) -> StructArray {
let i32 = Arc::new(self.i32.finish()) as ArrayRef;
let i32_field = Arc::new(Field::new("i32", DataType::Int32, false));
let string = Arc::new(self.string.finish()) as ArrayRef;
let string_field = Arc::new(Field::new("i32", DataType::Utf8, false));
let i32_list = Arc::new(self.i32_list.finish()) as ArrayRef;
let value_field = Arc::new(Field::new("item", DataType::Int32, true));
let i32_list_field = Arc::new(Field::new("i32_list", DataType::List(value_field), true));
StructArray::from(vec![
(i32_field, i32),
(string_field, string),
(i32_list_field, i32_list),
])
}
}
impl<'a> Extend<&'a MyRow> for MyRowBuilder {
fn extend<T: IntoIterator<Item = &'a MyRow>>(&mut self, iter: T) {
iter.into_iter().for_each(|row| self.append(row));
}
}
/// Converts a slice of [`MyRow`] to a [`RecordBatch`]
fn rows_to_batch(rows: &[MyRow]) -> RecordBatch {
let mut builder = MyRowBuilder::default();
builder.extend(rows);
RecordBatch::from(&builder.finish())
}Structs§
- Boolean
Buffer Builder - Builder for
BooleanBuffer - Boolean
Builder - Builder for
BooleanArray - Buffer
Builder - Builder for creating a Buffer object.
- Fixed
Size Binary Builder - Builder for
FixedSizeBinaryArray - Fixed
Size List Builder - Builder for
FixedSizeListArray - Generic
Byte Builder - Builder for
GenericByteArray - Generic
Byte Dictionary Builder - Builder for
DictionaryArrayofGenericByteArray - Generic
Byte RunBuilder - Builder for
RunArrayofGenericByteArray - Generic
Byte View Builder - A builder for
GenericByteViewArray - Generic
List Builder - Builder for
GenericListArray - MapBuilder
- Builder for
MapArray - MapField
Names - The
Fieldnames for aMapArray - Null
Builder - Builder for
NullArray - Primitive
Builder - Builder for
PrimitiveArray - Primitive
Dictionary Builder - Builder for
DictionaryArrayofPrimitiveArray - Primitive
RunBuilder - Builder for
RunArrayofPrimitiveArray - Struct
Builder - Builder for
StructArray - Union
Builder - Builder for
UnionArray
Traits§
- Array
Builder - Trait for dealing with different array builders at runtime
Functions§
- make_
builder - Returns a builder with capacity for
capacityelements of datatypeDataType. - make_
view - Create a view based on the given data, block id and offset.
Type Aliases§
- Binary
Builder - Builder for
BinaryArray - Binary
Dictionary Builder - Builder for
DictionaryArrayofBinaryArray - Binary
RunBuilder - Builder for
RunArrayofBinaryArray - Binary
View Builder - Array builder for
BinaryViewArray - Date32
Buffer Builder - Buffer builder for 32-bit date type.
- Date32
Builder - A 32-bit date array builder.
- Date64
Buffer Builder - Buffer builder for 64-bit date type.
- Date64
Builder - A 64-bit date array builder.
- Decimal128
Buffer Builder - Buffer builder for 128-bit decimal type.
- Decimal128
Builder - A decimal 128 array builder
- Decimal256
Buffer Builder - Buffer builder for 256-bit decimal type.
- Decimal256
Builder - A decimal 256 array builder
- Duration
Microsecond Buffer Builder - Buffer builder for elaspsed time of microseconds unit.
- Duration
Microsecond Builder - An elapsed time in microseconds array builder.
- Duration
Millisecond Buffer Builder - Buffer builder for elaspsed time of milliseconds unit.
- Duration
Millisecond Builder - An elapsed time in milliseconds array builder.
- Duration
Nanosecond Buffer Builder - Buffer builder for elaspsed time of nanoseconds unit.
- Duration
Nanosecond Builder - An elapsed time in nanoseconds array builder.
- Duration
Second Buffer Builder - Buffer builder for elaspsed time of second unit.
- Duration
Second Builder - An elapsed time in seconds array builder.
- Float16
Buffer Builder - Buffer builder for 16-bit floating point type.
- Float16
Builder - A 16-bit floating point array builder.
- Float32
Buffer Builder - Buffer builder for 32-bit floating point type.
- Float32
Builder - A 32-bit floating point array builder.
- Float64
Buffer Builder - Buffer builder for 64-bit floating point type.
- Float64
Builder - A 64-bit floating point array builder.
- Generic
Binary Builder - Array builder for
GenericBinaryArray - Generic
String Builder - Array builder for
GenericStringArray - Int8
Buffer Builder - Buffer builder for signed 8-bit integer type.
- Int8
Builder - A signed 8-bit integer array builder.
- Int16
Buffer Builder - Buffer builder for signed 16-bit integer type.
- Int16
Builder - A signed 16-bit integer array builder.
- Int32
Buffer Builder - Buffer builder for signed 32-bit integer type.
- Int32
Builder - A signed 32-bit integer array builder.
- Int64
Buffer Builder - Buffer builder for signed 64-bit integer type.
- Int64
Builder - A signed 64-bit integer array builder.
- Interval
DayTime Buffer Builder - Buffer builder for “calendar” interval in days and milliseconds.
- Interval
DayTime Builder - A “calendar” interval in days and milliseconds array builder.
- Interval
Month DayNano Buffer Builder - Buffer builder “calendar” interval in months, days, and nanoseconds.
- Interval
Month DayNano Builder - A “calendar” interval in months, days, and nanoseconds array builder.
- Interval
Year Month Buffer Builder - Buffer builder for “calendar” interval in months.
- Interval
Year Month Builder - A “calendar” interval in months array builder.
- Large
Binary Builder - Builder for
LargeBinaryArray - Large
Binary Dictionary Builder - Builder for
DictionaryArrayofLargeBinaryArray - Large
Binary RunBuilder - Builder for
RunArrayofLargeBinaryArray - Large
List Builder - Builder for
LargeListArray - Large
String Builder - Builder for
LargeStringArray - Large
String Dictionary Builder - Builder for
DictionaryArrayofLargeStringArray - Large
String RunBuilder - Builder for
RunArrayofLargeStringArray - List
Builder - Builder for
ListArray - String
Builder - Builder for
StringArray - String
Dictionary Builder - Builder for
DictionaryArrayofStringArray - String
RunBuilder - Builder for
RunArrayofStringArray - String
View Builder - Array builder for
StringViewArray - Time32
Millisecond Buffer Builder - Buffer builder for 32-bit elaspsed time since midnight of millisecond unit.
- Time32
Millisecond Builder - A 32-bit elaspsed time in milliseconds array builder.
- Time32
Second Buffer Builder - Buffer builder for 32-bit elaspsed time since midnight of second unit.
- Time32
Second Builder - A 32-bit elaspsed time in seconds array builder.
- Time64
Microsecond Buffer Builder - Buffer builder for 64-bit elaspsed time since midnight of microsecond unit.
- Time64
Microsecond Builder - A 64-bit elaspsed time in microseconds array builder.
- Time64
Nanosecond Buffer Builder - Buffer builder for 64-bit elaspsed time since midnight of nanosecond unit.
- Time64
Nanosecond Builder - A 64-bit elaspsed time in nanoseconds array builder.
- Timestamp
Microsecond Buffer Builder - Buffer builder for timestamp type of microsecond unit.
- Timestamp
Microsecond Builder - A timestamp microsecond array builder.
- Timestamp
Millisecond Buffer Builder - Buffer builder for timestamp type of millisecond unit.
- Timestamp
Millisecond Builder - A timestamp millisecond array builder.
- Timestamp
Nanosecond Buffer Builder - Buffer builder for timestamp type of nanosecond unit.
- Timestamp
Nanosecond Builder - A timestamp nanosecond array builder.
- Timestamp
Second Buffer Builder - Buffer builder for timestamp type of second unit.
- Timestamp
Second Builder - A timestamp second array builder.
- UInt8
Buffer Builder - Buffer builder for usigned 8-bit integer type.
- UInt8
Builder - An usigned 8-bit integer array builder.
- UInt16
Buffer Builder - Buffer builder for usigned 16-bit integer type.
- UInt16
Builder - An usigned 16-bit integer array builder.
- UInt32
Buffer Builder - Buffer builder for usigned 32-bit integer type.
- UInt32
Builder - An usigned 32-bit integer array builder.
- UInt64
Buffer Builder - Buffer builder for usigned 64-bit integer type.
- UInt64
Builder - An usigned 64-bit integer array builder.