Мондриан: не получается использовать таблицы агрегации
Я изо всех сил пытался заставить работать таблицы агрегации. Вот как выглядит моя таблица фактов:
employment_date_id
dimension1_id
dimension2_id
dimension3_id
dimension4
dimension5
measure1
measure2
measure3
Я рушаюсь employment_date_id
от года, квартала и месяца, чтобы включить только год, но все остальные столбцы включены. Вот как выглядит моя таблица агрегации:
yearquartermonth_year
dimension1_id
dimension2_id
dimension3_id
dimension4
dimension5
measure1
measure2
measure3
fact_count
Я только сворачиваю часть года с датой. Остальные поля остаются как есть. Вот моя конфигурация:
<AggFactCount column="FACT_COUNT"/>
<AggForeignKey factColumn="dimension1_id" aggColumn="dimension1_id"/>
<AggForeignKey factColumn="dimension2_id" aggColumn="dimension2_id"/>
<AggForeignKey factColumn="dimension3_id" aggColumn="dimension3_id"/>
<AggMeasure name="[Measures].[measure1]" column="measure1"/>
<AggMeasure name="[Measures].[measure2]" column="measure2"/>
<AggMeasure name="[Measures].[measure3]" column="measure3"/>
<AggLevel name="[dimension4].[dimension4]" column="dimension4"/>
<AggLevel name="[dimension5].[dimension5]" column="dimension5"/>
<AggLevel name="[EmploymentDate.yearQuarterMonth].[Year]" column="yearquartermonth_year"/>
Я по большей части копирую 2-й пример таблиц агрегации из документации. Большинство моих столбцов не свернуты в таблицу и являются внешними ключами таблиц измерений.
Мой запрос, который я пытаюсь выполнить, выглядит примерно так:
select {[Measures].[measure1]} on COLUMNS, {[EmploymentDate.yearQuarterMonth].[Year]} on ROWS from Cube1
Проблема в том, что когда я отлаживаю его и включаю ведение журнала, я вижу битовые ключи, которые выглядят так:
AggStar:agg_year_employment
bk=0x00000000000000000000000000000000000000000000000111111111101111100000000000000000000000000000000000000000000000000000000000000000
fbk=0x00000000000000000000000000000000000000000000000000000001101111100000000000000000000000000000000000000000000000000000000000000000
mbk=0x00000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000
И битовый шаблон моего запроса:
Foreign columns bit key=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
Measure bit key= 0x00000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000
И поэтому моя таблица агрегации пропущена. Тем не менее, это именно те столбцы, которые складываются в таблицу. Но позиции битов между запросом и таблицей агрегации отключены. Другая вещь, которую я нахожу странной, - это то, что часть столбцов свернута в таблицу, но все AggForeignKeys
не включены как биты, поэтому, если я сделаю запрос с этими столбцами, эта таблица агрегации будет пропущена? Это противоречит тому, что я планировал. У меня был план, пока вы делаете запрос по границам года, используя эту таблицу агрегирования.
Я не понимаю, почему это не работает и почему не удается правильно построить битовые ключи. Я пытался отладить код Мондриана, но выяснить, какой столбец соответствует какой позиции в битовых ключах, неочевидно. Я чувствую, что это не должно быть так сложно, но все там не очень хорошо объясняет это. И эта архитектура таблицы агрегирования действительно сломана.
Что я делаю неправильно? И почему мое решение не работает?
Обновление Вот мой файл mondrian.properties:
mondrian.jdbcDrivers=com.mysql.jdbc.Driver,oracle.jdbc.driver.OracleDriver
mondrian.rolap.generate.formatted.sql=true
mondrian.rolap.localePropFile=locale.properties
mondrian.rolap.aggregates.Use=true
mondrian.rolap.aggregates.Read=true
mondrian.trace.level=2
mondrian.drillthrough.enable=true
1 ответ
Может иметь место случай, когда mondrian.rolap.aggregates.Read имеет значение true, а mondrian.rolap.aggregates.Use имеет значение false. Пожалуйста, установите mondrian.rolap.aggregates.Use=true
и проверить. Ссылка: http://mondrian.pentaho.com/documentation/configuration.php
Если это не так, пожалуйста, приложите все свойства, относящиеся к сводным таблицам и полному XML определения куба.