1. 程式人生 > 實用技巧 >cube.js 新的預聚合層

cube.js 新的預聚合層

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 引擎了

參考資料

https://github.com/cube-js/cube.js/tree/master/rust