Expand description
ElastiCube Core Library
A high-performance, embeddable OLAP cube builder and query library built on Apache Arrow.
§Features
- Columnar Storage: Efficient field-by-field storage using Apache Arrow
- No Pre-Aggregation: Query raw data with dynamic aggregations
- Multi-Source: Combine data from CSV, Parquet, JSON, and custom sources
- Fast: Near C-level performance with parallel query execution
§Example
ⓘ
use elasticube_core::{ElastiCubeBuilder, AggFunc};
#[tokio::main]
async fn main() -> Result<()> {
let cube = ElastiCubeBuilder::new()
.add_dimension("region", DataType::Utf8)
.add_measure("sales", DataType::Float64, AggFunc::Sum)
.load_csv("data.csv")?
.build()?;
let results = cube.query()
.select(&["region", "sum(sales)"])
.group_by(&["region"])
.execute()
.await?;
Ok(())
}Re-exports§
pub use builder::ElastiCubeBuilder;pub use cache::CacheStats;pub use cache::QueryCache;pub use cache::QueryCacheKey;pub use cube::AggFunc;pub use cube::CalculatedMeasure;pub use cube::CubeSchema;pub use cube::Dimension;pub use cube::ElastiCube;pub use cube::Hierarchy;pub use cube::Measure;pub use cube::VirtualDimension;pub use error::Error;pub use error::Result;pub use optimization::ColumnStatistics;pub use optimization::CubeStatistics;pub use optimization::OptimizationConfig;pub use query::QueryBuilder;pub use query::QueryResult;pub use sources::CsvSource;pub use sources::DataSource;pub use sources::JsonSource;pub use sources::ParquetSource;pub use sources::RecordBatchSource;
Modules§
- builder
- ElastiCube builder for constructing cubes
- cache
- Query result caching for improved performance
- cube
- Core ElastiCube data structures
- error
- Error types for ElastiCube
- optimization
- Performance optimization features for ElastiCube
- query
- Query API for ElastiCube
- sources
- Data source connectors for ElastiCube
- storage
- Storage backend for ElastiCube data