Ideally we'll expose statistics as Arrow; this is much simpler to use. Ref #313
However, it doesn't yet work for struct columns, ref apache/arrow-rs#7364
#[pyo3(signature = (column_name, *, missing_null_counts_as_zero=true))]
fn statistics(
&self,
column_name: &str,
missing_null_counts_as_zero: bool,
) -> Arro3IoResult<Arro3RecordBatch> {
let parquet_meta = self.meta.metadata();
let converter = StatisticsConverter::try_new(
column_name,
self.meta.schema(),
self.meta.parquet_schema(),
)?
.with_missing_null_counts_as_zero(missing_null_counts_as_zero);
let min_values = converter.row_group_mins(parquet_meta.row_groups())?;
let max_values = converter.row_group_maxes(parquet_meta.row_groups())?;
let null_counts = converter.row_group_null_counts(parquet_meta.row_groups())?;
let schema = Arc::new(Schema::new(vec![
Field::new("min", min_values.data_type().clone(), true),
Field::new("max", max_values.data_type().clone(), true),
Field::new("null_count", null_counts.data_type().clone(), true),
]));
let record_batch =
RecordBatch::try_new(schema, vec![min_values, max_values, Arc::new(null_counts)])?;
Ok(record_batch.into())
}
fn page_statistics(&self) {
todo!()
}
def statistics(
self, column_name: str, *, missing_null_counts_as_zero: bool = True
) -> core.RecordBatch: ...
Ideally we'll expose statistics as Arrow; this is much simpler to use. Ref #313
However, it doesn't yet work for struct columns, ref apache/arrow-rs#7364