Skip to content

Commit 412213c

Browse files
authored
fix: Internal: Error during planning: No field named for pre-aggregat… (#7554)
* fix: Internal: Error during planning: No field named for pre-aggregated rolling window query without granularity but with dimension * Update snapshots * Fix Cannot read properties of undefined * Fix Cannot read properties of undefined * Fix snapshot ordering
1 parent 401e9e1 commit 412213c

File tree

4 files changed

+97
-28
lines changed

4 files changed

+97
-28
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ export class CubeStoreQuery extends BaseQuery {
122122
const allMeasures = regularMeasures.concat(multipliedMeasures).concat(
123123
cumulativeMeasuresWithoutMultiplied
124124
);
125-
const timeDimension = this.timeDimensions.find(d => d.granularity);
125+
const timeDimension = this.timeDimensions.find(d => d.granularity || d.dateRange);
126+
const timeDimensionWithGranularity = timeDimension?.granularity ? timeDimension : null;
126127
const baseQueryAlias = this.cubeAlias('base');
127128
const maxRollingWindow = cumulativeMeasuresWithoutMultiplied.reduce((a, b) => this.maxRollingWindow(a, b.rollingWindowDefinition()), <RollingWindow><unknown>null);
128129
const commonDateCondition =
@@ -131,8 +132,8 @@ export class CubeStoreQuery extends BaseQuery {
131132
timeDimension?.dateRange && this.dateFromStartToEndConditionSql(commonDateCondition, true, true) || []
132133
);
133134
const rollupGranularity = this.preAggregations?.castGranularity(preAggregationForQuery.preAggregation.granularity) || 'day';
134-
const granularityOverride = timeDimension &&
135-
cumulativeMeasuresWithoutMultiplied.reduce((a, b) => this.minGranularity(a, b.windowGranularity()), timeDimension.granularity) || rollupGranularity;
135+
const granularityOverride = timeDimensionWithGranularity &&
136+
cumulativeMeasuresWithoutMultiplied.reduce((a, b) => this.minGranularity(a, b.windowGranularity()), timeDimensionWithGranularity.granularity) || rollupGranularity;
136137
return this.evaluateSymbolSqlWithContext(
137138
() => this.overTimeSeriesSelectRollup(
138139
cumulativeMeasuresWithoutMultiplied,
@@ -142,7 +143,7 @@ export class CubeStoreQuery extends BaseQuery {
142143
overTimeSeriesAggregate: true
143144
}),
144145
baseQueryAlias,
145-
timeDimension,
146+
timeDimensionWithGranularity,
146147
preAggregationForQuery
147148
),
148149
{

packages/cubejs-testing/test/__snapshots__/birdbox-postgresql-pre-aggregations.test.ts.snap

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22

33
exports[`postgresql-cubestore HTTP Transport Empty partitions: Empty partitions 1`] = `Array []`;
44

5+
exports[`postgresql-cubestore HTTP Transport Rolling Mixed With Dimension No Granularity: Rolling Mixed With Dimension No Granularity 1`] = `
6+
Array [
7+
Object {
8+
"visitors.checkinsRollingTotal": null,
9+
"visitors.source": null,
10+
},
11+
Object {
12+
"visitors.checkinsRollingTotal": null,
13+
"visitors.source": "some",
14+
},
15+
]
16+
`;
17+
518
exports[`postgresql-cubestore HTTP Transport Rolling Mixed With Dimension: Rolling Mixed With Dimension 1`] = `
619
Array [
720
Object {

packages/cubejs-testing/test/__snapshots__/cli-postgresql-pre-aggregations.test.ts.snap

Lines changed: 60 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,59 +2,72 @@
22

33
exports[`postgresql HTTP Transport Empty partitions: Empty partitions 1`] = `Array []`;
44

5+
exports[`postgresql HTTP Transport Rolling Mixed With Dimension No Granularity: Rolling Mixed With Dimension No Granularity 1`] = `
6+
Array [
7+
Object {
8+
"visitors.checkinsRollingTotal": null,
9+
"visitors.source": null,
10+
},
11+
Object {
12+
"visitors.checkinsRollingTotal": null,
13+
"visitors.source": "some",
14+
},
15+
]
16+
`;
17+
518
exports[`postgresql HTTP Transport Rolling Mixed With Dimension: Rolling Mixed With Dimension 1`] = `
619
Array [
720
Object {
821
"visitors.checkinsRolling2day": null,
9-
"visitors.checkinsRollingTotal": "0.0",
22+
"visitors.checkinsRollingTotal": "0",
1023
"visitors.count": null,
1124
"visitors.createdAt": "2017-01-02T00:00:00.000",
1225
"visitors.createdAt.day": "2017-01-02T00:00:00.000",
1326
"visitors.source": null,
1427
},
1528
Object {
1629
"visitors.checkinsRolling2day": null,
17-
"visitors.checkinsRollingTotal": "0.0",
30+
"visitors.checkinsRollingTotal": "0",
1831
"visitors.count": null,
1932
"visitors.createdAt": "2017-01-03T00:00:00.000",
2033
"visitors.createdAt.day": "2017-01-03T00:00:00.000",
2134
"visitors.source": null,
2235
},
2336
Object {
2437
"visitors.checkinsRolling2day": null,
25-
"visitors.checkinsRollingTotal": "0.0",
38+
"visitors.checkinsRollingTotal": "0",
2639
"visitors.count": null,
2740
"visitors.createdAt": "2017-01-04T00:00:00.000",
2841
"visitors.createdAt.day": "2017-01-04T00:00:00.000",
2942
"visitors.source": null,
3043
},
3144
Object {
3245
"visitors.checkinsRolling2day": null,
33-
"visitors.checkinsRollingTotal": "0.0",
46+
"visitors.checkinsRollingTotal": "0",
3447
"visitors.count": null,
3548
"visitors.createdAt": "2017-01-05T00:00:00.000",
3649
"visitors.createdAt.day": "2017-01-05T00:00:00.000",
3750
"visitors.source": null,
3851
},
3952
Object {
40-
"visitors.checkinsRolling2day": "3.0",
41-
"visitors.checkinsRollingTotal": "3.0",
53+
"visitors.checkinsRolling2day": "3",
54+
"visitors.checkinsRollingTotal": "3",
4255
"visitors.count": "1",
4356
"visitors.createdAt": "2017-01-03T00:00:00.000",
4457
"visitors.createdAt.day": "2017-01-03T00:00:00.000",
4558
"visitors.source": "some",
4659
},
4760
Object {
48-
"visitors.checkinsRolling2day": "3.0",
49-
"visitors.checkinsRollingTotal": "3.0",
61+
"visitors.checkinsRolling2day": "3",
62+
"visitors.checkinsRollingTotal": "3",
5063
"visitors.count": null,
5164
"visitors.createdAt": "2017-01-04T00:00:00.000",
5265
"visitors.createdAt.day": "2017-01-04T00:00:00.000",
5366
"visitors.source": "some",
5467
},
5568
Object {
56-
"visitors.checkinsRolling2day": "2.0",
57-
"visitors.checkinsRollingTotal": "5.0",
69+
"visitors.checkinsRolling2day": "2",
70+
"visitors.checkinsRollingTotal": "5",
5871
"visitors.count": "1",
5972
"visitors.createdAt": "2017-01-05T00:00:00.000",
6073
"visitors.createdAt.day": "2017-01-05T00:00:00.000",
@@ -67,75 +80,98 @@ exports[`postgresql HTTP Transport Rolling Mixed: Rolling Mixed 1`] = `
6780
Array [
6881
Object {
6982
"visitors.checkinsRolling2day": null,
70-
"visitors.checkinsRollingTotal": "0.0",
83+
"visitors.checkinsRollingTotal": "0",
7184
"visitors.count": null,
7285
"visitors.createdAt": "2017-01-02T00:00:00.000",
7386
"visitors.createdAt.day": "2017-01-02T00:00:00.000",
7487
},
7588
Object {
76-
"visitors.checkinsRolling2day": "3.0",
77-
"visitors.checkinsRollingTotal": "3.0",
89+
"visitors.checkinsRolling2day": "3",
90+
"visitors.checkinsRollingTotal": "3",
7891
"visitors.count": "1",
7992
"visitors.createdAt": "2017-01-03T00:00:00.000",
8093
"visitors.createdAt.day": "2017-01-03T00:00:00.000",
8194
},
8295
Object {
83-
"visitors.checkinsRolling2day": "3.0",
84-
"visitors.checkinsRollingTotal": "3.0",
96+
"visitors.checkinsRolling2day": "3",
97+
"visitors.checkinsRollingTotal": "3",
8598
"visitors.count": null,
8699
"visitors.createdAt": "2017-01-04T00:00:00.000",
87100
"visitors.createdAt.day": "2017-01-04T00:00:00.000",
88101
},
89102
Object {
90-
"visitors.checkinsRolling2day": "2.0",
91-
"visitors.checkinsRollingTotal": "5.0",
103+
"visitors.checkinsRolling2day": "2",
104+
"visitors.checkinsRollingTotal": "5",
92105
"visitors.count": "1",
93106
"visitors.createdAt": "2017-01-05T00:00:00.000",
94107
"visitors.createdAt.day": "2017-01-05T00:00:00.000",
95108
},
96109
]
97110
`;
98111

112+
exports[`postgresql HTTP Transport Rolling with Quarter granularity: Rolling with Quarter granularity 1`] = `
113+
Array [
114+
Object {
115+
"visitors.checkinsRollingTotal": "0",
116+
"visitors.createdAt": "2017-01-01T00:00:00.000",
117+
"visitors.createdAt.quarter": "2017-01-01T00:00:00.000",
118+
"visitors.source": null,
119+
},
120+
Object {
121+
"visitors.checkinsRollingTotal": "1",
122+
"visitors.createdAt": "2017-01-01T00:00:00.000",
123+
"visitors.createdAt.quarter": "2017-01-01T00:00:00.000",
124+
"visitors.source": "google",
125+
},
126+
Object {
127+
"visitors.checkinsRollingTotal": "5",
128+
"visitors.createdAt": "2017-01-01T00:00:00.000",
129+
"visitors.createdAt.quarter": "2017-01-01T00:00:00.000",
130+
"visitors.source": "some",
131+
},
132+
]
133+
`;
134+
99135
exports[`postgresql HTTP Transport Rolling: Rolling 1`] = `
100136
Array [
101137
Object {
102-
"visitors.checkinsRollingTotal": "0.0",
138+
"visitors.checkinsRollingTotal": "0",
103139
"visitors.createdAt": "2017-01-02T00:00:00.000",
104140
"visitors.createdAt.day": "2017-01-02T00:00:00.000",
105141
"visitors.source": null,
106142
},
107143
Object {
108-
"visitors.checkinsRollingTotal": "0.0",
144+
"visitors.checkinsRollingTotal": "0",
109145
"visitors.createdAt": "2017-01-03T00:00:00.000",
110146
"visitors.createdAt.day": "2017-01-03T00:00:00.000",
111147
"visitors.source": null,
112148
},
113149
Object {
114-
"visitors.checkinsRollingTotal": "0.0",
150+
"visitors.checkinsRollingTotal": "0",
115151
"visitors.createdAt": "2017-01-04T00:00:00.000",
116152
"visitors.createdAt.day": "2017-01-04T00:00:00.000",
117153
"visitors.source": null,
118154
},
119155
Object {
120-
"visitors.checkinsRollingTotal": "0.0",
156+
"visitors.checkinsRollingTotal": "0",
121157
"visitors.createdAt": "2017-01-05T00:00:00.000",
122158
"visitors.createdAt.day": "2017-01-05T00:00:00.000",
123159
"visitors.source": null,
124160
},
125161
Object {
126-
"visitors.checkinsRollingTotal": "3.0",
162+
"visitors.checkinsRollingTotal": "3",
127163
"visitors.createdAt": "2017-01-03T00:00:00.000",
128164
"visitors.createdAt.day": "2017-01-03T00:00:00.000",
129165
"visitors.source": "some",
130166
},
131167
Object {
132-
"visitors.checkinsRollingTotal": "3.0",
168+
"visitors.checkinsRollingTotal": "3",
133169
"visitors.createdAt": "2017-01-04T00:00:00.000",
134170
"visitors.createdAt.day": "2017-01-04T00:00:00.000",
135171
"visitors.source": "some",
136172
},
137173
Object {
138-
"visitors.checkinsRollingTotal": "5.0",
174+
"visitors.checkinsRollingTotal": "5",
139175
"visitors.createdAt": "2017-01-05T00:00:00.000",
140176
"visitors.createdAt.day": "2017-01-05T00:00:00.000",
141177
"visitors.source": "some",

packages/cubejs-testing/test/pre-aggregations-test-case.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,25 @@ const asserts: [options: QueryTestOptions, query: Query][] = [
9595
}
9696
}
9797
],
98+
[
99+
{ name: 'Rolling Mixed With Dimension No Granularity' },
100+
{
101+
measures: [
102+
'visitors.checkinsRollingTotal',
103+
],
104+
dimensions: [
105+
'visitors.source'
106+
],
107+
timezone: 'UTC',
108+
timeDimensions: [{
109+
dimension: 'visitors.createdAt',
110+
dateRange: ['2017-01-02', '2017-01-05']
111+
}],
112+
order: {
113+
'visitors.source': 'asc'
114+
}
115+
}
116+
],
98117
[
99118
{ name: 'Empty partitions' },
100119
{

0 commit comments

Comments
 (0)