cube-js / cube-js/cube

Rollup Designer & Documentation Don't Match CubeValidator updateWindow Options

Open
#3,586 7 comments 1 reaction 0 assignees View on GitHub
help wanted pre-aggregations
Dominant language
Rust
Stars
20.8k
Forks
2.1k
Avg merge
1d 2h
Merged PRs (30d)
181

Description

**Describe the bug**
When I use the Rollup Designer or look at the documentation, it seems to indicate that we can use "month", "quarter", or "year" as an updateWindow time interval, however I get a compile error when I try to run this:

Error: Compile errors:
Main cube: (preAggregations.monthlyAggregation.refreshKey.updateWindow = 1 quarter) does not match regexp: /^(\d+) (second|minute|hour|day|week)s?$/
at ErrorReporter.throwIfAny (/home/bgiles/main.cubejs/node_modules/@cubejs-backend/schema-compiler/src/compiler/ErrorReporter.ts:127:13)
at DataSchemaCompiler.throwIfAnyErrors (/home/bgiles/main.cubejs/node_modules/@cubejs-backend/schema-compiler/src/compiler/DataSchemaCompiler.js:147:23)
at /home/bgiles/main.cubejs/node_modules/@cubejs-backend/schema-compiler/src/compiler/DataSchemaCompiler.js:67:16
at CompilerApi.metaConfig (/home/bgiles/main.cubejs/node_modules/@cubejs-backend/server-core/src/core/CompilerApi.js:142:13)
at ApiGateway.meta (/home/bgiles/main.cubejs/node_modules/@cubejs-backend/api-gateway/src/gateway.ts:474:26)
at /home/bgiles/main.cubejs/node_modules/@cubejs-backend/api-gateway/src/gateway.ts:319:7

The pre aggregation documentation also seems to also imply that these time intervals are valid options:
https://cube.dev/docs/schema/reference/pre-aggregations#granularity
https://cube.dev/docs/schema/reference/pre-aggregations#partition-granularity

Both the granularity and partitionGranularity parameters highlight that "month", "quarter", and "year" are valid time intervals and there's no specific list of options for updateWindow that would indicate a different list of options for this parameter.

**To Reproduce**
Steps to reproduce the behavior:
1. Set updateWindow on a pre aggregation to use "month", "quarter", or "year"

**Expected behavior**
"month", "quarter", and "year" time intervals are valid updateWindows.

**Screenshots**
![image](https://user-images.githubusercontent.com/84134451/138928240-fdafed20-9ff2-44a6-ac0b-37287e7601d8.png)

**Version:**
"@cubejs-backend/cubestore-driver": "0.28.49",
"@cubejs-backend/mssql-driver": "0.28.47",
"@cubejs-backend/server": "0.28.49"

**Additional context**
It looks like the validation fails here: https://github.com/cube-js/cube.js/blob/858b7fa2dbc5ed08350a6f875189f6f608c6d55c/packages/cubejs-schema-compiler/src/compiler/CubeValidator.js#L147
because everyInterval (https://github.com/cube-js/cube.js/blob/858b7fa2dbc5ed08350a6f875189f6f608c6d55c/packages/cubejs-schema-compiler/src/compiler/CubeValidator.js#L29-L35) does not include these time intervals in the regexp match. If it's as simple as updating this validation, then it should be an easy change, but I'm not sure whether these time intervals are actually implemented for updateWindow.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.