Skip to content

Commit 3c23d65

Browse files
committed
fix BigQuery Dialect
1 parent 979fc1e commit 3c23d65

File tree

1 file changed

+35
-10
lines changed

1 file changed

+35
-10
lines changed

packages/cubejs-schema-compiler/src/adapter/BigqueryQuery.ts

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)