@@ -439,14 +439,14 @@ export class PreAggregations {
439439 static sortTimeDimensionsWithRollupGranularity ( timeDimensions ) {
440440 return timeDimensions && R . sortBy (
441441 R . prop ( 0 ) ,
442- timeDimensions . map ( d => [ d . expressionPath ( ) , d . rollupGranularity ( ) , d . granularityObj ?. minGranularity ( ) ] )
442+ timeDimensions . map ( d => [ d . expressionPath ( ) , d . rollupGranularity ( ) ] )
443443 ) || [ ] ;
444444 }
445445
446446 static timeDimensionsAsIs ( timeDimensions ) {
447447 return timeDimensions && R . sortBy (
448448 R . prop ( 0 ) ,
449- timeDimensions . map ( d => [ d . expressionPath ( ) , d . resolvedGranularity ( ) , d . granularityObj ?. minGranularity ( ) ] ) ,
449+ timeDimensions . map ( d => [ d . expressionPath ( ) , d . resolvedGranularity ( ) ] ) ,
450450 ) || [ ] ;
451451 }
452452
@@ -536,9 +536,7 @@ export class PreAggregations {
536536 backAlias ( references . sortedTimeDimensions || sortTimeDimensions ( references . timeDimensions ) ) ;
537537 const qryTimeDimensions = references . allowNonStrictDateRangeMatch
538538 ? transformedQuery . timeDimensions
539- : transformedQuery . sortedTimeDimensions . map ( t => t . slice ( 0 , 2 ) ) ;
540- // slices above/below are used to exclude granularity on 3rd position returned from sortTimeDimensionsWithRollupGranularity()
541- const qryDimensions = transformedQuery . timeDimensions . map ( t => t . slice ( 0 , 2 ) ) ;
539+ : transformedQuery . sortedTimeDimensions ;
542540 const backAliasMeasures = backAlias ( references . measures ) ;
543541 const backAliasSortedDimensions = backAlias ( references . sortedDimensions || references . dimensions ) ;
544542 const backAliasDimensions = backAlias ( references . dimensions ) ;
@@ -550,7 +548,7 @@ export class PreAggregations {
550548 R . equals ( qryTimeDimensions , refTimeDimensions )
551549 ) && (
552550 transformedQuery . isAdditive ||
553- R . equals ( qryDimensions , refTimeDimensions )
551+ R . equals ( transformedQuery . timeDimensions , refTimeDimensions )
554552 ) && (
555553 filterDimensionsSingleValueEqual &&
556554 references . dimensions . length === filterDimensionsSingleValueEqual . size &&
@@ -566,28 +564,14 @@ export class PreAggregations {
566564
567565 /**
568566 * Expand granularity into array of granularity hierarchy.
569- * resolvedGranularity might be a custom granularity name, in this case
570- * we insert it into all expanded hierarchies using its minimal granularity passed
571- * as minGranularity param
572- * @param {string } resolvedGranularity
573- * @param {string } minGranularity
567+ * @param {string } dimension Dimension in the form of `cube.timeDimension`
568+ * @param {string } granularity Granularity
574569 * @returns {Array<string> }
575570 */
576- const expandGranularity = ( resolvedGranularity , minGranularity ) => {
577- if ( ! resolvedGranularity ) {
578- return [ ] ;
579- }
580-
581- let predefinedHierarchy = transformedQuery . granularityHierarchies [ resolvedGranularity ] ;
582-
583- if ( predefinedHierarchy ) {
584- return predefinedHierarchy ;
585- }
586-
587- predefinedHierarchy = transformedQuery . granularityHierarchies [ minGranularity ] ;
588- // Custom granularity should be the first in list for exact match hit
589- return [ resolvedGranularity , ...predefinedHierarchy ] ;
590- } ;
571+ const expandGranularity = ( dimension , granularity ) => (
572+ transformedQuery . granularityHierarchies [ `${ dimension } .${ granularity } ` ] ||
573+ [ granularity ]
574+ ) ;
591575
592576 /**
593577 * Determine whether time dimensions match to the window granularity or not.
@@ -602,15 +586,15 @@ export class PreAggregations {
602586 references . sortedTimeDimensions ||
603587 sortTimeDimensions ( references . timeDimensions ) ;
604588
605- return expandGranularity ( transformedQuery . windowGranularity )
606- . map (
607- windowGranularity => R . all (
608- td => td [ 1 ] === windowGranularity ,
609- sortedTimeDimensions ,
589+ return sortedTimeDimensions
590+ . map ( td => expandGranularity ( td [ 0 ] , transformedQuery . windowGranularity ) )
591+ . some (
592+ expandedGranularities => expandedGranularities . some (
593+ windowGranularity => sortedTimeDimensions . every (
594+ td => td [ 1 ] === windowGranularity
595+ )
610596 )
611- )
612- . filter ( x => ! ! x )
613- . length > 0 ;
597+ ) ;
614598 } ;
615599
616600 /**
@@ -619,8 +603,8 @@ export class PreAggregations {
619603 * @returns {Array<Array<string>> }
620604 */
621605 const expandTimeDimension = ( timeDimension ) => {
622- const [ dimension , resolvedGranularity , minGranularity ] = timeDimension ;
623- return expandGranularity ( resolvedGranularity , minGranularity )
606+ const [ dimension , resolvedGranularity ] = timeDimension ;
607+ return expandGranularity ( dimension , resolvedGranularity )
624608 . map ( ( newGranularity ) => [ dimension , newGranularity ] ) ;
625609 } ;
626610
0 commit comments