Cube Core v0.28 release includes tons of goodies for developers in the form of Playground, not to mention incredible improvements to Cube Store and a raft of reliability improvements to our database drivers.

Breaking changes and deprecations

Only one deprecation this release:

  • Redis configuration variables are all now prefixed with CUBEJS_. This is part of an ongoing process to cleanly separate and mark environment variables used by Cube.

Be sure to check the Deprecation document for more details on the above.

Server

  • The queryTransformer property in the cube.js configuration file is replaced by queryRewrite

  • A new environment variable CUBEJS_REFRESH_WORKER is introduced, which replaces CUBEJS_SCHEDULED_REFRESH_TIMER

  • A new environment variable CUBEJS_ROLLUP_ONLY is introduced, which ensures all requests only target pre-aggregations of type rollup and that your database is not invoked

  • Partition evaluation responsibilities have been moved from the schema compiler to the query orchestrator. This allows all time queries for partitioned rollups and fixes querying issues beyond a rollup's build range. This is also the first step towards rolling window rollups being supported 🎉

  • Run timer refresh keys in Cube Store instead of your source database. This means the source database is now free of those pesky refresh SQL queries spamming the query log 😎

  • The database connection wizard works in both Node and Docker-based installs

Schema

  • The default type for pre-aggregations is now rollup. This can still be overridden by explicitly specifying the type property, but we strongly recommend using rollups instead of originalSql for most workloads.

  • Pre-aggregation definitions now set the following as defaults: external: true and scheduledRefresh: true

  • refreshRangeStart/refreshRangeEnd to be replaced by buildRangeStart/buildRangeEnd

  • You can write measureReferences/dimensionReferences/timeDimensionReference as measures/dimensions/timeDimension.

Drivers

We're working our way through the supported drivers so that Cube.js doesn't talk to your database any more than is necessary. To this end, the following drivers now default to readOnly: true automatically:

  • ElasticSearch
  • MySQL
  • Postgres

Pre-aggregations

We've been cranking out improvements to pre-aggregations too, here are the highlights:

  • Cube Store is now the default storage for external pre-aggregations in new projects
  • Batching is now also supported for
    • BigQuery
    • Clickhouse
    • MongoDB
    • MySQL (now in readOnly: true as well)
  • Export bucket is now also supported for
    • Redshift (on S3)
    • Snowflake (now on GCS as well as S3)

Cube Store

Playground

We have so many improvements here that we're really excited to share with you all:

  • You can now search for dimensions and measures. The members are also grouped by cube, which makes it easy-as-pie to pick out the ones you want.

  • A long-requested item on our agenda has been Vue 3 support, which is now available.

  • You can now have multiple tabs with their own queries in the Developer Playground - super useful when you want to keep queries at-hand without needing a separate instance of the Playground open

  • The brand new Rollup Designer makes creating pre-aggregations an absolute treat.