@@ -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 ( (
@@ -1027,7 +1032,6 @@ export class PreAggregations {
10271032 // Moreover, for 'rollupJoin' pre-aggs this may lead to incorrect join graph construction,
10281033 // as it is being built using only flat hints from members, but not the pre-aggregation joins.
10291034 const targetJoins = this . resolveJoinMembers ( this . query . join ) ;
1030- // const targetJoins = this.resolveJoinMembers(this.query.joinGraph.buildJoin(this.cubesFromPreAggregation(preAggObj)));
10311035 const existingJoins = R . unnest ( preAggObjsToJoin . map (
10321036 // TODO join hints?
10331037 p => this . resolveJoinMembers ( this . query . joinGraph . buildJoin ( this . cubesFromPreAggregation ( p ) ) )
0 commit comments