Поддерживает ли mondrian 3.14 анализ «что-если» (WriteBack)? - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в Мондриане. Я хочу создать сценарий для анализа что-если в Мондриане. Я пытался с http://julianhyde.blogspot.com/2009/06/cell-writeback-in-mondrian.html, но безуспешно. Я не знаю, как написать сценарий, а также не знаю, поддерживает ли он в mondrina 3.14 jar.

Я пытался, как следующий код без измерения сценария, как только я записал измерение сценария в схему, это дает мне ошибку, никакой меры по умолчанию не предоставлено.

Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
            try (final java.sql.Connection connection = java.sql.DriverManager
                    .getConnection("jdbc:mondrian:Jdbc=jdbc:mysql://"
                            + this.env.getProperty("db.host") + ":3306/"
                            + this.env.getProperty("db.source.jdbcDB")
                            + "?user="
                            + this.env.getProperty("db.source.userName")
                            + "&useSSL=false&password="
                            + this.env.getProperty("db.source.password") + ";"
                            + "Catalog=file:C:\\Users\\shahhard\\Desktop\\scenario.xml;"
                            + "JdbcDrivers="
                            + this.env.getProperty("db.source.driver.class")
                            + ";"
                            + this.env.getProperty("db.source.driver.class")
                            + "Cache.Mode=LFU;Cache.Timeout=600;Cache.Size=100")) {
                final MondrianOlap4jConnection olapConnection = connection
                        .unwrap(MondrianOlap4jConnection.class);
                final Scenario scenario = olapConnection.createScenario();
                final String sid = scenario.getId();
                String query = mondrianQuery.getQuery();
                query = query.replace("<SID>", sid);
                try (OlapStatement statement = olapConnection
                        .createStatement()) {
                    final CellSet cellSet = statement.executeOlapQuery(query);
                    print(cellSet);
                    if (mondrianQuery.getValue() != null) {
                        olapConnection.setScenario(scenario);
                        final List<Integer> list = new ArrayList<>();
                        list.add(mondrianQuery.getxCellOffset());
                        list.add(mondrianQuery.getyCellOffset());
                        final Cell cell = cellSet.getCell(list);
                        System.out.println(cell.getValue());
                        cell.setValue(mondrianQuery.getValue(),
                                AllocationPolicy.EQUAL_ALLOCATION);
                        final CellSet cellSet1 = statement
                                .executeOlapQuery(query);
                        print(cellSet1);
                        print(cellSet);
                    }
                }
            } catch (final Exception e) {
                // TODO: handle exception
                logger.error("", e);
            }
        } catch (final Exception e) {
            // TODO: handle exception
        }
...