Struct arrow::array::StringDictionaryBuilder[][src]

pub struct StringDictionaryBuilder<K> where
    K: ArrowDictionaryKeyType
{ /* fields omitted */ }
Expand description

Array builder for DictionaryArray that stores Strings. 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.

use arrow::{
  array::{
    Int8Array, StringArray,
    PrimitiveBuilder, StringBuilder, StringDictionaryBuilder,
  },
  datatypes::Int8Type,
};

// Create a dictionary array indexed by bytes whose values are Strings.
// It can thus hold up to 256 distinct string values.

let key_builder = PrimitiveBuilder::<Int8Type>::new(100);
let value_builder = StringBuilder::new(100);
let mut builder = StringDictionaryBuilder::new(key_builder, value_builder);

// The builder builds the dictionary value by value
builder.append("abc").unwrap();
builder.append_null().unwrap();
builder.append("def").unwrap();
builder.append("def").unwrap();
builder.append("abc").unwrap();
let array = builder.finish();

assert_eq!(
  array.keys(),
  &Int8Array::from(vec![Some(0), None, Some(1), Some(1), Some(0)])
);

// Values are polymorphic and so require a downcast.
let av = array.values();
let ava: &StringArray = av.as_any().downcast_ref::<StringArray>().unwrap();

assert_eq!(ava.value(0), "abc");
assert_eq!(ava.value(1), "def");

Implementations

Creates a new StringDictionaryBuilder from a keys builder and a value builder.

Creates a new StringDictionaryBuilder from a keys builder and a dictionary which is initialized with the given values. The indices of those dictionary values are used as keys.

Example

use arrow::datatypes::Int16Type;
use arrow::array::{StringArray, StringDictionaryBuilder, PrimitiveBuilder, Int16Array};
use std::convert::TryFrom;

let dictionary_values = StringArray::from(vec![None, Some("abc"), Some("def")]);

let mut builder = StringDictionaryBuilder::new_with_dictionary(PrimitiveBuilder::<Int16Type>::new(3), &dictionary_values).unwrap();
builder.append("def").unwrap();
builder.append_null().unwrap();
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)]));

Append a primitive 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.

Builds the DictionaryArray and reset this builder.

Trait Implementations

Returns the builder as an non-mutable Any reference.

Returns the builder as an mutable Any reference.

Returns the boxed builder as a box of Any.

Returns the number of array slots in the builder

Returns whether the number of array slots is zero

Builds the array and reset this builder.

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.