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 thecube.js
configuration file is replaced byqueryRewrite
-
A new environment variable
CUBEJS_REFRESH_WORKER
is introduced, which replacesCUBEJS_SCHEDULED_REFRESH_TIMER
-
A new environment variable
CUBEJS_ROLLUP_ONLY
is introduced, which ensures all requests only target pre-aggregations of typerollup
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 thetype
property, but we strongly recommend using rollups instead oforiginalSql
for most workloads. -
Pre-aggregation definitions now set the following as defaults:
external: true
andscheduledRefresh: true
-
refreshRangeStart
/refreshRangeEnd
to be replaced bybuildRangeStart
/buildRangeEnd
-
You can write
measureReferences
/dimensionReferences
/timeDimensionReference
asmeasures
/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
- Snowflake's HyperLogLog format
is now supported, which enables using
countDistinctApprox
-type measures in pre-aggregations - Improved CSV ingestion time through distributed processing
- Now supports
DATE_ADD
CONCAT
HAVING
COALESCE
- Decimal/float values
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.