pub struct ShreddingState {
value: ArrayRef,
typed_value: Option<ArrayRef>,
}Expand description
Represents the shredding state of a VariantArray
VariantArrays can be shredded according to the Parquet Variant
Shredding Spec. Shredding means that the actual value is stored in a typed
typed_field instead of the generic value field.
The value column is always present (the spec requires writers to emit
it); typed_value is optional. Values in the two columns must be
interpreted according to the following table (see Parquet Variant
Shredding Spec for more details):
| value | typed_value | Meaning |
|---|---|---|
| NULL | NULL | The value is missing; only valid for shredded object fields |
| non-NULL | NULL | The value is present and may be any type, including [Variant::Null] |
| NULL | non-NULL | The value is present and is the shredded type |
| non-NULL | non-NULL | The value is present and is a partially shredded object |
Applying the above rules to entire columns, we obtain the following:
| value | typed_value | Meaning |
|---|---|---|
| exists | – | Unshredded: If present, the value may be any type, including [Variant::Null] |
| exists | exists | Shredded: perfectly if value is all-null, otherwise imperfectly |
Note the spec requires the value column to always be present in the
schema; structs without one are rejected
(see https://github.com/apache/arrow-rs/issues/10306).
NOTE: Partial shredding is a row-wise situation that can arise under imperfect shredding (a column-wise situation): When both columns exist (imperfect shredding) and the typed_value column is a struct, then both columns can be non-NULL for the same row if value is a variant object (partial shredding).
Fields§
§value: ArrayRef§typed_value: Option<ArrayRef>Implementations§
Source§impl ShreddingState
impl ShreddingState
Sourcepub fn new(value: ArrayRef, typed_value: Option<ArrayRef>) -> Self
pub fn new(value: ArrayRef, typed_value: Option<ArrayRef>) -> Self
Create a new ShreddingState from the given value and typed_value fields
Note you can create a ShreddingState from a &[StructArray] using
ShreddingState::try_from(&struct_array), for example:
let struct_array: StructArray = get_struct_array();
let shredding_state = ShreddingState::try_from(&struct_array).unwrap();Sourcepub fn value_column(&self) -> &ArrayRef
pub fn value_column(&self) -> &ArrayRef
Return a reference to the value column
Sourcepub fn typed_value_column(&self) -> Option<&ArrayRef>
pub fn typed_value_column(&self) -> Option<&ArrayRef>
Return a reference to the typed_value column, if present
Trait Implementations§
Source§impl Clone for ShreddingState
impl Clone for ShreddingState
Source§fn clone(&self) -> ShreddingState
fn clone(&self) -> ShreddingState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more