Skip to content

Commit 8ab0c40

Browse files
committed
[WIP] fix(schema-compiler): Support member alias for TD with granularity
1 parent 78a5fc3 commit 8ab0c40

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

packages/cubejs-schema-compiler/src/adapter/BaseQuery.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3103,7 +3103,8 @@ export class BaseQuery {
31033103
const outputColumnTypes = [
31043104
...(query.dimensions || []).map(d => findSchemaType(d.dimension)),
31053105
...(query.timeDimensions || []).map(t => ({
3106-
name: `${this.aliasName(t.dimension)}_${t.granularity}`,
3106+
// TODO is it ok to do so?
3107+
name: this.aliasName(`${t.dimension}.${t.granularity}`),
31073108
type: 'TIMESTAMP'
31083109
})),
31093110
...(query.measures || []).map(m => findSchemaType(m.measure)),

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,13 @@ export class BaseTimeDimension extends BaseFilter {
7070
return super.aliasName();
7171
}
7272

73-
// @ts-ignore
74-
public unescapedAliasName(granularity: string) {
75-
const actualGranularity = granularity || this.granularityObj?.granularity || 'day';
73+
public unescapedAliasName(granularity?: string) {
74+
const actualGranularity = granularity ?? this.granularityObj?.granularity ?? 'day';
7675

77-
return `${this.query.aliasName(this.dimension)}_${actualGranularity}`; // TODO date here for rollups
76+
const fullName = `${this.dimension}.${actualGranularity}`;
77+
78+
// TODO date here for rollups
79+
return this.query.aliasName(fullName);
7880
}
7981

8082
public dateSeriesAliasName() {

packages/cubejs-schema-compiler/test/unit/base-query.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ describe('SQL Generation', () => {
121121

122122
const queryAndParams = query.buildSqlAndParams();
123123

124-
expect(queryAndParams[0]).toContain('"cards".type "cards__type", date_trunc(\'day\', ("cards".created_at::timestamptz AT TIME ZONE \'America/Los_Angeles\')) "cards__created_at_day"');
124+
expect(queryAndParams[0]).toContain('"cards".type "cards__type", date_trunc(\'day\', ("cards".created_at::timestamptz AT TIME ZONE \'America/Los_Angeles\')) "cards__created_at__day"');
125125
expect(queryAndParams[0]).toContain('GROUP BY 1, 2');
126126
expect(queryAndParams[0]).toContain('ORDER BY 2');
127127
});
@@ -1104,10 +1104,10 @@ describe('SQL Generation', () => {
11041104

11051105
const queryAndParams = query.buildSqlAndParams();
11061106
const queryString = queryAndParams[0];
1107-
expect(queryString.includes('date_trunc(\'quarter\'')).toBeTruthy();
1108-
expect(queryString.includes('cards__created_at_quarter')).toBeTruthy();
1109-
expect(queryString.includes('date_trunc(\'month\'')).toBeTruthy();
1110-
expect(queryString.includes('cards__created_at_month')).toBeTruthy();
1107+
expect(queryString).toContain('date_trunc(\'quarter\'');
1108+
expect(queryString).toContain('cards__created_at__quarter');
1109+
expect(queryString).toContain('date_trunc(\'month\'');
1110+
expect(queryString).toContain('cards__created_at__month');
11111111
});
11121112

11131113
it('Test for everyRefreshKeySql', async () => {

0 commit comments

Comments
 (0)