Skip to content

Commit f0829d7

Browse files
authored
fix(schema-compiler): Respect ungrouped alias in measures (#9411)
1 parent 7d890ff commit f0829d7

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

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

+3
Original file line numberDiff line numberDiff line change
@@ -2845,6 +2845,9 @@ export class BaseQuery {
28452845
return evaluateSql === '*' ? '1' : evaluateSql;
28462846
}
28472847
if (this.ungrouped) {
2848+
if (this.safeEvaluateSymbolContext().ungroupedAliases?.[measurePath]) {
2849+
evaluateSql = this.safeEvaluateSymbolContext().ungroupedAliases[measurePath];
2850+
}
28482851
if ((this.safeEvaluateSymbolContext().ungroupedAliasesForCumulative || {})[measurePath]) {
28492852
evaluateSql = this.safeEvaluateSymbolContext().ungroupedAliasesForCumulative[measurePath];
28502853
}

packages/cubejs-schema-compiler/test/integration/postgres/sql-generation.test.ts

+98
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,92 @@ SELECT 1 AS revenue, cast('2024-01-01' AS timestamp) as time UNION ALL
666666
}
667667
}
668668
});
669+
670+
cube('UngroupedMeasureWithFilter1', {
671+
sql: \`
672+
SELECT
673+
1 AS id,
674+
1 AS sum
675+
\`,
676+
sqlAlias: 'umwf1',
677+
dimensions: {
678+
id: {
679+
sql: \`id\`,
680+
type: 'number',
681+
primaryKey: true
682+
}
683+
},
684+
measures: {
685+
count: {
686+
type: 'count',
687+
},
688+
sum_filter: {
689+
sql: \`sum\`,
690+
type: 'sum',
691+
filters: [{sql: \`\${UngroupedMeasureWithFilter3.id} = 1\`}]
692+
}
693+
},
694+
joins: {
695+
UngroupedMeasureWithFilter2: {
696+
sql: \`\${CUBE.id} = \${UngroupedMeasureWithFilter2.id}\`,
697+
relationship: \`one_to_many\`
698+
},
699+
UngroupedMeasureWithFilter3: {
700+
sql: \`\${CUBE.id} = \${UngroupedMeasureWithFilter3.id}\`,
701+
relationship: \`many_to_one\`
702+
}
703+
}
704+
});
705+
706+
cube('UngroupedMeasureWithFilter2', {
707+
sql: \`
708+
SELECT
709+
1 AS id
710+
\`,
711+
sqlAlias: 'umwf2',
712+
dimensions: {
713+
id: {
714+
sql: \`id\`,
715+
type: 'number',
716+
primaryKey: true
717+
}
718+
},
719+
measures: {
720+
count: {
721+
type: 'count',
722+
}
723+
}
724+
});
725+
726+
cube('UngroupedMeasureWithFilter3', {
727+
sql: \`
728+
SELECT
729+
1 AS id
730+
\`,
731+
sqlAlias: 'umwf3',
732+
dimensions: {
733+
id: {
734+
sql: \`id\`,
735+
type: 'number',
736+
primaryKey: true
737+
}
738+
},
739+
measures: {
740+
count: {
741+
type: 'count',
742+
}
743+
}
744+
});
745+
746+
view('UngroupedMeasureWithFilter_View', {
747+
cubes: [{
748+
join_path: 'UngroupedMeasureWithFilter1',
749+
includes: ['sum_filter']
750+
}, {
751+
join_path: 'UngroupedMeasureWithFilter1.UngroupedMeasureWithFilter2',
752+
includes: ['count']
753+
}]
754+
})
669755
`);
670756

671757
it('simple join', async () => {
@@ -3610,4 +3696,16 @@ SELECT 1 AS revenue, cast('2024-01-01' AS timestamp) as time UNION ALL
36103696
[{ visitors__id_case: 0 }]
36113697
);
36123698
});
3699+
3700+
it('ungrouped measure with filter', async () => runQueryTest({
3701+
measures: [
3702+
'UngroupedMeasureWithFilter_View.sum_filter',
3703+
'UngroupedMeasureWithFilter_View.count'
3704+
],
3705+
ungrouped: true,
3706+
allowUngroupedWithoutPrimaryKey: true,
3707+
}, [{
3708+
ungrouped_measure_with_filter__view__count: 1,
3709+
ungrouped_measure_with_filter__view__sum_filter: 1
3710+
}]));
36133711
});

0 commit comments

Comments
 (0)