Skip to content

Commit ffa1956

Browse files
committed
fix(schema-compiler): fix undefined columns for pre lambda agg queries referencing dims from joined cubes
1 parent b480372 commit ffa1956

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1192,7 +1192,22 @@ export class PreAggregations {
11921192
const targetMeasuresReferences = this.measureAliasesRenderedReference(preAggregationForQuery);
11931193

11941194
const columnsFor = (targetReferences, references, preAggregation) => Object.keys(targetReferences).map(
1195-
member => `${references[this.query.cubeEvaluator.pathFromArray([preAggregation.cube, member.split('.')[1]])]} ${targetReferences[member]}`
1195+
member => {
1196+
const [memberCube, memberProp] = member.split('.');
1197+
let refKey = references[this.query.cubeEvaluator.pathFromArray([preAggregation.cube, memberProp])];
1198+
1199+
if (refKey) {
1200+
return `${refKey} ${targetReferences[member]}`;
1201+
}
1202+
1203+
// Preaggregation may reference the joined cube dimensions/measures
1204+
if (this.query.cubeEvaluator.cubeFromPath(preAggregation.cube).joins[memberCube]) {
1205+
refKey = references[this.query.cubeEvaluator.pathFromArray([memberCube, memberProp])];
1206+
return `${refKey} ${targetReferences[member]}`;
1207+
}
1208+
1209+
throw new Error(`Preaggregation referenced property (${memberCube}.${memberProp}) not found in cube ${preAggregation.cube}`);
1210+
}
11961211
);
11971212

11981213
const tables = preAggregationForQuery.referencedPreAggregations.map(preAggregation => {

0 commit comments

Comments
 (0)