From 9350711768ce21f79bf1f8735e771b1a90323303 Mon Sep 17 00:00:00 2001 From: Alexander Kolov Date: Tue, 4 Feb 2025 23:09:23 +0900 Subject: [PATCH 1/3] Add types --- .../src/DuckDBServerQuery.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/cubejs-duckdb-server-driver/src/DuckDBServerQuery.ts b/packages/cubejs-duckdb-server-driver/src/DuckDBServerQuery.ts index 93aba9ae7..949070d2e 100644 --- a/packages/cubejs-duckdb-server-driver/src/DuckDBServerQuery.ts +++ b/packages/cubejs-duckdb-server-driver/src/DuckDBServerQuery.ts @@ -1,4 +1,4 @@ -import { BaseFilter, BaseQuery } from '@cubejs-backend/schema-compiler'; +import { BaseFilter, BaseQuery, BaseTimeDimension } from '@cubejs-backend/schema-compiler'; const GRANULARITY_TO_INTERVAL: Record string> = { day: date => `DATE_TRUNC('day', ${date})`, @@ -29,19 +29,20 @@ export class DuckDBServerQuery extends BaseQuery { public runningTotalDateJoinCondition() { return this.timeDimensions.map( - d => [ + (d: BaseTimeDimension) => [ d, // eslint-disable-next-line @typescript-eslint/no-unused-vars - (dateFrom, dateTo, dateField, dimensionDateFrom, dimensionDateTo) => `${this.timeStampCast(dateField)} >= ${this.timeStampCast(dimensionDateFrom)} AND ${this.timeStampCast(dateField)} <= ${dateTo}` + (dateFrom: string, dateTo: string, dateField: string, dimensionDateFrom: string, dimensionDateTo: string) => `${this.timeStampCast(dateField)} >= ${this.timeStampCast(dimensionDateFrom)} AND ${this.timeStampCast(dateField)} <= ${dateTo}` ] ); } public rollingWindowToDateJoinCondition(granularity: string) { return this.timeDimensions.map( - d => [ + (d: BaseTimeDimension) => [ d, - (dateFrom, dateTo, dateField, dimensionDateFrom, dimensionDateTo, isFromStartToEnd) => `${this.timeStampCast(dateField)} >= ${this.timeGroupedColumn(granularity, dateFrom)} AND ${this.timeStampCast(dateField)} <= ${dateTo}` + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (dateFrom: string, dateTo: string, dateField: string, dimensionDateFrom: string, dimensionDateTo: string, isFromStartToEnd: string) => `${this.timeStampCast(dateField)} >= ${this.timeGroupedColumn(granularity, dateFrom)} AND ${this.timeStampCast(dateField)} <= ${dateTo}` ] ); } From 286e0641128d3235fc8a017d9aa6e304e71e2c0f Mon Sep 17 00:00:00 2001 From: Alexander Kolov Date: Tue, 4 Feb 2025 23:10:07 +0900 Subject: [PATCH 2/3] Remove dep --- packages/cubejs-duckdb-server-driver/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cubejs-duckdb-server-driver/package.json b/packages/cubejs-duckdb-server-driver/package.json index b5dba7fda..1add5676f 100644 --- a/packages/cubejs-duckdb-server-driver/package.json +++ b/packages/cubejs-duckdb-server-driver/package.json @@ -41,7 +41,6 @@ "@types/jest": "^27", "@types/node": "^18", "jest": "^27", - "ts-node": "^10.9.2", "typescript": "~5.2.2" }, "publishConfig": { From ed5f81da511ff05e4a064521cf207e5b9629d357 Mon Sep 17 00:00:00 2001 From: Alexander Kolov Date: Tue, 4 Feb 2025 23:41:34 +0900 Subject: [PATCH 3/3] override time range filter --- packages/cubejs-duckdb-driver/src/DuckDBQuery.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cubejs-duckdb-driver/src/DuckDBQuery.ts b/packages/cubejs-duckdb-driver/src/DuckDBQuery.ts index 96cd50a72..93dd17b5d 100644 --- a/packages/cubejs-duckdb-driver/src/DuckDBQuery.ts +++ b/packages/cubejs-duckdb-driver/src/DuckDBQuery.ts @@ -53,6 +53,7 @@ export class DuckDBQuery extends BaseQuery { templates.functions.DATETRUNC = 'DATE_TRUNC({{ args_concat }})'; templates.functions.LEAST = 'LEAST({{ args_concat }})'; templates.functions.GREATEST = 'GREATEST({{ args_concat }})'; + templates.filters.time_range_filter = '{{ column }}::timestamptz >= {{ from_timestamp }} AND {{ column }}::timestamptz <= {{ to_timestamp }}'; return templates; } }