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));