38 releases (25 major breaking)
54.2.1 | Feb 27, 2025 |
---|---|
54.0.0 | Dec 23, 2024 |
53.4.1 | Mar 7, 2025 |
53.3.0 | Nov 20, 2024 |
29.0.0 | Dec 12, 2022 |
#304 in Data structures
1,832,525 downloads per month
Used in 532 crates
(18 directly)
3MB
57K
SLoC
Arrow ordering kernels
Sort RecordBatch
#
let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 3, 4]));
let b: ArrayRef = Arc::new(StringArray::from(vec!["b", "a", "e", "d"]));
let batch = RecordBatch::try_from_iter(vec![("a", a), ("b", b)]).unwrap();
// Sort by column 1
let indices = sort_to_indices(batch.column(1), None, None).unwrap();
// Apply indices to batch columns
let columns = batch.columns().iter().map(|c| take(&*c, &indices, None).unwrap()).collect();
let sorted = RecordBatch::try_new(batch.schema(), columns).unwrap();
let col1 = sorted.column(0).as_primitive::<Int32Type>();
assert_eq!(col1.values(), &[2, 1, 4, 3]);
Dependencies
~4–9.5MB
~82K SLoC