Skip to content

Commit a90cdee

Browse files
committed
fix canUsePreAggregationNotAdditive
1 parent ce7420c commit a90cdee

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

packages/cubejs-schema-compiler/src/adapter/PreAggregations.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -653,13 +653,13 @@ export class PreAggregations {
653653
* Determine whether pre-aggregation can be used or not.
654654
*/
655655
const canUsePreAggregationNotAdditive: CanUsePreAggregationFn = (references: PreAggregationReferences): boolean => {
656-
const refTimeDimensions = backAlias(sortTimeDimensions(references.timeDimensions));
657656
const qryTimeDimensions = references.allowNonStrictDateRangeMatch
658657
? transformedQuery.timeDimensions
659658
: transformedQuery.sortedTimeDimensions;
660659

661660
let dimsToMatch: string[];
662661
let measToMatch: string[];
662+
let timeDimsToMatch: PreAggregationTimeDimensionReference[];
663663

664664
if (references.rollups.length > 0) {
665665
// In 'rollupJoin' / 'rollupLambda' pre-aggregations fullName members will be empty, because there are
@@ -673,14 +673,19 @@ export class PreAggregations {
673673
dimsToMatch = references.rollupsReferences
674674
.flatMap(rolRef => rolRef.fullNameDimensions)
675675
.filter(d => references.dimensions.some(rd => d.endsWith(rd)));
676+
timeDimsToMatch = references.rollupsReferences
677+
.flatMap(rolRef => rolRef.fullNameTimeDimensions)
678+
.filter(d => references.timeDimensions.some(rd => d.dimension.endsWith(rd.dimension)));
676679
measToMatch = references.rollupsReferences
677680
.flatMap(rolRef => rolRef.fullNameMeasures)
678681
.filter(m => references.measures.some(rm => m.endsWith(rm)));
679682
} else {
680683
dimsToMatch = references.fullNameDimensions;
684+
timeDimsToMatch = references.fullNameTimeDimensions;
681685
measToMatch = references.fullNameMeasures;
682686
}
683687

688+
const refTimeDimensions = backAlias(sortTimeDimensions(timeDimsToMatch));
684689
const backAliasMeasures = backAlias(measToMatch);
685690
const backAliasDimensions = backAlias(dimsToMatch);
686691
return ((
@@ -1043,7 +1048,6 @@ export class PreAggregations {
10431048
preAggJoinsJoinHints.concat(this.cubesFromPreAggregation(preAggObj))
10441049
)
10451050
);
1046-
// const targetJoins = this.resolveJoinMembers(this.query.joinGraph.buildJoin(this.cubesFromPreAggregation(preAggObj)));
10471051
const existingJoins = R.unnest(preAggObjsToJoin.map(
10481052
// TODO join hints?
10491053
p => this.resolveJoinMembers(this.query.joinGraph.buildJoin(this.cubesFromPreAggregation(p)))

0 commit comments

Comments
 (0)