Skip to content

Commit a343f4d

Browse files
authored
fix(graphql): Pre-aggregations aren't used for GraphQL queries with date range (#6549)
* fix(graphql): Pre-aggregations aren't used for GraphQL queries with date range * Remove granularity in test
1 parent 274674d commit a343f4d

File tree

2 files changed

+15
-23
lines changed

2 files changed

+15
-23
lines changed

packages/cubejs-api-gateway/src/graphql.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -531,11 +531,10 @@ export function makeSchema(metaConfig: any): GraphQLSchema {
531531
filters = whereArgToQueryFilters(whereArg, cubeName).concat(filters);
532532
}
533533

534-
// Relative date ranges such as "last quarter" can only be used in
535-
// timeDimensions dateRange filter
534+
// Push down all inDateRange filters to time dimensions to leverage pre-aggregations
536535
const dateRangeFilters = {};
537536
filters = filters.filter((f) => {
538-
if (f.operator === 'inDateRange' && (typeof f.values === 'string' || f.values?.length === 1)) {
537+
if (f.operator === 'inDateRange' && !dateRangeFilters[f.member]) {
539538
dateRangeFilters[f.member] = f.values;
540539
return false;
541540
}

packages/cubejs-api-gateway/test/__snapshots__/graphql.test.ts.snap

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,6 @@ Object {
7373
"dimensions": Array [
7474
"Orders.createdAt",
7575
],
76-
"filters": Array [
77-
Object {
78-
"member": "Orders.createdAt",
79-
"operator": "inDateRange",
80-
"values": Array [
81-
"2022-01-01",
82-
"2022-02-01",
83-
],
84-
},
85-
],
8676
"measures": Array [
8777
"Orders.count",
8878
],
@@ -92,6 +82,15 @@ Object {
9282
"asc",
9383
],
9484
],
85+
"timeDimensions": Array [
86+
Object {
87+
"dateRange": Array [
88+
"2022-01-01",
89+
"2022-02-01",
90+
],
91+
"dimension": "Orders.createdAt",
92+
},
93+
],
9594
}
9695
`;
9796

@@ -110,16 +109,6 @@ exports[`GraphQL Schema GraphQL query 3: query CubeQuery {
110109
}
111110
} 1`] = `
112111
Object {
113-
"filters": Array [
114-
Object {
115-
"member": "Orders.createdAt",
116-
"operator": "inDateRange",
117-
"values": Array [
118-
"2022-01-01",
119-
"2022-02-01",
120-
],
121-
},
122-
],
123112
"measures": Array [
124113
"Orders.count",
125114
],
@@ -131,6 +120,10 @@ Object {
131120
],
132121
"timeDimensions": Array [
133122
Object {
123+
"dateRange": Array [
124+
"2022-01-01",
125+
"2022-02-01",
126+
],
134127
"dimension": "Orders.createdAt",
135128
"granularity": "day",
136129
},

0 commit comments

Comments
 (0)