@@ -65,6 +65,40 @@ export type PreAggregationFilters = {
6565 scheduled ?: boolean ,
6666} ;
6767
68+ type PreAggregationDefinition = {
69+ allowNonStrictDateRangeMatch ?: boolean ,
70+ timeDimensionReference ?: ( ) => { toString ( ) : string } ,
71+ granularity : string ,
72+ timeDimensionReferences : Array < { dimension : ( ) => { toString ( ) : string } , granularity : string } > ,
73+ dimensionReferences : ( ) => Array < { toString ( ) : string } > ,
74+ segmentReferences : ( ) => Array < { toString ( ) : string } > ,
75+ measureReferences : ( ) => Array < { toString ( ) : string } > ,
76+ rollupReferences : ( ) => Array < { toString ( ) : string } > ,
77+ } ;
78+
79+ type PreAggregationTimeDimensionReference = {
80+ dimension : string ,
81+ granularity : string ,
82+ } ;
83+
84+ type PreAggregationReferences = {
85+ allowNonStrictDateRangeMatch ?: boolean ,
86+ dimensions : Array < string > ,
87+ measures : Array < string > ,
88+ timeDimensions : Array < PreAggregationTimeDimensionReference > ,
89+ rollups : Array < string > ,
90+ } ;
91+
92+ type PreAggregationInfo = {
93+ id : string ,
94+ preAggregationName : string ,
95+ preAggregation : unknown ,
96+ cube : string ,
97+ references : PreAggregationReferences ,
98+ refreshKey : unknown ,
99+ indexesReferences : unknown ,
100+ } ;
101+
68102export class CubeEvaluator extends CubeSymbols {
69103 public evaluatedCubes : Record < string , any > = { } ;
70104
@@ -492,7 +526,7 @@ export class CubeEvaluator extends CubeSymbols {
492526 /**
493527 * Returns pre-aggregations filtered by the specified selector.
494528 */
495- public preAggregations ( filter : PreAggregationFilters ) {
529+ public preAggregations ( filter : PreAggregationFilters ) : Array < PreAggregationInfo > {
496530 const { scheduled, dataSources, cubes, preAggregationIds } = filter || { } ;
497531 const idFactory = ( { cube, preAggregationName } ) => `${ cube } .${ preAggregationName } ` ;
498532
@@ -510,7 +544,7 @@ export class CubeEvaluator extends CubeSymbols {
510544 )
511545 )
512546 ) )
513- . map ( cube => {
547+ . flatMap ( cube => {
514548 const preAggregations = this . preAggregationsForCube ( cube ) ;
515549 return Object . keys ( preAggregations )
516550 . filter (
@@ -547,11 +581,10 @@ export class CubeEvaluator extends CubeSymbols {
547581 } , { } )
548582 } ;
549583 } ) ;
550- } )
551- . reduce ( ( a , b ) => a . concat ( b ) , [ ] ) ;
584+ } ) ;
552585 }
553586
554- public scheduledPreAggregations ( ) {
587+ public scheduledPreAggregations ( ) : Array < PreAggregationInfo > {
555588 return this . preAggregations ( { scheduled : true } ) ;
556589 }
557590
@@ -704,8 +737,8 @@ export class CubeEvaluator extends CubeSymbols {
704737 return { cubeReferencesUsed, pathReferencesUsed, evaluatedSql } ;
705738 }
706739
707- protected evaluatePreAggregationReferences ( cube , aggregation ) {
708- const timeDimensions : any = [ ] ;
740+ protected evaluatePreAggregationReferences ( cube : string , aggregation : PreAggregationDefinition ) : PreAggregationReferences {
741+ const timeDimensions : Array < PreAggregationTimeDimensionReference > = [ ] ;
709742
710743 if ( aggregation . timeDimensionReference ) {
711744 timeDimensions . push ( {
0 commit comments