diff --git a/packages/cubejs-schema-compiler/src/compiler/YamlCompiler.ts b/packages/cubejs-schema-compiler/src/compiler/YamlCompiler.ts index b6a70295f8ba7..a11536303dd54 100644 --- a/packages/cubejs-schema-compiler/src/compiler/YamlCompiler.ts +++ b/packages/cubejs-schema-compiler/src/compiler/YamlCompiler.ts @@ -287,8 +287,9 @@ export class YamlCompiler { if (memberType === 'preAggregation' && indexes) { indexes = this.yamlArrayToObj(indexes || [], `${memberType}.index`, errorsReport); } + if (!name) { - errorsReport.error(`name isn't defined for ${memberType}: ${YAML.stringify(rest)}`); + errorsReport.error(`name isn't defined for ${memberType}: ${JSON.stringify(rest)}`); return {}; } else if (indexes) { return { [name]: { indexes, ...rest } }; diff --git a/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts b/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts index 90bd70597b04f..92bc7de0e8789 100644 --- a/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts @@ -89,4 +89,25 @@ describe('Yaml Schema Testing', () => { expect(e.message).toContain('Unexpected input during yaml transpiling: null'); } }); + + it('unammed measure', async () => { + const { compiler } = prepareYamlCompiler( + `cubes: + - name: Users + sql: SELECT * FROM e2e.users + dimensions: + - sql: id + type: number + primaryKey: true + ` + ); + + try { + await compiler.compile(); + + throw new Error('compile must return an error'); + } catch (e: any) { + expect(e.message).toContain('name isn\'t defined for dimension: '); + } + }); });