2014-06-13 2 views
0

Есть ли способ создать динамический расчетный элемент на основе выбранного размера ON ROWS? У меня есть следующий пример с двумя размерами [Dim1]. [Dim1] и [Dim2]. [Dim2] с мерой [Measures]. [Measure] и расчетным элементом [Measures]. [CalculatedMeasure]:Создать динамический расчетный элемент на основе выбранных размеров ON ROWS

WITH MEMBER [Measures].[CalculatedMeasure] AS 
IIF([Dim1].[Dim1]**.....IS SELECTED ON ROWS.........**, 
[Measures].[Measure] 
/
([Measures].[Measure], [Dim1].[Dim1].CurrentMember.Parent), 

[Measures].[Measure] 
/
    ([Measures].[Measure], [Dim2].[Dim2].CurrentMember.Parent)) 

    SELECT {[Measures].[Measure],[Measures].[CalculatedMeasure]} ON COLUMNS , 
    {[Dim2].[Dim2].Members)} ON ROWS 
    FROM [DataBase] 

То, что я хочу, что когда я выбираю [Dim2]. [Dim2] ON РЯДОВ, вычисленный член должен быть результатом

[Measures].[Measure] 
/
([Measures].[Measure], [Dim2].[Dim2].CurrentMember.Parent) 

ELSE

[Measures].[Measure] 
/
([Measures].[Measure], [Dim1].[Dim1].CurrentMember.Parent) 

Благодарности

+0

какие-либо идеи, кто-нибудь? – bluesony

ответ

0

В Analysis Services, ваш [Dim1].[Dim1]**.....IS SELECTED ON ROWS.........** может быть закодирован как

Axis(1).Item(0).Item(0).Hierarchy IS [Dim1].[Dim1] 

если вы можете предположить, что существует только одна иерархия по рядам.

Здесь Axis(1) возвращает ось строк, как установлено. Я не уверен, поддерживается ли эта функция Pentaho/Mondrian. Затем первый Item(0) выбирает первый кортеж этого набора, а второй возвращает первый член этого кортежа. Наконец, функция Hierarchy возвращает иерархию элемента.

Чтобы распространить это на запросы, содержащие до трех иерархий в строках, можно было бы написать

Axis(1).Item(0).Item(0).Hierarchy IS [Dim1].[Dim1] OR 
Axis(1).Item(0).Item(1).Hierarchy IS [Dim1].[Dim1] OR 
Axis(1).Item(0).Item(2).Hierarchy IS [Dim1].[Dim1] 
+0

спасибо за ваш ответ, но кажется, что у Мондриана нет реализована функция оси (n). Я получаю ошибку: MondrianException: Mondrian Error: Синтаксическая ошибка в строке, столбце, токене «Ось». Есть ли обходной путь? – bluesony

+0

@bluesony Мне не известно об обходном пути. – FrankPl

Смежные вопросы