📘 Cube.js Concepts Summary

Term Definition Example
Cube A logical model built on top of a database table or query. Each cube defines dimensions, measures, and joins. cube('Orders', { sql: 'SELECT * FROM orders' })
Measure A numeric value that can be aggregated (like sum, count, avg, etc.). type: 'sum', sql: 'amount'
Dimension A categorical field used to slice or group measures. type: 'string', sql: 'status'
Time Dimension A special dimension for date/time fields, used in filtering and pre-aggregation. type: 'time', sql: 'created_at'
Pre-aggregation A pre-computed summary table for faster query performance. type: 'rollup', measures: ['Orders.totalAmount'], granularity: 'day'
Granularity The level of time detail used in a pre-aggregation (day, month, week, etc.). granularity: 'month'
Rollup A type of pre-aggregation that summarizes data by selected measures and dimensions. type: 'rollup' with measures and dimensions
Refresh Key Tells Cube.js how often to refresh the pre-aggregated data. refreshKey: { every: '1 hour' }
Filter (in measure) Adds a condition to apply only to that measure. filters: [ { sql: 'status = \'completed\'' } ]
Join Allows combining data from multiple cubes (tables) based on a key relationship. joins: { Products: { relationship: 'belongsTo', sql: ... } }
Segment A reusable filter condition defined in a cube for convenience. segments: { completedOrders: { sql: 'status = \'completed\'' } }

🧠 Example Breakdown

measures: {
  totalSales: {
    sql: 'amount',
    type: 'sum'
  }
},
dimensions: {
  status: {
    sql: 'status',
    type: 'string'
  },
  createdAt: {
    sql: 'created_at',
    type: 'time'
  }
},
preAggregations: {
  dailySales: {
    type: 'rollup',
    measures: ['totalSales'],
    dimensions: ['status'],
    timeDimension: 'createdAt',
    granularity: 'day'
  }
}
Component What It Means
totalSales A measure: sum of amount
status A dimension: used to group sales
createdAt A time dimension: date when sale was created
dailySales A pre-aggregation (rollup): daily summary of sales by status

Written by A.M. Rinas