v0.32

GitHub

Hello Cube Community, we're really excited to announce Cube v0.32 🎉

This new release brings the GraphQL API into general availability, adds a number of quality-of-life improvements to Cube SQL and adds significant performance boosts to Cube Store.

This release, we have 2 deprecations and 5 breaking changes:

Be sure to check the Deprecation document for more details.

  • Support for Node.js v12 and v15 has been dropped due to them reaching end-of-life. We strongly recommend upgrading to Node.js v16.

  • Absolute imports for the following packages have been removed. We now provide a public API from the package directly:

    • @cubejs-backend/query-orchestrator
    • @cubejs-backend/schema-compiler
    • @cubejs-backend/server-core
  • Cube Store is now the default cache and queue engine, replacing Redis. We've talked previously about how Cube Store will be replacing Redis, and this release makes it official 🎉

  • Support for Node.js v14 has been marked as deprecated due to it reaching end-of-life in April 2023. We strongly recommend upgrading to Node.js v16.

  • Using Cube with the Serverless Framework and the @cubejs-backend/serverless packages is now deprecated, we strongly recommend using Docker-based deployments or Cube Cloud instead.

Following on from the Lambda pre-aggregation support introduced in our last release, Cube now supports multiple rollups from the same cube in a rollupLambda definition.

The Cube CLI now lets you validate your models on your local machine - simply run npx cubejs-cli validate to check the models in your project for errors:

npx cubejs-cli validate
❌ Cube Schema validation failed

Cube Error ---------------------------------------

Orders cube: "dimensions.id" does not match any of the allowed types
Possible reasons (one of):
  * (dimensions.id.case) is required
  * (dimensions.id.latitude) is required
  * (dimensions.id.sql) is required
LineItems cube: Cube Orders doesn't exist

Need some help? -------------------------------------

  Ask this question in Cube Slack: https://slack.cube.dev
  Post an issue: https://github.com/cube-js/cube.js/issues

We've enabled readOnly: true as the default for the Clickhouse, MSSQL and Oracle drivers which lets Cube build pre-aggregations without creating temporary tables in those databases.

We're extremely excited to announce general availability of the GraphQL API in Cube. With this, the GraphQL API now fully supports variables, a much-requested (and much-needed) improvement:

import { gql } from '@apollo/client';

const getOrdersQuery = gql`
  query CubeQuery($orderBy: OrdersOrderByInput) {
    cube {
      orders(orderBy: $orderBy) {
        count
        status
      }
    }
  }
`;

const variables = {
  orderBy: {
    count: 'desc',
  },
};

client
  .query({
    query: getOrdersQuery,
    variables,
  })
  .then((result) => console.log(result));

Cube SQL continues to see quality-of-life improvements as well as enhanced support for even more SQL functions as selections and projections. Some examples of what we've improved this release include:

  • Support for CASE statements in Cube projections
  • Support for expressions like NOT(LOWER() IN)
  • Allow using CAST in HAVING clauses
  • Support for LEFT and RIGHT functions in projections
  • Support for NULLIF in projections
  • Allow using TO_DATE() in DATE_DIFF() expressions
  • Allow using DATE_TRUNC() in WHERE clauses

We hope that you find these helpful in your work with Cube SQL; please let us know if you have any feedback or suggestions by opening issues on our GitHub repository.

A huge thank you to each and every person who took the time to help us improve Cube 😁

Apologies to anyone who we forgot to mention; please get in touch and we'll make sure to add your name to the list 🙌

Did you find this page useful?