11import moment from 'moment-timezone' ;
2- import { parseSqlInterval } from '@cubejs-backend/shared' ;
2+ import { parseSqlInterval , getEnv } from '@cubejs-backend/shared' ;
33import { BaseQuery } from './BaseQuery' ;
44import { BaseFilter } from './BaseFilter' ;
55import { BaseMeasure } from './BaseMeasure' ;
@@ -30,6 +30,13 @@ type RollingWindow = {
3030} ;
3131
3232export class CubeStoreQuery extends BaseQuery {
33+ private readonly cubeStoreRollingWindowJoin : boolean ;
34+
35+ public constructor ( compilers , options ) {
36+ super ( compilers , options ) ;
37+ this . cubeStoreRollingWindowJoin = getEnv ( 'cubeStoreRollingWindowJoin' ) ;
38+ }
39+
3340 public newFilter ( filter ) {
3441 return new CubeStoreFilter ( this , filter ) ;
3542 }
@@ -55,10 +62,16 @@ export class CubeStoreQuery extends BaseQuery {
5562 }
5663
5764 public subtractInterval ( date : string , interval : string ) {
65+ if ( this . cubeStoreRollingWindowJoin ) {
66+ return super . subtractInterval ( date , interval ) ;
67+ }
5868 return `DATE_SUB(${ date } , INTERVAL ${ this . formatInterval ( interval ) } )` ;
5969 }
6070
6171 public addInterval ( date : string , interval : string ) {
72+ if ( this . cubeStoreRollingWindowJoin ) {
73+ return super . addInterval ( date , interval ) ;
74+ }
6275 return `DATE_ADD(${ date } , INTERVAL ${ this . formatInterval ( interval ) } )` ;
6376 }
6477
@@ -179,7 +192,7 @@ export class CubeStoreQuery extends BaseQuery {
179192 cumulativeMeasures : Array < [ boolean , BaseMeasure ] > ,
180193 preAggregationForQuery : any
181194 ) {
182- if ( ! cumulativeMeasures . length ) {
195+ if ( this . cubeStoreRollingWindowJoin || ! cumulativeMeasures . length ) {
183196 return super . regularAndTimeSeriesRollupQuery ( regularMeasures , multipliedMeasures , cumulativeMeasures , preAggregationForQuery ) ;
184197 }
185198 const cumulativeMeasuresWithoutMultiplied = cumulativeMeasures . map ( ( [ _ , measure ] ) => measure ) ;
0 commit comments