@@ -24,26 +24,39 @@ export const createBaseTableSchema = (
24
24
resolutionConfig : ResolutionConfig ,
25
25
measures : Member [ ] ,
26
26
dimensions ?: Member [ ]
27
- ) => ( {
28
- name : BASE_DATA_SOURCE_NAME ,
29
- sql : baseSql ,
30
- measures : [ ] ,
31
- dimensions : [ ...measures , ...( dimensions || [ ] ) ] . map ( ( member ) => {
32
- const schema = findInSchemas ( member , tableSchemas ) ;
33
- if ( schema ) {
34
- return constructBaseDimension ( member , schema ) ;
35
- } else {
36
- throw new Error ( `Not found: ${ member } ` ) ;
37
- }
38
- } ) ,
39
- joins : resolutionConfig . columnConfigs . map ( ( config ) => ( {
40
- sql : `${ BASE_DATA_SOURCE_NAME } .${ constructAlias (
41
- config . name ,
42
- findInSchemas ( config . name , tableSchemas ) ?. alias ,
43
- true
44
- ) } = ${ memberKeyToSafeKey ( config . name ) } .${ config . joinColumn } `,
45
- } ) ) ,
46
- } ) ;
27
+ ) => {
28
+ const schemaByName : Record < string , Measure | Dimension > = { } ;
29
+ tableSchemas . forEach ( ( tableSchema ) => {
30
+ tableSchema . dimensions . forEach ( ( dimension ) => {
31
+ schemaByName [ getNamespacedKey ( tableSchema . name , dimension . name ) ] =
32
+ dimension ;
33
+ } ) ;
34
+ tableSchema . measures . forEach ( ( measure ) => {
35
+ schemaByName [ getNamespacedKey ( tableSchema . name , measure . name ) ] = measure ;
36
+ } ) ;
37
+ } ) ;
38
+
39
+ return {
40
+ name : BASE_DATA_SOURCE_NAME ,
41
+ sql : baseSql ,
42
+ measures : [ ] ,
43
+ dimensions : [ ...measures , ...( dimensions || [ ] ) ] . map ( ( member ) => {
44
+ const schema = schemaByName [ member ] ;
45
+ if ( schema ) {
46
+ return constructBaseDimension ( member , schema ) ;
47
+ } else {
48
+ throw new Error ( `Not found: ${ member } ` ) ;
49
+ }
50
+ } ) ,
51
+ joins : resolutionConfig . columnConfigs . map ( ( config ) => ( {
52
+ sql : `${ BASE_DATA_SOURCE_NAME } .${ constructAlias (
53
+ config . name ,
54
+ schemaByName [ config . name ] ?. alias ,
55
+ true
56
+ ) } = ${ memberKeyToSafeKey ( config . name ) } .${ config . joinColumn } `,
57
+ } ) ) ,
58
+ } ;
59
+ } ;
47
60
48
61
export const generateResolutionSchemas = (
49
62
config : ResolutionConfig ,
0 commit comments