2016-08-19 3 views
1

Helo. Сегодня мой другой день борьбы с OLAP raport с необязательным параметром. У меня проблема с запросом MDX. Я написал это так:SpagoBI OLAP отчет передача необязательный параметр

select 
NON EMPTY {{[Measures].[VALUE]}} ON COLUMNS, 
NON EMPTY { 
IIF(ISEMPTY([CUSTOMER].[${param}]) //CHECKING IF PARAMETER IS EMPTY 
,{[CUSTOMER].[COUNTRY].Members}, 
{[CUSTOMER].[${param}]} 
) 
}ON ROWS 
from [TRANSACTIONS] 

${param} мой дополнительный параметр для [CUSTOMER].[COUNTRY]. Я отключил «обязательную» кнопку проверки для моего параметра, поэтому OLAP должен иметь все [VALUE] после выполнения этого без параметра. И есть проблема, потому что после запуска мой параметр OLAP raport, вероятно, хочет что-то заполнить. Это дает мне ошибку.

Профиль атрибута 'param' не существует.

Но я не хочу заполнять его атрибутом профиля. Я создал список значений и аналитический драйвер для моего параметра, который я использую для передачи возможных значений в свой строковый параметр списка - ${param}.

Есть ли возможность иметь отчет OLAP с дополнительным параметром? Любой хозяин BI здесь? Мне бы очень понравилось.

Update: Я сделал что-то вроде этого, я думаю, что этот синтаксис является правильным, (я проверял примеры SpagoBI)

WITH MEMBER [CUSTOMER].[SELECTED] AS ' Parameter("param") ' , SOLVE_ORDER = 2 
MEMBER [CUSTOMER].[LEN] AS ' LEN(Parameter("param")) ', SOLVE_ORDER = 1 
select 
NON EMPTY {{[Measures].[VALUE]}} ON COLUMNS, 
NON EMPTY { 
IIF([CUSTOMER].[LEN]=0 
,{[CUSTOMER].[COUNTRY].Members}, 
{[CUSTOMER].[CUSTOMER].[SELECTED]} 
) 
}ON ROWS 
from [TRANSACTIONS] 

Но теперь у меня есть такая же ошибка для обеих возможностей (включено/отключено) параметр

javax.servlet.jsp.JspException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: 1

Любые идеи? Спасибо :)

+0

какие тесты вы сделали? Можете ли вы передать параметр в любой скрипт mdx? Я предлагаю настроить очень простой скрипт (например, я включил в предыдущий пост!), Чтобы попытаться выяснить, видит ли ваш клиент значение для $ {param}? – whytheq

+0

Возможный дубликат [отчета OLAP с дополнительным параметром] (http://stackoverflow.com/questions/38970610/olap-report-with-optional-parameter) – whytheq

+0

Когда я выбираю значение для моего параметра из списка, оно выполняется отлично, когда Я вручную добавляю значение параметра в свой MDX, который он выполняет. Но когда параметр пуст, мой OLAP не знает, что такое '$ {param}' в запросе MDX. Я могу передать параметр в мой mdx. Если я проверю этот параметр, то OLAP отлично работает, но мне нужен дополнительный параметр. Когда его непроверенный отчет должен содержать все данные. – LucasPG

ответ

1

Этот вопрос является прямой копией ваших предыдущих постов:

https://stackoverflow.com/questions/38970610/olap-report-with-optional-parameter

Is $ {} парам является строкой?

Если это строка то следующая должна функционировать:

WITH MEMBER [Measures].[x] AS ${param} 
SELECT 
NON EMPTY {[Measures].[x]} ON COLUMNS 
FROM [TRANSACTIONS]; 

функционирует ли?

Если он не работает, тогда вопрос не является действительно связанным с mdx - поскольку по какой-то причине ваш синтаксис или способ перемещения параметра клиенту неверен.


примечание

Выше эквивалент этой супер простой скрипт:

WITH 
    MEMBER [Measures].[x] AS "hello world" 
SELECT 
    NON EMPTY 
    {[Measures].[x]} ON 0 
FROM [Adventure Works]; 

У вас есть AdvWrks куб?Попробуйте это:

WITH 
    MEMBER [Measures].[x] AS "I'm not empty" 
SELECT 
    { 
    IIF 
    (
     (IsEmpty([Measures].[x])) //<< this returns False 
    ,[Product].[Product Categories].[Category].MEMBERS 
    ,{[Measures].[x]}   //<< this is what IIF returns 
    ) 
    } ON 0 
FROM [Adventure Works]; 

возвращает это:

enter image description here

Теперь я проверял IsEmpty:

WITH 
    MEMBER [Measures].[x] AS "I'm not empty" 
SELECT 
    { 
    IIF 
    (
     (NOT //<< added this to check functionality of IsEmpty 
     IsEmpty([Measures].[x])) 
    ,[Product].[Product Categories].[Category].MEMBERS //<< this is what IIF returns 
    ,{[Measures].[x]} 
    ) 
    } ON 0 
FROM [Adventure Works]; 

Мы получаем следующее:

enter image description here

То, что я думаю, что происходит в вашем сценарии это - парам не пуст, но на самом деле нулевой длины строки:

WITH 
    MEMBER [Measures].[x] AS "" 
SELECT 
    { 
    IIF 
    (
     (
     IsEmpty([Measures].[x])) 
    ,[Product].[Product Categories].[Category].MEMBERS 
    ,{[Measures].[x]} //<< the zero length string goes to here 
    ) 
    } ON 0 
FROM [Adventure Works]; 

Результаты в:

enter image description here

+0

Мой редактор запросов MDX говорит мне ** Неожиданный символ '$' ** Я не знаю, что случилось с синтаксисом SpagoBI – LucasPG

+0

@LucasPG Я добавил еще одну возможность - может быть, строка с нулевой длиной передается в – whytheq

+0

Итак, как я могу проверить свой IFF если длина $ {param} равна 0? – LucasPG

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

  • Нет связанных вопросов^_^