2012-01-05 3 views
1

Теперь у меня разные проблемы с разными MDX qry.Запрос MDX не дает правильного ответа

Для текущих деталей месяца я получаю информацию о прошлом месяце также .. Запроса MDX используется мне:

/* 
SELECT 
NON EMPTY 
    { Hierarchize ({ [Offer].[GrandTotal], [Offer].[GrandTotal].Children }) } 
     ON COLUMNS, 
NON EMPTY 
    { Hierarchize ({ [Circle].[GrandTotal], [Circle].[GrandTotal].Children }) } 
     ON ROWS 
FROM 
    [SCMAircel_ActiveBase] 
WHERE 
    ([Measures].[TotalCount], 
    [Subscriber State].[GrandTotal], 
    [Time].[2012].[${curMonth}].[${curDay}]) 
*/ 

Я использую два параметр, который дает правильный месяц и значение даты в конструктор отчетов Pentaho. Но проблема объясняется приведенным ниже примером.

Я хочу, чтобы по кругу подсчитывал количество дней на день, например: на дату 04/01/2012. Но я тоже получаю значения в прошлом месяце в тот же день .. (01-12-2011), потому что это значение доступно на столе. Но мне нужны данные 01.01.2012 только ..

[Subscriber State].[GrandTotal] содержит значение, как ACTIVE, GRACE, SUSPEND который я фильтрацию,

Я не знаю, как это значение TOTAL_COUNT добавляет вверх Eventhough месяца и дата проходит правильно ....

Pls сказать какое-либо решение, если кто-нибудь знает об этом

ответ

1

Я не знаком с Pentaho, но с SQL Server Analysis Services. Я предполагаю, что, поскольку MDX является стандартом, не должно быть (m) никаких различий;)

Я предполагаю, что результат сплющен до двухмерного результирующего набора, и данные скрещиваются соответственно и позже сгруппированы с помощью элементов управления отчетами ,

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

/* 
SELECT 
    { 
     // it is best practice to put measures on columns 
     [Measures].[TotalCount] 
    } 
    ON COLUMNS, 
    NON EMPTY 
    { 
     // if you want multiple dimension to be aggregated, you should cross join these 
     Hierarchize ({ [Offer].[GrandTotal], [Offer].[GrandTotal].Children }) } 
     * // cross join here 
     Hierarchize ({ [Circle].[GrandTotal], [Circle].[GrandTotal].Children }) 
    } 
    ON ROWS 
FROM 
    [SCMAircel_ActiveBase] 
WHERE 
    (
    //[Subscriber State].[GrandTotal], // i don't get this. You either need to filter for certain members, or you want members to be crossjoined. But putting a member hierarchy in filter doesn't make sense to me 
    {[Subscriber State].[GrandTotal].[ACTIVE], [Subscriber State].[GrandTotal].[Grace] } // like this for example 
    ,[Time].[2012].[${curMonth}].[${curDay}] 
    ) 
*/ 
+0

Привет Крис, я сделал изменения, как у сказал. Теперь это хорошо работает .. Спасибо .. – user969084