fix(schema-compiler): Resolve time dimension column names correctly in pre-aggregation index definitions #10370
+20
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix: Time dimension column names in pre-aggregation index definitions
Problem
When a time dimension (e.g.
publishedAt) is referenced in a pre-aggregation aggregate index'scolumns,evaluateIndexColumns()generates the wrong column name. The actual pre-aggregation table column isevents__published_at_day(single underscore before granularity), butevaluateIndexColumns()produces:events__published_at(no granularity suffix) when usingpublishedAtCubeStore rejects the index with
Column not foundbecause neither matches the actual table column.Root cause
BaseTimeDimension.unescapedAliasName()builds the table column asaliasName(dimension) + "_" + granularity(single underscore concatenation), butevaluateIndexColumns()had no awareness of time dimension granularities.Fix
Updated
evaluateIndexColumns()inBaseQuery.js:The pre-aggregation's
timeDimensionsreferences (containing both dimension path and granularity) are now passed intoevaluateIndexColumns(). When a column matches a time dimension,_${granularity}is appended.How to reproduce
Define a rollup pre-aggregation with an aggregate index that includes a time dimension: