pub fn lexsort(
columns: &[SortColumn],
limit: Option<usize>,
) -> Result<Vec<Arc<dyn Array>>, ArrowError>
Expand description
Sort a list of ArrayRef
using SortOptions
provided for each array.
Performs a stable lexicographical sort on values and indices.
Returns an ArrowError::ComputeError(String)
if any of the array type is either unsupported by
lexsort_to_indices
or take
.
Example:
let sorted_columns = lexsort(&vec![
SortColumn {
values: Arc::new(PrimitiveArray::<Int64Type>::from(vec![
None,
Some(-2),
Some(89),
Some(-64),
Some(101),
])) as ArrayRef,
options: None,
},
SortColumn {
values: Arc::new(StringArray::from(vec![
Some("hello"),
Some("world"),
Some(","),
Some("foobar"),
Some("!"),
])) as ArrayRef,
options: Some(SortOptions {
descending: true,
nulls_first: false,
}),
},
], None).unwrap();
assert_eq!(sorted_columns[0].as_primitive::<Int64Type>().value(1), -64);
assert!(sorted_columns[0].is_null(0));
Note: for multi-column sorts without a limit, using the row format may be significantly faster