Сгруппировать вычисленные агрегированные элементы по частично связанному измерению

Я использую 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" в зависимости от "Вырожденного измерения куба 1" и Временного измерения и, наконец, агрегируйте значения.
  2. Получите виртуальную меру "Мера 2 куба 2" только в зависимости от временного измерения.
  3. Выполните расчет (разделите "Куб 1 Мера 1" / "Куб 2 Мера 2")

1 ответ

Решение

Я нашел решение проблемы:

Используйте функцию ValidMeasure() следующим образом:

    <Calculated Member: [Virtual Measure "Cube 1 Measure 1"] / ValidMeasure([Virtual Measure "Cube 2 Measure 2"])>

Функция действительной меры сообщит Мондриану, что эта мера имеет несоединимые измерения, которые можно игнорировать. Мера 2 будет объединена с другими применяемыми измерениями, и будет получено значение, которое затем можно использовать для расчета.

Другие вопросы по тегам