diff --git a/config/ci_test.yaml.example b/config/ci_test.yaml.example index 2c49af1a1850ca344038e4505444fb91cb13597e..4ec663f5afb3120d8e12a4e5d0d790bf68d59862 100644 --- a/config/ci_test.yaml.example +++ b/config/ci_test.yaml.example @@ -14,99 +14,85 @@ struct: insert: true schema: views: + - + alias: "View 0" + data: "test/postgres/fixtures/view0.json" + dimensions: + - "dim:0" + - "dim:7" + metrics: + - "met:0" + - "met:1" + - "met:2" - alias: "View 1" data: "test/postgres/fixtures/view1.json" dimensions: - "dim:1" - - "dim:2" + - "dim:8" metrics: - - "met:1" - - "met:2" - "met:3" + - "met:4" - alias: "View 2" data: "test/postgres/fixtures/view2.json" dimensions: - - "dim:1" - "dim:2" metrics: - - "met:1" - - "met:3" - "met:5" + - "met:6" - alias: "View 3" data: "test/postgres/fixtures/view3.json" dimensions: + - "dim:2" + - "dim:3" - "dim:4" - - "dim:5" - metrics: - - "met:3" - - "met:4" - - "met:7" - alias: "View 4" data: "test/postgres/fixtures/view4.json" dimensions: - - "dim:3" - - "dim:4" - - "dim:5" - - "dim:6" - metrics: - - "met:6" - - "met:7" + - "dim:2" + - "dim:7" + - "dim:8" - alias: "View 5" data: "test/postgres/fixtures/view5.json" dimensions: - - "dim:1" - - "dim:2" - - "dim:7" + - "dim:3" metrics: - - "met:2" - - "met:3" - - "met:8" + - "met:7" - alias: "View 6" data: "test/postgres/fixtures/view6.json" dimensions: - - "dim:1" - - "dim:2" + - "dim:4" metrics: - - "met:1" - - "met:4" + - "met:8" - alias: "View 7" data: "test/postgres/fixtures/view7.json" dimensions: - - "dim:8" - - "dim:9" - - "dim:10" - metrics: - - "met:8" + - "dim:4" + - "dim:5" + - "dim:6" - alias: "View 8" data: "test/postgres/fixtures/view8.json" dimensions: - - "dim:8" - - "dim:9" - - "dim:10" + - "dim:5" + - "dim:6" metrics: - "met:9" - - - alias: "View 9" - data: "test/postgres/fixtures/view9.json" - dimensions: - - "dim:8" - - "dim:9" - - "dim:10" - metrics: - - "met:10" metrics: - - name: "met:1" + name: "met:0" dataType: "integer" aggregation: "sum" + - + name: "met:1" + dataType: "integer" + aggregation: "avg" - name: "met:2" dataType: "integer" @@ -114,7 +100,7 @@ schema: - name: "met:3" dataType: "integer" - aggregation: "avg" + aggregation: "sum" - name: "met:4" dataType: "integer" @@ -122,11 +108,11 @@ schema: - name: "met:5" dataType: "integer" - aggregation: "sum" + aggregation: "avg" - name: "met:6" dataType: "integer" - aggregation: "avg" + aggregation: "count" - name: "met:7" dataType: "integer" @@ -134,43 +120,36 @@ schema: - name: "met:8" dataType: "integer" - aggregation: "count" - - - name: "met:9" - dataType: "integer" aggregation: "sum" - - name: "met:10" + name: "met:9" dataType: "integer" aggregation: "count" dimensions: + - + name: "dim:0" + dataType: "date" - name: "dim:1" dataType: "date" - name: "dim:2" - dataType: "date" + dataType: "integer" - name: "dim:3" - dataType: "integer" + dataType: "string" - name: "dim:4" dataType: "string" - name: "dim:5" - dataType: "string" + dataType: "boolean" - name: "dim:6" - dataType: "boolean" + dataType: "integer" - name: "dim:7" dataType: "integer" - name: "dim:8" dataType: "integer" - - - name: "dim:9" - dataType: "date" - - - name: "dim:10" - dataType: "string" diff --git a/package.json b/package.json index 3c7bde0bd9d39554c52e8824290ecd8f8944a302..1c2f5763a601787a7bd710b2a9c354c8ba5d46c0 100644 --- a/package.json +++ b/package.json @@ -23,13 +23,13 @@ "@types/express": "^4.0.33", "@types/js-yaml": "^3.5.29", "@types/pg": "^6.1.38", - "async": "^2.3.0", + "async": "=2.4.1", "express": "^4.0.33", "js-yaml": "^3.8.2", "osprey": "^0.3.2", "pg": "^6.1.5", - "ts-node": "^1.3.0", - "typescript": "^2.0.3" + "ts-node": "^3.1.0", + "typescript": "^2.4.1" }, "devDependencies": { "@types/mocha": "^2.2.32", diff --git a/src/adapter/postgres.spec.ts b/src/adapter/postgres.spec.ts index adc09ec8c04ed8e3fe27cbd4984439741264c6ee..370c7bdfdf28da1837ec8d8cf232212093069bee 100644 --- a/src/adapter/postgres.spec.ts +++ b/src/adapter/postgres.spec.ts @@ -100,7 +100,7 @@ describe("postgres adapter", () => { adapter.getDataFromView(view, (err, result) => { expect(err).to.be.a("null"); expect(result).to.be.an("array"); - expect(result).to.have.length(25); + expect(result).to.have.length(5); expect(result[0]).to.be.an("object"); let keys: string[] = []; keys = keys.concat(view.metrics.map((item) => item.name)); @@ -117,7 +117,7 @@ describe("postgres adapter", () => { adapter.getDataFromView(view, (err, result) => { expect(err).to.be.a("null"); expect(result).to.be.an("array"); - expect(result).to.have.length(125); + expect(result).to.have.length(5); expect(result[0]).to.be.an("object"); let keys: string[] = []; keys = keys.concat(view.metrics.map((item) => item.name)); @@ -143,7 +143,7 @@ describe("postgres adapter", () => { result.forEach((row) => { expect(row).to.be.an("object"); expect(row).to.have.all.keys(keys); - expect(row).to.have.property("dim:2:year", 2017); + expect(row).to.have.property("dim:0:year", 2017); }); done(); }); diff --git a/src/core/engine.spec.ts b/src/core/engine.spec.ts index 13f64fcba079781958e8aa3a171572e37be8b581..69e1d4d3c231ac6312cc601c1e8d59861a0467f6 100644 --- a/src/core/engine.spec.ts +++ b/src/core/engine.spec.ts @@ -44,10 +44,10 @@ describe("engine class", () => { views.forEach((view) => engine.addView(view)); - it("should be create a fill that cover the query and has 4 children", () => { + it("should be create a fill that cover all metrics and dimensions", () => { let query = { - metrics : met.slice(0, 10) - , dimensions : dim.slice(0, 10) + metrics : met + , dimensions : dim }; let optimalView = engine.query(query); expect(optimalView).to.be.an("object"); @@ -58,8 +58,7 @@ describe("engine class", () => { expect(optimalView.dimensions).to.be.an("array"); expect(optimalView.childViews).to.be.an("array"); expect(optimalView.metrics).to.have.length(10); - expect(optimalView.dimensions).to.have.length(10); - expect(optimalView.childViews).to.have.length(4); + expect(optimalView.dimensions).to.have.length(9); let metAux: number[] = optimalView.metrics.sort().map((item: Metric) => { return Number(item.name.split(":")[1]); }); @@ -67,15 +66,16 @@ describe("engine class", () => { return Number(item.name.split(":")[1]); }); - for (let i: number = 0; i < 10; ++i) { - expect(dimAux[i]).to.be.equal(i + 1); - expect(metAux[i]).to.be.equal(i + 1); + for (let i: number = 0; i < 9; ++i) { + expect(dimAux[i]).to.be.equal(i); + expect(metAux[i]).to.be.equal(i); } + expect(metAux[9]).to.be.equal(9); }); it("should throw an exception, query with non-existent metric", () => { let error: boolean = false; try { - engine.query({metrics: [met[10]], dimensions: [dim[0]]}); + engine.query({metrics: [engineScenario.wrongMet], dimensions: [dim[0]]}); } catch (e){ error = true; @@ -88,7 +88,7 @@ describe("engine class", () => { it("should throw an exception, query with non-existent dimension", () => { let error: boolean = false; try { - engine.query({metrics: [met[0]], dimensions: [dim[10]]}); + engine.query({metrics: [met[0]], dimensions: [engineScenario.wrongDim]}); } catch (e){ error = true; @@ -100,8 +100,8 @@ describe("engine class", () => { it("should be create a fill that cover the query, that match perfectly with a existent view", () => { let query = { - metrics : met.slice(0, 3) - , dimensions : dim.slice(0, 2) + metrics : [met[0], met[1], met[2]] + , dimensions : [dim[0], dim[7]] }; let optimalView = engine.query(query); expect(optimalView).to.be.an("object"); @@ -173,7 +173,7 @@ describe("engine class", () => { it("should throw an exception, sub-dimension with non-existent parent", () => { let error: boolean = false; try { - engine.query({metrics: [met[10]], dimensions: [subdim[3]]}); + engine.query({metrics: [met[0]], dimensions: [subdim[3]]}); } catch (e){ error = true; diff --git a/test/postgres/fixture.ts b/test/postgres/fixture.ts index 111bda10cd75c08400606aed11f4a63a21e281aa..1f7b892d37bade3b7a3f012d93c2fab198088eb2 100644 --- a/test/postgres/fixture.ts +++ b/test/postgres/fixture.ts @@ -75,11 +75,11 @@ export class Fixture { To garantee that tables exists before start insert data, series is used. Inside series each query is executed, using each; */ - series([(callback) => { + series([(callback: (err: Error) => void) => { each(init, (query, cback) => { return client.query(query, [], (err: Error) => cback(err)); }, (errQuery: Error) => callback(errQuery)); - }, (callback) => { + }, (callback: (err: Error) => void) => { each(data, (query, cback) => { return client.query(query, [], (err: Error) => cback(err)); }, (errQuery: Error) => callback(errQuery)); diff --git a/test/postgres/fixtures/view0.json b/test/postgres/fixtures/view0.json new file mode 100644 index 0000000000000000000000000000000000000000..d22ffb171c6b283b8f75922d450d67843c3879c2 --- /dev/null +++ b/test/postgres/fixtures/view0.json @@ -0,0 +1,7 @@ +[ +{"dim:0":"2017-01-01","dim:7":"1","met:0":"1","met:1":"1","met:2":"1"}, +{"dim:0":"2017-01-02","dim:7":"2","met:0":"2","met:1":"2","met:2":"2"}, +{"dim:0":"2017-01-03","dim:7":"3","met:0":"3","met:1":"3","met:2":"3"}, +{"dim:0":"2017-01-04","dim:7":"4","met:0":"4","met:1":"4","met:2":"4"}, +{"dim:0":"2017-01-05","dim:7":"5","met:0":"5","met:1":"5","met:2":"5"} +] diff --git a/test/postgres/fixtures/view1.json b/test/postgres/fixtures/view1.json index ee901bd78333d518094fcdb3fa1b2f8b5e6eec70..585e8cde683f5a192da467061bb5b5f7e7b7e1e5 100644 --- a/test/postgres/fixtures/view1.json +++ b/test/postgres/fixtures/view1.json @@ -1,7 +1,7 @@ [ -{"dim:1":"2017-01-01","dim:2":"2017-01-01","met:1":"1","met:2":"1","met:3":"1"}, -{"dim:1":"2017-01-02","dim:2":"2017-01-02","met:1":"2","met:2":"2","met:3":"2"}, -{"dim:1":"2017-01-03","dim:2":"2017-01-03","met:1":"3","met:2":"3","met:3":"3"}, -{"dim:1":"2017-01-04","dim:2":"2017-01-04","met:1":"4","met:2":"4","met:3":"4"}, -{"dim:1":"2017-01-05","dim:2":"2017-01-05","met:1":"5","met:2":"5","met:3":"5"} +{"dim:1":"2017-01-01","dim:8":"1","met:3":"1","met:4":"1"}, +{"dim:1":"2017-01-02","dim:8":"2","met:3":"2","met:4":"2"}, +{"dim:1":"2017-01-03","dim:8":"3","met:3":"3","met:4":"3"}, +{"dim:1":"2017-01-04","dim:8":"4","met:3":"4","met:4":"4"}, +{"dim:1":"2017-01-05","dim:8":"5","met:3":"5","met:4":"5"} ] diff --git a/test/postgres/fixtures/view2.json b/test/postgres/fixtures/view2.json index b49410e0a3c58c0a19e4931db55c7d4142a9da63..dbac5978dfeb3465cc863d75d9ff6131b2d5b560 100644 --- a/test/postgres/fixtures/view2.json +++ b/test/postgres/fixtures/view2.json @@ -1,7 +1,7 @@ [ -{"dim:1":"2017-01-01","dim:2":"2017-01-01","met:1":"1","met:3":"1","met:5":"1"}, -{"dim:1":"2017-01-02","dim:2":"2017-01-02","met:1":"2","met:3":"2","met:5":"2"}, -{"dim:1":"2017-01-03","dim:2":"2017-01-03","met:1":"3","met:3":"3","met:5":"3"}, -{"dim:1":"2017-01-04","dim:2":"2017-01-04","met:1":"4","met:3":"4","met:5":"4"}, -{"dim:1":"2017-01-05","dim:2":"2017-01-05","met:1":"5","met:3":"5","met:5":"5"} +{"dim:2":"1","met:5":"1","met:6":"1"}, +{"dim:2":"2","met:5":"2","met:6":"2"}, +{"dim:2":"3","met:5":"3","met:6":"3"}, +{"dim:2":"4","met:5":"4","met:6":"4"}, +{"dim:2":"5","met:5":"5","met:6":"5"} ] diff --git a/test/postgres/fixtures/view3.json b/test/postgres/fixtures/view3.json index a45a44119ba3b1011327859d3b6f2cf9a7eda2ed..425ac91b1e21d43c654d0c42c40b54f29dddd4f3 100644 --- a/test/postgres/fixtures/view3.json +++ b/test/postgres/fixtures/view3.json @@ -1,7 +1,7 @@ [ -{"dim:4":"dim:4:1","dim:5":"dim:5:1","met:3":"1","met:4":"1","met:7":"1"}, -{"dim:4":"dim:4:2","dim:5":"dim:5:2","met:3":"2","met:4":"2","met:7":"2"}, -{"dim:4":"dim:4:3","dim:5":"dim:5:3","met:3":"3","met:4":"3","met:7":"3"}, -{"dim:4":"dim:4:4","dim:5":"dim:5:4","met:3":"4","met:4":"4","met:7":"4"}, -{"dim:4":"dim:4:5","dim:5":"dim:5:5","met:3":"5","met:4":"5","met:7":"5"} +{"dim:2":"1","dim:3":"dim:3:1","dim:4":"dim:4:1"}, +{"dim:2":"2","dim:3":"dim:3:2","dim:4":"dim:4:2"}, +{"dim:2":"3","dim:3":"dim:3:3","dim:4":"dim:4:3"}, +{"dim:2":"4","dim:3":"dim:3:4","dim:4":"dim:4:4"}, +{"dim:2":"5","dim:3":"dim:3:5","dim:4":"dim:4:5"} ] diff --git a/test/postgres/fixtures/view4.json b/test/postgres/fixtures/view4.json index 7dbaad02ce12c5d452cb2b1071d1407082588d15..f7ce90f7d971adf4c2c86651eeb138ae09f1a2d2 100644 --- a/test/postgres/fixtures/view4.json +++ b/test/postgres/fixtures/view4.json @@ -1,7 +1,7 @@ [ -{"dim:3":"1","dim:4":"dim:4:1","dim:5":"dim:5:1","dim:6":"t","met:6":"1","met:7":"1"}, -{"dim:3":"2","dim:4":"dim:4:2","dim:5":"dim:5:2","dim:6":"t","met:6":"2","met:7":"2"}, -{"dim:3":"3","dim:4":"dim:4:3","dim:5":"dim:5:3","dim:6":"f","met:6":"3","met:7":"3"}, -{"dim:3":"4","dim:4":"dim:4:4","dim:5":"dim:5:4","dim:6":"f","met:6":"4","met:7":"4"}, -{"dim:3":"5","dim:4":"dim:4:5","dim:5":"dim:5:5","dim:6":"f","met:6":"5","met:7":"5"} +{"dim:2":"1","dim:7":"1","dim:8":"1"}, +{"dim:2":"2","dim:7":"2","dim:8":"2"}, +{"dim:2":"3","dim:7":"3","dim:8":"3"}, +{"dim:2":"4","dim:7":"4","dim:8":"4"}, +{"dim:2":"5","dim:7":"5","dim:8":"5"} ] diff --git a/test/postgres/fixtures/view5.json b/test/postgres/fixtures/view5.json index 3f76ce6e4a3bffffe0e68e79dc45addcc71f51ba..909f80f516fe8aa51135ed0730e859b245a6b64f 100644 --- a/test/postgres/fixtures/view5.json +++ b/test/postgres/fixtures/view5.json @@ -1,7 +1,7 @@ [ -{"dim:1":"2017-01-01","dim:2":"2017-01-01","dim:7":"1","met:2":"1","met:3":"1","met:8":"1"}, -{"dim:1":"2017-01-02","dim:2":"2017-01-02","dim:7":"2","met:2":"2","met:3":"2","met:8":"2"}, -{"dim:1":"2017-01-03","dim:2":"2017-01-03","dim:7":"3","met:2":"3","met:3":"3","met:8":"3"}, -{"dim:1":"2017-01-04","dim:2":"2017-01-04","dim:7":"4","met:2":"4","met:3":"4","met:8":"4"}, -{"dim:1":"2017-01-05","dim:2":"2017-01-05","dim:7":"5","met:2":"5","met:3":"5","met:8":"5"} +{"dim:3":"dim:3:1","met:7":"1"}, +{"dim:3":"dim:3:2","met:7":"2"}, +{"dim:3":"dim:3:3","met:7":"3"}, +{"dim:3":"dim:3:4","met:7":"4"}, +{"dim:3":"dim:3:5","met:7":"5"} ] diff --git a/test/postgres/fixtures/view6.json b/test/postgres/fixtures/view6.json index a810edb99a0efde8151a9c784fba3043c527aadf..438e2b909a3fa8bbdc7193a3f37c5a2f85fa9921 100644 --- a/test/postgres/fixtures/view6.json +++ b/test/postgres/fixtures/view6.json @@ -1,7 +1,7 @@ [ -{"dim:1":"2017-01-01","dim:2":"2017-01-01","met:1":"1","met:4":"1"}, -{"dim:1":"2017-01-02","dim:2":"2017-01-02","met:1":"2","met:4":"2"}, -{"dim:1":"2017-01-03","dim:2":"2017-01-03","met:1":"3","met:4":"3"}, -{"dim:1":"2017-01-04","dim:2":"2017-01-04","met:1":"4","met:4":"4"}, -{"dim:1":"2017-01-05","dim:2":"2017-01-05","met:1":"5","met:4":"5"} +{"dim:4":"dim:4:1","met:8":"1"}, +{"dim:4":"dim:4:2","met:8":"2"}, +{"dim:4":"dim:4:3","met:8":"3"}, +{"dim:4":"dim:4:4","met:8":"4"}, +{"dim:4":"dim:4:5","met:8":"5"} ] diff --git a/test/postgres/fixtures/view7.json b/test/postgres/fixtures/view7.json index bc4f17dee3fc46baadab5372f8b261c5eedebf1d..046ca8399296bf0a4cad7e6c6e9f9698b52172e9 100644 --- a/test/postgres/fixtures/view7.json +++ b/test/postgres/fixtures/view7.json @@ -1,7 +1,7 @@ [ -{"dim:8":"1","dim:9":"2017-01-01","dim:10":"dim:5:1","met:8":"1"}, -{"dim:8":"2","dim:9":"2017-01-02","dim:10":"dim:5:2","met:8":"2"}, -{"dim:8":"3","dim:9":"2017-01-03","dim:10":"dim:5:3","met:8":"3"}, -{"dim:8":"4","dim:9":"2017-01-04","dim:10":"dim:5:4","met:8":"4"}, -{"dim:8":"5","dim:9":"2017-01-05","dim:10":"dim:5:5","met:8":"5"} +{"dim:4":"dim:4:1","dim:5":"t","dim:6":"1"}, +{"dim:4":"dim:4:2","dim:5":"t","dim:6":"2"}, +{"dim:4":"dim:4:3","dim:5":"t","dim:6":"3"}, +{"dim:4":"dim:4:4","dim:5":"f","dim:6":"4"}, +{"dim:4":"dim:4:5","dim:5":"f","dim:6":"5"} ] diff --git a/test/postgres/fixtures/view8.json b/test/postgres/fixtures/view8.json index db33365b4780efabe114f1a85b65139978852ff9..40725b32af938b54091b293d42d4396aaa3e06c5 100644 --- a/test/postgres/fixtures/view8.json +++ b/test/postgres/fixtures/view8.json @@ -1,7 +1,7 @@ [ -{"dim:8":"1","dim:9":"2017-01-01","dim:10":"dim:5:1","met:9":"1"}, -{"dim:8":"2","dim:9":"2017-01-02","dim:10":"dim:5:2","met:9":"2"}, -{"dim:8":"3","dim:9":"2017-01-03","dim:10":"dim:5:3","met:9":"3"}, -{"dim:8":"4","dim:9":"2017-01-04","dim:10":"dim:5:4","met:9":"4"}, -{"dim:8":"5","dim:9":"2017-01-05","dim:10":"dim:5:5","met:9":"5"} +{"dim:5":"t","dim:6":"1","met:9":"1"}, +{"dim:5":"t","dim:6":"2","met:9":"2"}, +{"dim:5":"t","dim:6":"3","met:9":"3"}, +{"dim:5":"f","dim:6":"4","met:9":"4"}, +{"dim:5":"f","dim:6":"5","met:9":"5"} ] diff --git a/test/postgres/fixtures/view9.json b/test/postgres/fixtures/view9.json deleted file mode 100644 index c6ef8937a25975af513a957f8e7f5ea9d32e1266..0000000000000000000000000000000000000000 --- a/test/postgres/fixtures/view9.json +++ /dev/null @@ -1,7 +0,0 @@ -[ -{"dim:8":"1","dim:9":"2017-01-01","dim:10":"dim:5:1","met:10":"1"}, -{"dim:8":"2","dim:9":"2017-01-02","dim:10":"dim:5:2","met:10":"2"}, -{"dim:8":"3","dim:9":"2017-01-03","dim:10":"dim:5:3","met:10":"3"}, -{"dim:8":"4","dim:9":"2017-01-04","dim:10":"dim:5:4","met:10":"4"}, -{"dim:8":"5","dim:9":"2017-01-05","dim:10":"dim:5:5","met:10":"5"} -] diff --git a/test/scenario.ts b/test/scenario.ts index c915efb6f4f9737d82630b4e3b1da2d084be208f..f5d778d8ffe752c10c240bf9b762d9ff3455f620 100644 --- a/test/scenario.ts +++ b/test/scenario.ts @@ -29,6 +29,8 @@ interface EngineScenario { metrics: Metric[]; dimensions: Dimension[]; subDimensions: Dimension[]; + wrongMet: Metric; + wrongDim: Dimension; views: View[]; } @@ -61,7 +63,7 @@ const wrongMet = new Metric({ const wrongDim = new Dimension({ name: "dim:11", dataType: "integer" }); const subdimAux = new Dimension({ - name: "sub:1", + name: "sub:0", dataType: "integer", parent: dims[0], relation: RelationType.DAY @@ -70,25 +72,25 @@ const subdimAux = new Dimension({ const subdims = [ subdimAux, new Dimension({ - name: "sub:2", + name: "sub:1", dataType: "integer", - parent: dims[8], + parent: dims[1], relation: RelationType.DAY }), new Dimension({ - name: "sub:3", + name: "sub:2", dataType: "integer", parent: subdimAux, relation: RelationType.DAY }), new Dimension({ - name: "sub:4", + name: "sub:3", dataType: "integer", parent: null, relation: RelationType.DAY }), new Dimension({ - name: "sub:5", + name: "sub:4", dataType: "integer", parent: dims[1], relation: RelationType.DAY @@ -97,97 +99,31 @@ const subdims = [ const dateSubDim = [ new Dimension ({ - name: "dim:2:month", + name: "dim:0:month", dataType: "integer", - parent: dims[1], + parent: dims[0], relation: RelationType.MONTH }), new Dimension ({ - name: "dim:2:day", + name: "dim:0:day", dataType: "integer", - parent: dims[1], + parent: dims[0], relation: RelationType.DAY }), new Dimension ({ - name: "dim:2:year", + name: "dim:0:year", dataType: "integer", - parent: dims[1], + parent: dims[0], relation: RelationType.YEAR }), new Dimension ({ - name: "dim:2:dow", + name: "dim:0:dow", dataType: "integer", - parent: dims[1], + parent: dims[0], relation: RelationType.DAYOFWEEK }), ]; -const engAuxView = [ - new View({ - metrics: [mets[0], mets[1], mets[2], mets[3], mets[4]], - dimensions: [dims[0], dims[1]], - materialized: false, - childViews: [ - { - view: views[0], - metrics: [mets[0], mets[1], mets[2]], - dimensions: [dims[0], dims[1]] - }, - { - view: views[5], - metrics: [mets[3]], - dimensions: [] - }, - { - view: views[1], - metrics: [mets[4]], - dimensions: [] - } - ] - }), - - new View({ - metrics: [mets[7], mets[8], mets[9]], - dimensions: [dims[7], dims[8], dims[9]], - materialized: false, - childViews: [ - { - view: views[6], - metrics: [mets[7]], - dimensions: [dims[7], dims[8], dims[9]] - }, - { - view: views[7], - metrics: [mets[8]], - dimensions: [] - }, - { - view: views[8], - metrics: [mets[9]], - dimensions: [] - } - ] - }), - - new View({ - metrics: [mets[0]], - dimensions: [subdims[0], subdims[1]], - materialized: false, - childViews: [ - { - view: views[0], - metrics: [mets[0]], - dimensions: [dims[0]] - }, - { - view: views[9], - metrics: [], - dimensions: [dims[8]] - } - ] - }) -]; - const dateView = new View({ metrics: [], dimensions: dateSubDim, @@ -195,52 +131,57 @@ const dateView = new View({ childViews: [{ view: views[0], metrics: [], - dimensions: [dims[1]] + dimensions: [dims[0]] }] }); const subDimView = new View({ metrics: [mets[0]], - dimensions: [subdims[0], subdims[1]], + dimensions: [subdims[0], subdims[1], dims[7], dims[8]], materialized: false, childViews: [ { view: views[0], metrics: [mets[0]], - dimensions: [dims[0]] + dimensions: [dims[0], dims[7]] }, { - view: views[8], + view: views[1], metrics: [], - dimensions: [dims[8]] + dimensions: [dims[1], dims[8]] + }, + { + view: views[4], + metrics: [], + dimensions: [] } ] }); const join4View = new View({ - metrics: mets, - dimensions: dims, + metrics: [mets[0], mets[1], mets[2], mets[3], mets[4], mets[5]], + dimensions: [dims[2], dims[7], dims[8]], materialized: false, childViews: [ { - view: engAuxView[0], - metrics: [mets[0], mets[1], mets[2], mets[3], mets[4]], - dimensions: [dims[0], dims[1]] + view: views[0], + metrics: [mets[0], mets[1], mets[2]], + dimensions: [dims[7]] }, { - view: engAuxView[1], - metrics: [mets[7], mets[8], mets[9]], - dimensions: [dims[7], dims[8], dims[9]] + view: views[1], + metrics: [mets[3], mets[4]], + dimensions: [dims[8]] }, { - view: views[3], + view: views[2], metrics: [mets[5], mets[6]], - dimensions: [dims[2], dims[3], dims[4], dims[5]] + dimensions: [dims[2]] }, { view: views[4], metrics: [], - dimensions: [dims[6]] + dimensions: [] } ] }); @@ -256,7 +197,7 @@ const noSelView = new View({ dimensions: [] }, { - view: views[2], + view: views[1], metrics: [mets[3]], dimensions: [] } @@ -264,28 +205,30 @@ const noSelView = new View({ }); const withSelView = new View({ - metrics: [mets[0], mets[1], mets[4]], - dimensions: [dims[0], dims[1]], + metrics: [mets[0], mets[1]], + dimensions: [dims[7], dims[8]], materialized: false, childViews: [ { view: views[0], metrics: [mets[0], mets[1]], - dimensions: [dims[0], dims[1]] + dimensions: [dims[7]] }, { - view: views[1], - metrics: [mets[4]], - dimensions: [] + view: views[4], + metrics: [], + dimensions: [dims[7], dims[8]] } ] }); export const engineScenario: EngineScenario = { - metrics: mets.concat([wrongMet]), - dimensions: dims.concat([wrongDim]), + metrics: mets, + dimensions: dims, + wrongMet: wrongMet, + wrongDim: wrongDim, subDimensions: subdims, - views: views.concat(engAuxView) + views: views }; export const adapterScenario: AdapterScenario = {