Сгруппировать вычисленные агрегированные элементы по частично связанному измерению
Я использую Pentaho-CE 4.8 с Saiku Plugin 2.6, который использует Mondrian 3.6.5.
В схеме Мондриана я определил виртуальный куб с вычисляемым элементом, который состоит из двух виртуальных мер. Эти Виртуальные меры происходят из двух кубов, которые имеют два общих измерения. Один из кубов имеет вырожденное измерение, которое также используется в виртуальном кубе.
Я хочу сгруппировать вычисляемый элемент по измерению, с которым связана только одна из виртуальных мер, но в данный момент у меня не получается.
Псевдо-схема:
<Time Dimension>
<Cube 1>
<Dimension Usage: "Time Dimension">
<Degenerated Dimension>
<Measure 1>
</Cube1>
<Cube 2>
<Dimension Usage: "Time Dimension">
<Measure 2>
</Cube 2>
<Virtual Cube>
<Virtual Measure "Cube 1 Measure 1">
<Virtual Measure "Cube 2 Measure 2">
<Virtual Dimension "Time Dimension">
<Virtual Dimension "Cube 1 Degenerated Dimension"
<Calculated Member: [Virtual Measure "Cube 1 Measure 1"] / [Virtual Measure "Cube 2 Measure 2"]
</Virtual Cube>
В saiku я получаю результаты для виртуальных и вычисленных показателей, пока я не использую "Cube 1 Degenerated Dimension". Если я использую его в строках / столбцах или в качестве фильтра, только значения для <Virtual Measure "Cube 1 Measure 1">
показаны, так как эта мера происходит от куба, который имеет отношение к этому измерению.
Есть ли способ / обходной путь, как я могу добиться того, чтобы CM был показан для этого измерения? Потому что в теории Мондриан мог сделать следующее:
- Получите виртуальную меру "Мера 1 куба 1" в зависимости от "Вырожденного измерения куба 1" и Временного измерения и, наконец, агрегируйте значения.
- Получите виртуальную меру "Мера 2 куба 2" только в зависимости от временного измерения.
- Выполните расчет (разделите "Куб 1 Мера 1" / "Куб 2 Мера 2")
1 ответ
Я нашел решение проблемы:
Используйте функцию ValidMeasure() следующим образом:
<Calculated Member: [Virtual Measure "Cube 1 Measure 1"] / ValidMeasure([Virtual Measure "Cube 2 Measure 2"])>
Функция действительной меры сообщит Мондриану, что эта мера имеет несоединимые измерения, которые можно игнорировать. Мера 2 будет объединена с другими применяемыми измерениями, и будет получено значение, которое затем можно использовать для расчета.