diff --git a/src/adapter/postgres.ts b/src/adapter/postgres.ts
index b1e44806b3ac8eed7864872f0845c0302e4b76cc..4b8d63fc5c9127de093df08c4ec9c284a18125cd 100644
--- a/src/adapter/postgres.ts
+++ b/src/adapter/postgres.ts
@@ -465,11 +465,19 @@ export class PostgresAdapter extends Adapter {
                         clauses: partial0.clauses.concat(partial1.clauses),
                         materialized: false
                     });
+                    const id = new View({
+                        metrics: mets.concat(dimMetrics),
+                        dimensions: dims,
+                        keys: keys,
+                        origin: false,
+                        clauses: partial0.clauses.concat(partial1.clauses),
+                        materialized: false
+                    }).id;
                     const viewFrom  = "(" +
                             this.buildQuery(partial, [partial0, partial1]) +
-                            ") AS view_" + partial0.id + partial1.id + "\n";
+                            ") AS view_" + id + "\n";
                     partialJoin.push({
-                        id: partial0.id + partial1.id,
+                        id: id,
                         from: viewFrom,
                         dimMetrics: dimMetrics,
                         metrics: mets,
diff --git a/src/util/configParser.ts b/src/util/configParser.ts
index 76bffe2af1c05070292c748fcc138fa96d9acb52..ea7133f9c20317439fe370f8fda7923e6ed5caba 100644
--- a/src/util/configParser.ts
+++ b/src/util/configParser.ts
@@ -185,7 +185,7 @@ export class ConfigParser {
 
         for (let i = 0; i < keys.length; ++i) {
             if (dimMap[keys[i]]) {
-                viewOpt.keys.push(dimMap[opts.dimensions[i]]);
+                viewOpt.keys.push(dimMap[opts.keys[i]]);
             }
 
             else {