@@ -216,14 +216,26 @@ export class BigqueryQuery extends BaseQuery {
216216 * joining conditions (note timeStampCast)
217217 */
218218 public override rollingWindowToDateJoinCondition ( granularity ) {
219- return this . timeDimensions
220- . filter ( td => td . granularity )
221- . map (
222- d => [
223- d ,
224- ( dateFrom : string , dateTo : string , dateField : string , _dimensionDateFrom : string , _dimensionDateTo : string , _isFromStartToEnd : boolean ) => `${ dateField } >= ${ this . timeGroupedColumn ( granularity , dateFrom ) } AND ${ dateField } <= ${ this . timeStampCast ( dateTo ) } `
225- ]
226- ) ;
219+ return Object . values (
220+ this . timeDimensions . reduce ( ( acc , td ) => {
221+ const key = td . dimension ;
222+
223+ if ( ! acc [ key ] ) {
224+ acc [ key ] = td ;
225+ }
226+
227+ if ( ! acc [ key ] . granularity && td . granularity ) {
228+ acc [ key ] = td ;
229+ }
230+
231+ return acc ;
232+ } , { } )
233+ ) . map (
234+ d => [
235+ d ,
236+ ( dateFrom : string , dateTo : string , dateField : string , _dimensionDateFrom : string , _dimensionDateTo : string , _isFromStartToEnd : boolean ) => `${ dateField } >= ${ this . timeGroupedColumn ( granularity , dateFrom ) } AND ${ dateField } <= ${ this . timeStampCast ( dateTo ) } `
237+ ]
238+ ) ;
227239 }
228240
229241 /**
@@ -233,8 +245,21 @@ export class BigqueryQuery extends BaseQuery {
233245 */
234246 public override rollingWindowDateJoinCondition ( trailingInterval , leadingInterval , offset ) {
235247 offset = offset || 'end' ;
236- return this . timeDimensions
237- . filter ( td => td . granularity )
248+ return Object . values (
249+ this . timeDimensions . reduce ( ( acc , td ) => {
250+ const key = td . dimension ;
251+
252+ if ( ! acc [ key ] ) {
253+ acc [ key ] = td ;
254+ }
255+
256+ if ( ! acc [ key ] . granularity && td . granularity ) {
257+ acc [ key ] = td ;
258+ }
259+
260+ return acc ;
261+ } , { } )
262+ )
238263 . map (
239264 d => [ d , ( dateFrom : string , dateTo : string , dateField : string , _dimensionDateFrom : string , _dimensionDateTo : string , isFromStartToEnd : boolean ) => {
240265 // dateFrom based window
0 commit comments