cube-js / cube-js/cube

Querying across Multiple Datasources with non-Primary Key join

Open
#6,092 0 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
Rust
Stars
20.8k
Forks
2.1k
Avg merge
1d 2h
Merged PRs (30d)
181

Description

**Problem**

Should i be able to query from multiple datasources with below rollup join, where the join references two non-primary key fields?

**Schema**
```
cubes:
- name: Progs
dataSource: default
sql: SELECT * FROM public.sys1_programmes
preAggregations:
- name: progs_rollup
dimensions: [CUBE.id, CUBE.programmeId]
measures:
- name: count
type: count
dimensions:
- name: id
sql: id
type: number
primaryKey: true
- name: programmeId
sql: programme_id
type: string

- name: Scores
dataSource: datasource1
sql: SELECT * FROM public.scores___programmes
preAggregations:
- name: scores_rollup
measures: [CUBE.count, CUBE.baseScore]
dimensions: [CUBE.id, CUBE.node0, CUBE.programmeLongName]
# indexes:
# - name: node0_index
# columns: [CUBE.node0]
- name: progs_scores_rollup
type: rollupJoin
measures: [Scores.count, Scores.baseScore, Progs.count]
dimensions: [Scores.node0, Scores.programmeLongName, Progs.programmeId]
rollups: [Progs.progs_rollup, CUBE.scores_rollup]
joins:
- name: Progs
sql: "{CUBE.node0} = {Progs.programmeId}"
relationship: belongsTo
measures:
- name: count
type: count
sql: id
- name: baseScore
sql: base_score
type: sum
dimensions:
- name: id
sql: id
type: number
primaryKey: true
- name: node0
sql: _node0
type: string
- name: programmeLongName
sql: programme_long_name
type: string
```

**Query**
```
{
"dimensions": [
"Progs.programmeId",
"Scores.programmeLongName"
],
"order": {
"Scores.baseScore": "desc"
}
}
```

**Error**
```
Internal: Error during planning: Can't find index to join table dev_pre_aggregations.scores_scores_rollup_0n4sknm5_gi424a5q_1htilpm on scores__node0. Consider creating index: CREATE INDEX scores_scores_rollup_0n4sknm5_gi424a5q_1htilpm_scores__node0 ON dev_pre_aggregations.scores_scores_rollup_0n4sknm5_gi424a5q_1htilpm (scores__node0)
```

**After including the commented out index**
```
Compile errors:
Scores cube: "preAggregations.scores_rollup" does not match any of the allowed types
Possible reasons (one of):
* (preAggregations.scores_rollup.indexes = [object Object]) must be of type object
Error: Compile errors:
Scores cube: "preAggregations.scores_rollup" does not match any of the allowed types
Possible reasons (one of):
* (preAggregations.scores_rollup.indexes = [object Object]) must be of type object
at ErrorReporter.throwIfAny (/cube/node_modules/@cubejs-backend/schema-compiler/src/compiler/ErrorReporter.ts:133:13)
at DataSchemaCompiler.throwIfAnyErrors (/cube/node_modules/@cubejs-backend/schema-compiler/src/compiler/DataSchemaCompiler.js:161:23)
at /cube/node_modules/@cubejs-backend/schema-compiler/src/compiler/DataSchemaCompiler.js:71:16
at CompilerApi.getCompilers (/cube/node_modules/@cubejs-backend/server-core/src/core/CompilerApi.js:56:24)
at CompilerApi.metaConfig (/cube/node_modules/@cubejs-backend/server-core/src/core/CompilerApi.js:179:13)
at ApiGateway.load (/cube/node_modules/@cubejs-backend/api-gateway/src/gateway.ts:1337:30)
at /cube/node_modules/@cubejs-backend/api-gateway/src/gateway.ts:197:7
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.