Struct arrow::array::DictionaryArray
source · [−]pub struct DictionaryArray<K: ArrowPrimitiveType> { /* private fields */ }
Expand description
A dictionary array where each element is a single value indexed by an integer key. This is mostly used to represent strings or a limited set of primitive types as integers, for example when doing NLP analysis or representing chromosomes by name.
Example with nullable data:
use arrow::array::{DictionaryArray, Int8Array};
use arrow::datatypes::Int8Type;
let test = vec!["a", "a", "b", "c"];
let array : DictionaryArray<Int8Type> = test.iter().map(|&x| if x == "b" {None} else {Some(x)}).collect();
assert_eq!(array.keys(), &Int8Array::from(vec![Some(0), Some(0), None, Some(1)]));
Example without nullable data:
use arrow::array::{DictionaryArray, Int8Array};
use arrow::datatypes::Int8Type;
let test = vec!["a", "a", "b", "c"];
let array : DictionaryArray<Int8Type> = test.into_iter().collect();
assert_eq!(array.keys(), &Int8Array::from(vec![0, 0, 1, 2]));
Example from existing arrays:
use arrow::array::{DictionaryArray, Int8Array, StringArray};
use arrow::datatypes::Int8Type;
// You can form your own DictionaryArray by providing the
// values (dictionary) and keys (indexes into the dictionary):
let values = StringArray::from_iter_values(["a", "b", "c"]);
let keys = Int8Array::from_iter_values([0, 0, 1, 2]);
let array = DictionaryArray::<Int8Type>::try_new(&keys, &values).unwrap();
let expected: DictionaryArray::<Int8Type> = vec!["a", "a", "b", "c"]
.into_iter()
.collect();
assert_eq!(&array, &expected);
Implementations
sourceimpl<'a, K: ArrowPrimitiveType> DictionaryArray<K>
impl<'a, K: ArrowPrimitiveType> DictionaryArray<K>
sourcepub fn try_new(keys: &PrimitiveArray<K>, values: &dyn Array) -> Result<Self>
pub fn try_new(keys: &PrimitiveArray<K>, values: &dyn Array) -> Result<Self>
Attempt to create a new DictionaryArray with a specified keys (indexes into the dictionary) and values (dictionary) array. Returns an error if there are any keys that are outside of the dictionary array.
sourcepub fn keys(&self) -> &PrimitiveArray<K>
pub fn keys(&self) -> &PrimitiveArray<K>
Return an array view of the keys of this dictionary as a PrimitiveArray.
sourcepub fn lookup_key(&self, value: &str) -> Option<K::Native>
pub fn lookup_key(&self, value: &str) -> Option<K::Native>
Returns the lookup key by doing reverse dictionary lookup
sourcepub fn value_type(&self) -> DataType
pub fn value_type(&self) -> DataType
Returns a clone of the value type of this list.
sourcepub fn is_ordered(&self) -> bool
pub fn is_ordered(&self) -> bool
Currently exists for compatibility purposes with Arrow IPC.
Trait Implementations
sourceimpl<T: ArrowPrimitiveType> Array for DictionaryArray<T>
impl<T: ArrowPrimitiveType> Array for DictionaryArray<T>
sourcefn data_ref(&self) -> &ArrayData
fn data_ref(&self) -> &ArrayData
Returns a reference-counted pointer to the underlying data of this array.
sourcefn slice(&self, offset: usize, length: usize) -> ArrayRef
fn slice(&self, offset: usize, length: usize) -> ArrayRef
Returns a zero-copy slice of this array with the indicated offset and length. Read more
sourcefn offset(&self) -> usize
fn offset(&self) -> usize
Returns the offset into the underlying data used by this array(-slice).
Note that the underlying data can be shared by many arrays.
This defaults to 0
. Read more
sourcefn is_null(&self, index: usize) -> bool
fn is_null(&self, index: usize) -> bool
Returns whether the element at index
is null.
When using this function on a slice, the index is relative to the slice. Read more
sourcefn is_valid(&self, index: usize) -> bool
fn is_valid(&self, index: usize) -> bool
Returns whether the element at index
is not null.
When using this function on a slice, the index is relative to the slice. Read more
sourcefn null_count(&self) -> usize
fn null_count(&self) -> usize
Returns the total number of null values in this array. Read more
sourcefn get_buffer_memory_size(&self) -> usize
fn get_buffer_memory_size(&self) -> usize
Returns the total number of bytes of memory pointed to by this array. The buffers store bytes in the Arrow memory format, and include the data as well as the validity map. Read more
sourcefn get_array_memory_size(&self) -> usize
fn get_array_memory_size(&self) -> usize
Returns the total number of bytes of memory occupied physically by this array.
This value will always be greater than returned by get_buffer_memory_size()
and
includes the overhead of the data structures that contain the pointers to the various buffers. Read more
sourcefn to_raw(&self) -> Result<(*const FFI_ArrowArray, *const FFI_ArrowSchema)>
fn to_raw(&self) -> Result<(*const FFI_ArrowArray, *const FFI_ArrowSchema)>
returns two pointers that represent this array in the C Data Interface (FFI)
sourceimpl<T: ArrowPrimitiveType> Debug for DictionaryArray<T>
impl<T: ArrowPrimitiveType> Debug for DictionaryArray<T>
sourceimpl<T: ArrowPrimitiveType> From<ArrayData> for DictionaryArray<T>
impl<T: ArrowPrimitiveType> From<ArrayData> for DictionaryArray<T>
Constructs a DictionaryArray
from an array data reference.
sourceimpl<'a, T: ArrowPrimitiveType + ArrowDictionaryKeyType> FromIterator<&'a str> for DictionaryArray<T>
impl<'a, T: ArrowPrimitiveType + ArrowDictionaryKeyType> FromIterator<&'a str> for DictionaryArray<T>
Constructs a DictionaryArray
from an iterator of strings.
Example:
use arrow::array::{DictionaryArray, PrimitiveArray, StringArray};
use arrow::datatypes::Int8Type;
let test = vec!["a", "a", "b", "c"];
let array: DictionaryArray<Int8Type> = test.into_iter().collect();
assert_eq!(
"DictionaryArray {keys: PrimitiveArray<Int8>\n[\n 0,\n 0,\n 1,\n 2,\n] values: StringArray\n[\n \"a\",\n \"b\",\n \"c\",\n]}\n",
format!("{:?}", array)
);
sourcefn from_iter<I: IntoIterator<Item = &'a str>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = &'a str>>(iter: I) -> Self
Creates a value from an iterator. Read more
sourceimpl<'a, T: ArrowPrimitiveType + ArrowDictionaryKeyType> FromIterator<Option<&'a str>> for DictionaryArray<T>
impl<'a, T: ArrowPrimitiveType + ArrowDictionaryKeyType> FromIterator<Option<&'a str>> for DictionaryArray<T>
Constructs a DictionaryArray
from an iterator of optional strings.
Example:
use arrow::array::{DictionaryArray, PrimitiveArray, StringArray};
use arrow::datatypes::Int8Type;
let test = vec!["a", "a", "b", "c"];
let array: DictionaryArray<Int8Type> = test
.iter()
.map(|&x| if x == "b" { None } else { Some(x) })
.collect();
assert_eq!(
"DictionaryArray {keys: PrimitiveArray<Int8>\n[\n 0,\n 0,\n null,\n 1,\n] values: StringArray\n[\n \"a\",\n \"c\",\n]}\n",
format!("{:?}", array)
);
sourceimpl<T: ArrowPrimitiveType> JsonEqual for DictionaryArray<T>
impl<T: ArrowPrimitiveType> JsonEqual for DictionaryArray<T>
sourceimpl<K: ArrowPrimitiveType> PartialEq<DictionaryArray<K>> for DictionaryArray<K>
impl<K: ArrowPrimitiveType> PartialEq<DictionaryArray<K>> for DictionaryArray<K>
sourceimpl<T: ArrowPrimitiveType> PartialEq<DictionaryArray<T>> for Value
impl<T: ArrowPrimitiveType> PartialEq<DictionaryArray<T>> for Value
Auto Trait Implementations
impl<K> !RefUnwindSafe for DictionaryArray<K>
impl<K> Send for DictionaryArray<K>
impl<K> Sync for DictionaryArray<K>
impl<K> Unpin for DictionaryArray<K>
impl<K> !UnwindSafe for DictionaryArray<K>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more