cube.js 目前扩展了原有pre-aggregation 处理层,基于rust 自己搞了一层新的存储处理,目前还没有ga
但是功能很不错,看到的是cube.js 团队打算自己基于rust 实现一个通用的底层基于apache arrow 的数据
格式处理,以前来说cube.js包含两类聚合处理内部的以及外部的聚合处理
参考
- 内部处理
cube(`Orders`, {
sql: `select * from orders where completed = true`,
preAggregations: {
main: {
type: `originalSql`
}
}
});
- 外部
cube(`Orders`, {
sql: `select * from orders`,
//...
preAggregations: {
categoryAndDate: {
type: `rollup`,
measureReferences: [Orders.count, revenue],
dimensionReferences: [category],
timeDimensionReference: createdAt,
granularity: `day`,
partitionGranularity: `month`,
external: true
}
}
});
说明
目前从代码上来看,cube.js 基于 rust 的新预聚合处理是基于mysql 协议包装的,底层基于apache arrow
进行存储,sql 解析基于sqlparser,同时依赖了msql-srv这样就可以包装成为一个mysql 引擎了