fix(schema-compiler): Preserve full time buckets in period-over-perio… #9502
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(schema-compiler): Preserve Full Time Buckets in Period-over-Period Queries
This PR replaces
INNER JOIN
withLEFT JOIN
when stitching sub-queries inouterMeasuresJoinFullKeyQueryAggregate
, ensuring all expected time buckets appear when calculating period-over-period (PoP) metrics.Problem
When PoP queries used
INNER JOIN
, buckets missing from auxiliary sub-queries (q_1
,q_2
, ...) were dropped causing incomplete results or incorrect ratios.Solution
Use
LEFT JOIN
instead, preserving all keys from the anchor query (q_0
). Missing values in auxiliary queries yieldNULL
rather than removing the row entirely.Benefits
Tests
sales
cube withdate
,category
,region
, and PoP measuresCAGR
: AddedNULL
rowsmulti-stage graph
tests: Added secondary orderingThese tests ensure the correct number of periods appear and that PoP measures return
NULL
instead of dropping rows when previous-period values are unavailable.Check List
resolves #9353