pub fn lexsort<I: Index>(
columns: &[SortColumn<'_>],
limit: Option<usize>
) -> Result<Vec<Box<dyn Array>>>
Available on crate feature
compute_sort
only.Expand description
Sort a list of Array
using SortOptions
provided for each array.
Implementaqtion
The sort is stable and lexicographical on values.
Returns an Error
if any of the array type is either unsupported by
lexsort_to_indices
or take
.
Example:
use std::convert::From;
use arrow2::array::{Utf8Array, Int64Array, Array};
use arrow2::compute::sort::{SortColumn, SortOptions, lexsort};
use arrow2::datatypes::DataType;
let int64 = Int64Array::from(&[None, Some(-2), Some(89), Some(-64), Some(101)]);
let utf8 = Utf8Array::<i32>::from(&vec![Some("hello"), Some("world"), Some(","), Some("foobar"), Some("!")]);
let sorted_chunk = lexsort::<i32>(&vec![
SortColumn {
values: &int64,
options: None,
},
SortColumn {
values: &utf8,
options: Some(SortOptions {
descending: true,
nulls_first: false,
}),
},
], None).unwrap();
let sorted = sorted_chunk[0].as_any().downcast_ref::<Int64Array>().unwrap();
assert_eq!(sorted.value(1), -64);
assert!(sorted.is_null(0));