micromegas_analytics/
arrow_utils.rs1use anyhow::{Context, Result};
2use bytes::Bytes;
3use datafusion::parquet::file::metadata::ParquetMetaDataReader;
4use datafusion::{
5 arrow::{
6 array::{ListBuilder, StructBuilder, as_struct_array},
7 record_batch::RecordBatch,
8 },
9 parquet::file::metadata::ParquetMetaData,
10};
11use micromegas_tracing::prelude::*;
12
13pub fn make_empty_record_batch() -> RecordBatch {
15 let mut list_builder = ListBuilder::new(StructBuilder::from_fields([], 0));
16 let array = list_builder.finish();
17 as_struct_array(array.values()).into()
18}
19
20#[span_fn]
22pub fn parse_parquet_metadata(bytes: &Bytes) -> Result<ParquetMetaData> {
23 ParquetMetaDataReader::decode_metadata(bytes).with_context(|| "parsing ParquetMetaData")
24}