cube.js 新的預聚合層
阿新 • • 發佈:2020-12-30
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 引擎了