Struct arrow_array::builder::UnionBuilder
source · pub struct UnionBuilder { /* private fields */ }
Expand description
Builder type for creating a new UnionArray
.
Example: Dense Memory Layout
let mut builder = UnionBuilder::new_dense();
builder.append::<Int32Type>("a", 1).unwrap();
builder.append::<Float64Type>("b", 3.0).unwrap();
builder.append::<Int32Type>("a", 4).unwrap();
let union = builder.build().unwrap();
assert_eq!(union.type_id(0), 0_i8);
assert_eq!(union.type_id(1), 1_i8);
assert_eq!(union.type_id(2), 0_i8);
assert_eq!(union.value_offset(0), 0_i32);
assert_eq!(union.value_offset(1), 0_i32);
assert_eq!(union.value_offset(2), 1_i32);
Example: Sparse Memory Layout
let mut builder = UnionBuilder::new_sparse();
builder.append::<Int32Type>("a", 1).unwrap();
builder.append::<Float64Type>("b", 3.0).unwrap();
builder.append::<Int32Type>("a", 4).unwrap();
let union = builder.build().unwrap();
assert_eq!(union.type_id(0), 0_i8);
assert_eq!(union.type_id(1), 1_i8);
assert_eq!(union.type_id(2), 0_i8);
assert_eq!(union.value_offset(0), 0_i32);
assert_eq!(union.value_offset(1), 1_i32);
assert_eq!(union.value_offset(2), 2_i32);
Implementations§
source§impl UnionBuilder
impl UnionBuilder
sourcepub fn new_sparse() -> Self
pub fn new_sparse() -> Self
Creates a new sparse array builder.
sourcepub fn with_capacity_dense(capacity: usize) -> Self
pub fn with_capacity_dense(capacity: usize) -> Self
Creates a new dense array builder with capacity.
sourcepub fn with_capacity_sparse(capacity: usize) -> Self
pub fn with_capacity_sparse(capacity: usize) -> Self
Creates a new sparse array builder with capacity.
sourcepub fn append_null<T: ArrowPrimitiveType>(
&mut self,
type_name: &str
) -> Result<(), ArrowError>
pub fn append_null<T: ArrowPrimitiveType>( &mut self, type_name: &str ) -> Result<(), ArrowError>
Appends a null to this builder, encoding the null in the array
of the type_name
child / field.
Since UnionArray
encodes nulls as an entry in its children
(it doesn’t have a validity bitmap itself), and where the null
is part of the final array, appending a NULL requires
specifying which field (child) to use.
sourcepub fn append<T: ArrowPrimitiveType>(
&mut self,
type_name: &str,
v: T::Native
) -> Result<(), ArrowError>
pub fn append<T: ArrowPrimitiveType>( &mut self, type_name: &str, v: T::Native ) -> Result<(), ArrowError>
Appends a value to this builder.
sourcepub fn build(self) -> Result<UnionArray, ArrowError>
pub fn build(self) -> Result<UnionArray, ArrowError>
Builds this builder creating a new UnionArray
.