Skip to content

Adds schemaVersion for cube to automatically detect schema change

Surabhi Suman requested to merge update-cube-schema into main

What does this MR do and why?

This adds a schema version to cube definition so that data model can be recompiled for dynamic funnels.

Relates to: gitlab-org/gitlab#460034 (closed)

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

Before After

How to set up and validate locally

  1. Run cube in production mode by setting CUBEJS_DEV_MODE to false and cacheAndQueueDriver option in cube config to memory. Run docker compose up.

  2. Create a new funnel or update existing funnel by making an api call to /funnel-schemas endpoint in configurator

    POST http://{analytics-configurator-endpoint}/funnel-schemas
    Authorization: Basic [AUTH_USERNAME] [AUTH_PASSWORD]
    Content-Type: application/json
    
    {
      "project_ids": ["gitlab_project_20001"],
      "funnels": [
        {
          "name": "completed_purchase",
          "schema": "SELECT (SELECT max(derived_tstamp) FROM gitlab_project_20001.snowplow_events) as x, windowFunnel(3600)(toDateTime(derived_tstamp), page_urlpath = ''/page1.html'', page_urlpath = ''/page2.html'') as step FROM gitlab_project_20001.snowplow_events",
          "state": "created"
        }
      ]
    }

    OR

    Run GDK locally. Create a new funnel in any repository.

  3. Make an API call to cubejs /v1/meta endpoint to see the cube schema defined. It should have the new cube funnel schema definition.

  4. Try updating/deleting a funnel too. It should be reflected immediately in the cubes (/v1/meta) endpoint without a restart.

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Surabhi Suman

Merge request reports