Skip to content

Commit

Permalink
fix(schema-compiler): hierarchies to respect prefix value
Browse files Browse the repository at this point in the history
  • Loading branch information
vasilev-alex committed Feb 19, 2025
1 parent d7cbc2b commit cbae348
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
10 changes: 10 additions & 0 deletions packages/cubejs-schema-compiler/src/compiler/CubeEvaluator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,11 @@ export class CubeEvaluator extends CubeSymbols {
if (cube.isView && (cube.includedMembers || []).length) {
const includedMemberPaths: string[] = R.uniq(cube.includedMembers.map(it => it.memberPath));
const includedCubeNames: string[] = R.uniq(includedMemberPaths.map(it => it.split('.')[0]));
// Path to name (which can be prefixed or aliased) map for hierarchy
const hierarchyPathToName = cube.includedMembers.filter(it => it.type === 'hierarchies').reduce((acc, it) => ({
...acc,
[it.memberPath]: it.name
}), {});
const includedHierarchyNames = cube.includedMembers.filter(it => it.type === 'hierarchies').map(it => it.memberPath.split('.')[1]);

for (const cubeName of includedCubeNames) {
Expand All @@ -260,8 +265,13 @@ export class CubeEvaluator extends CubeSymbols {
return null;
}).filter(Boolean);

const name = hierarchyPathToName[[cubeName, it.name].join('.')];
if (!name) {
throw new UserError(`Hierarchy '${it.name}' not found in cube '${cubeName}'`);
}
return {
...it,
name,
levels
};
})
Expand Down
4 changes: 4 additions & 0 deletions packages/cubejs-schema-compiler/test/unit/hierarchies.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ describe('Cube hierarchies', () => {
(it) => it.config.name === 'all_hierarchy_view'
);
expect(allHierarchyView.config.hierarchies.length).toBe(3);

const prefixedHierarchy = allHierarchyView.config.hierarchies.find((it) => it.name === 'all_hierarchy_view.users_users_hierarchy');
expect(prefixedHierarchy).toBeTruthy();
expect(prefixedHierarchy?.levels).toEqual(['all_hierarchy_view.users_age', 'all_hierarchy_view.users_city']);
});

it(('hierarchy with measure'), async () => {
Expand Down

0 comments on commit cbae348

Please sign in to comment.