pub struct GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,{
state: RandomState,
dedup: HashTable<usize>,
keys_builder: PrimitiveBuilder<K>,
values_builder: GenericByteBuilder<T>,
}
Expand description
Builder for DictionaryArray
of GenericByteArray
For example to map a set of byte indices to String values. Note that
the use of a HashMap
here will not scale to very large arrays or
result in an ordered dictionary.
Fields§
§state: RandomState
§dedup: HashTable<usize>
§keys_builder: PrimitiveBuilder<K>
§values_builder: GenericByteBuilder<T>
Implementations§
Source§impl<K, T> GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
impl<K, T> GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
Sourcepub fn with_capacity(
keys_capacity: usize,
value_capacity: usize,
data_capacity: usize,
) -> Self
pub fn with_capacity( keys_capacity: usize, value_capacity: usize, data_capacity: usize, ) -> Self
Creates a new GenericByteDictionaryBuilder
with the provided capacities
keys_capacity
: the number of keys, i.e. length of array to build
value_capacity
: the number of distinct dictionary values, i.e. size of dictionary
data_capacity
: the total number of bytes of all distinct bytes in the dictionary
Sourcepub fn new_with_dictionary(
keys_capacity: usize,
dictionary_values: &GenericByteArray<T>,
) -> Result<Self, ArrowError>
pub fn new_with_dictionary( keys_capacity: usize, dictionary_values: &GenericByteArray<T>, ) -> Result<Self, ArrowError>
Creates a new GenericByteDictionaryBuilder
from a keys capacity and a dictionary
which is initialized with the given values.
The indices of those dictionary values are used as keys.
§Example
let dictionary_values = StringArray::from(vec![None, Some("abc"), Some("def")]);
let mut builder = StringDictionaryBuilder::new_with_dictionary(3, &dictionary_values).unwrap();
builder.append("def").unwrap();
builder.append_null();
builder.append("abc").unwrap();
let dictionary_array = builder.finish();
let keys = dictionary_array.keys();
assert_eq!(keys, &Int16Array::from(vec![Some(2), None, Some(1)]));
Source§impl<K, T> GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
impl<K, T> GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
fn get_or_insert_key( &mut self, value: impl AsRef<T::Native>, ) -> Result<K::Native, ArrowError>
Sourcepub fn append(
&mut self,
value: impl AsRef<T::Native>,
) -> Result<K::Native, ArrowError>
pub fn append( &mut self, value: impl AsRef<T::Native>, ) -> Result<K::Native, ArrowError>
Append a value to the array. Return an existing index if already present in the values array or a new index if the value is appended to the values array.
Returns an error if the new index would overflow the key type.
Sourcepub fn append_n(
&mut self,
value: impl AsRef<T::Native>,
count: usize,
) -> Result<K::Native, ArrowError>
pub fn append_n( &mut self, value: impl AsRef<T::Native>, count: usize, ) -> Result<K::Native, ArrowError>
Append a value multiple times to the array.
This is the same as append
but allows to append the same value multiple times without doing multiple lookups.
Returns an error if the new index would overflow the key type.
Sourcepub fn append_value(&mut self, value: impl AsRef<T::Native>)
pub fn append_value(&mut self, value: impl AsRef<T::Native>)
Infallibly append a value to this builder
§Panics
Panics if the resulting length of the dictionary values array would exceed T::Native::MAX
Sourcepub fn append_values(&mut self, value: impl AsRef<T::Native>, count: usize)
pub fn append_values(&mut self, value: impl AsRef<T::Native>, count: usize)
Infallibly append a value to this builder repeatedly count
times.
This is the same as append_value
but allows to append the same value multiple times without doing multiple lookups.
§Panics
Panics if the resulting length of the dictionary values array would exceed T::Native::MAX
Sourcepub fn append_null(&mut self)
pub fn append_null(&mut self)
Appends a null slot into the builder
Sourcepub fn append_nulls(&mut self, n: usize)
pub fn append_nulls(&mut self, n: usize)
Infallibly append n
null slots into the builder
Sourcepub fn append_option(&mut self, value: Option<impl AsRef<T::Native>>)
pub fn append_option(&mut self, value: Option<impl AsRef<T::Native>>)
Append an Option
value into the builder
§Panics
Panics if the resulting length of the dictionary values array would exceed T::Native::MAX
Sourcepub fn append_options(
&mut self,
value: Option<impl AsRef<T::Native>>,
count: usize,
)
pub fn append_options( &mut self, value: Option<impl AsRef<T::Native>>, count: usize, )
Append an Option
value into the builder repeatedly count
times.
This is the same as append_option
but allows to append the same value multiple times without doing multiple lookups.
§Panics
Panics if the resulting length of the dictionary values array would exceed T::Native::MAX
Sourcepub fn finish(&mut self) -> DictionaryArray<K>
pub fn finish(&mut self) -> DictionaryArray<K>
Builds the DictionaryArray
and reset this builder.
Sourcepub fn finish_cloned(&self) -> DictionaryArray<K>
pub fn finish_cloned(&self) -> DictionaryArray<K>
Builds the DictionaryArray
without resetting the builder.
Sourcepub fn validity_slice(&self) -> Option<&[u8]>
pub fn validity_slice(&self) -> Option<&[u8]>
Returns the current null buffer as a slice
Trait Implementations§
Source§impl<K, T> ArrayBuilder for GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
impl<K, T> ArrayBuilder for GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Returns the builder as an mutable Any
reference.
Source§fn finish_cloned(&self) -> ArrayRef
fn finish_cloned(&self) -> ArrayRef
Builds the array without resetting the builder.
Source§impl<K, T> Debug for GenericByteDictionaryBuilder<K, T>
impl<K, T> Debug for GenericByteDictionaryBuilder<K, T>
Source§impl<K, T> Default for GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
impl<K, T> Default for GenericByteDictionaryBuilder<K, T>where
K: ArrowDictionaryKeyType,
T: ByteArrayType,
Source§impl<K: ArrowDictionaryKeyType, T: ByteArrayType, V: AsRef<T::Native>> Extend<Option<V>> for GenericByteDictionaryBuilder<K, T>
impl<K: ArrowDictionaryKeyType, T: ByteArrayType, V: AsRef<T::Native>> Extend<Option<V>> for GenericByteDictionaryBuilder<K, T>
Source§fn extend<I: IntoIterator<Item = Option<V>>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = Option<V>>>(&mut self, iter: I)
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)