Skip to content

Commit 235ec70

Browse files
authored
fix: Rollups are sorted by name in rollups params of pre-aggregations (#6011)
1 parent 83906a7 commit 235ec70

File tree

3 files changed

+30
-13
lines changed

3 files changed

+30
-13
lines changed

packages/cubejs-schema-compiler/src/compiler/CubeEvaluator.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ export class CubeEvaluator extends CubeSymbols {
445445
aggregation.measureReferences && this.evaluateReferences(cube, aggregation.measureReferences) || [],
446446
timeDimensions,
447447
rollups:
448-
aggregation.rollupReferences && this.evaluateReferences(cube, aggregation.rollupReferences) || [],
448+
aggregation.rollupReferences && this.evaluateReferences(cube, aggregation.rollupReferences, { originalSorting: true }) || [],
449449
};
450450
}
451451
}

packages/cubejs-testing/birdbox-fixtures/lambda/schema/Orders.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ cube(`Orders`, {
1010

1111
ordersByCompletedAtLambda: {
1212
type: `rollupLambda`,
13-
rollups: [ordersByCompletedAt, ordersByCompletedByDay],
13+
rollups: [ordersByCompletedAt, ordersByCompletedByDay, AOrdersByCompletedByHour],
1414
unionWithSourceData: true,
1515
},
1616

@@ -66,6 +66,23 @@ cube(`Orders`, {
6666
buildRangeStart: {
6767
sql: `SELECT DATE('2020-05-1')`,
6868
},
69+
buildRangeEnd: {
70+
sql: `SELECT DATE('2020-05-5')`,
71+
},
72+
refreshKey: {
73+
every: '1 day'
74+
},
75+
},
76+
77+
AOrdersByCompletedByHour: {
78+
measures: [count],
79+
dimensions: [status],
80+
timeDimension: completedAt,
81+
granularity: `day`,
82+
partitionGranularity: `hour`,
83+
buildRangeStart: {
84+
sql: `SELECT DATE('2020-05-5')`,
85+
},
6986
buildRangeEnd: {
7087
sql: `SELECT DATE('2020-05-7')`,
7188
},

packages/cubejs-testing/test/smoke-lambda.test.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,28 +32,27 @@ async function checkCubestoreState(cubestore: any) {
3232
expect(rows.slice(0, 4)).toEqual([
3333
{
3434
table_schema: 'dev_pre_aggregations',
35-
table_name: 'orders_orders_by_completed_at20200201',
36-
build_range_end: '2020-02-29T23:59:59.999Z',
35+
table_name: 'orders__a_orders_by_completed_by_hour2020050500',
36+
build_range_end: '2020-05-05T00:59:59.999Z',
3737
},
3838
{
3939
table_schema: 'dev_pre_aggregations',
40-
table_name: 'orders_orders_by_completed_at20200301',
41-
build_range_end: '2020-03-31T23:59:59.999Z',
40+
table_name: 'orders__a_orders_by_completed_by_hour2020050501',
41+
build_range_end: '2020-05-05T01:59:59.999Z',
4242
},
4343
{
4444
table_schema: 'dev_pre_aggregations',
45-
table_name: 'orders_orders_by_completed_at20200401',
46-
build_range_end: '2020-04-30T23:59:59.999Z',
45+
table_name: 'orders__a_orders_by_completed_by_hour2020050502',
46+
build_range_end: '2020-05-05T02:59:59.999Z',
4747
},
4848
{
4949
table_schema: 'dev_pre_aggregations',
50-
table_name: 'orders_orders_by_completed_at20200501',
51-
build_range_end: '2020-05-01T00:00:00.000Z',
50+
table_name: 'orders__a_orders_by_completed_by_hour2020050503',
51+
build_range_end: '2020-05-05T03:59:59.999Z',
5252
},
5353
]);
54-
expect(table.build_range_end).toEqual('2020-05-01T00:00:00.000Z');
5554
rows = await cubestore.query(`SELECT * FROM ${table.table_schema}.${table.table_name}`, []);
56-
expect(rows.length).toEqual(0);
55+
expect(rows.length).toEqual(1);
5756
}
5857

5958
describe('lambda', () => {
@@ -140,7 +139,8 @@ describe('lambda', () => {
140139
// @ts-ignore
141140
expect(Object.keys(response.loadResponse.results[0].usedPreAggregations)).toEqual([
142141
'dev_pre_aggregations.orders_orders_by_completed_at',
143-
'dev_pre_aggregations.orders_orders_by_completed_by_day'
142+
'dev_pre_aggregations.orders_orders_by_completed_by_day',
143+
'dev_pre_aggregations.orders__a_orders_by_completed_by_hour'
144144
]);
145145

146146
// With lambda-view we observe all 'fresh' data, with no partition/buildRange limit.

0 commit comments

Comments
 (0)