You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
To work with the value of a dictionary array at a particular index, the following pattern shows up many times in the arrow-rs and datafusion codebase:
fndo_something<K:ArrowDictionaryKeyType>(array:&ArrayRef,index:usize,) -> Result<Self>{let dict_array = array.as_any().downcast_ref::<DictionaryArray<K>>().unwrap();// look up the index in the values dictionarylet keys_col = dict_array.keys();let values_index = keys_col.value(index).to_usize().ok_or_else(|| {DataFusionError::Internal(format!("Can not convert index to usize in dictionary of type creating group by value {:?}",
keys_col.data_type()))})?;// do actual work with dict_array.values and values_index// ...}}
Repeating this code "find the index" code is tedious
Describe the solution you'd like
Add a function such as the following on to DictionaryArray (would love suggestions about better names):
implDictionaryArray<K:ArrowDictionaryKeyType>{// return the index into the dictionary values for array@index as well// as the dictionary values#[inline]fndict_value(self:index:usize,) -> Result<(&ArrayRef,Option<usize>)>{// look up the index in the values dictionarylet keys_col = self.keys();if !keyd_col.is_valid(index){returnOk((self.values(),None));}let values_index = keys_col.value(index).to_usize().ok_or_else(|| {DataFusionError::Internal(format!("Can not convert index to usize in dictionary of type creating group by value {:?}",
keys_col.data_type()))})?;Ok((self.values(),Some(values_index)))}
Describe alternatives you've considered
Additional context
The text was updated successfully, but these errors were encountered:
Closed by a combination of #2297 which added a strongly typed dictionary array accessor, and #2793 which removed the need for checked dictionary key conversions (they are already validated)
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
To work with the value of a dictionary array at a particular index, the following pattern shows up many times in the arrow-rs and datafusion codebase:
Repeating this code "find the index" code is tedious
Describe the solution you'd like
Add a function such as the following on to DictionaryArray (would love suggestions about better names):
Describe alternatives you've considered
Additional context
The text was updated successfully, but these errors were encountered: