2015-09-24 3 views
0

У меня есть запрос MDX, который приводит в действие управление перекрестный Telerik, который работает, как ожидалось:фильтрация многомерных запросов многомерных выражений

WITH MEMBER [Product].[Product Group Name].[Total] as [Product].[Product Group Name].[All] 
select 
NON EMPTY{[Measures].[Annual Premium - Fact Distinct Transaction], 
[Measures].[Fact Distinct Transaction Count], 
[Measures].[API - Fact Distinct Transaction], 
[Measures].[Fact New Members Count]} on columns, 
NON EMPTY{ 
[Product].[Product Group Name].&[Protection], 
[Product].[Product Group Name].&[Pension], 
[Product].[Product Group Name].&[Savings and Investment], 
[Product].[Product Group Name].&[Child Savings], 
[Product].[Product Group Name].&[ISA], 
[Product].[Product Group Name].[Total] 
} on rows, 
NON EMPTY{[Region Manager].[Full Name].Children} on 2 
, 
NON EMPTY{[Transaction Type].[Premium Frequency].&[S],[Transaction Type].[Premium Frequency].&[M]} on 3 
from [Cube] 
where (
    {StrToMember('[Effective Date].[Date].&[2015-01-01T00:00:00]'):StrToMember('[Effective Date].[Date].&[2015-09-01T00:00:00]')}, 
    StrToMember('[Transaction Type].[Transaction Description].[All].[Net Issued]'), 
    [Adviser].[Status].&[A] 
) 

Я попросил, чтобы исключить

WHERE [Product].[Product Group Name].&[Pension] AND [Transaction Type].[Premium Frequency].&[S] 

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

+1

4 оси похоже немного - будет ли это подвыбор? – whytheq

+0

Я не думаю, что я могу сгруппировать кросс-таблицу без того, чтобы наборы были на отдельных осях. – Gracie

+1

какая точка 'на 2' и' на 3'? У вас есть 4-мерный монитор? – whytheq

ответ

0

Наиболее удовлетворительный подход, который я нашел, чтобы использовать подкуб:

SELECT 
    NON EMPTY{[Measures].[Annual Premium - Fact Distinct Transaction], 
    [Measures].[Fact Distinct Transaction Count], 
    [Measures].[API - Fact Distinct Transaction], 
    [Measures].[Fact New Members Count] 
    } on columns, 
    NON EMPTY 
    { 
    [Product].[Product Group Name].&[Protection], 
    [Product].[Product Group Name].&[Pension], 
    [Product].[Product Group Name].&[Savings and Investment], 
    [Product].[Product Group Name].&[Child Savings], 
    [Product].[Product Group Name].&[ISA] 
    } on rows, 
    NON EMPTY{[Region Manager].[Full Name].Children} on 2, 
    NON EMPTY{[Transaction Type].[Premium Frequency].&[S],[Transaction Type].[Premium Frequency].&[M]} on 3 
    from 
    (
     select 
     EXCEPT(
     CROSSJOIN([Product].[Product Group Name].Children, UNION([Transaction Type].[Premium Frequency].&[M] , [Transaction Type].[Premium Frequency].&[S])), 
     CROSSJOIN([Product].[Product Group Name].[Pension], [Transaction Type].[Premium Frequency].&[S]) 
     )on 0 
     from [Cube] 
    ) 

WHERE (
    {StrToMember('[Effective Date].[Date].&[2015-01-01T00:00:00]'):StrToMember('[Effective Date].[Date].&[2015-09-01T00:00:00]')}, 
    StrToMember('[Transaction Type].[Transaction Description].[All].[Net Issued]'), 
    [Adviser].[Status].&[A] 
) 

Это означает, что «Всего» цифры должны быть получены через вторую перекрестную таблицу, которая группируется по всей совокупности, используя тот же запрос, а не отдельный член.

+1

, пожалуйста, вы можете объяснить использование осей 2 и 3 - это не то, что я видел раньше. Я понимаю, что есть много запасных осей, которые можно использовать, но помимо встроенного субкуба, в чем причина их использования, есть ли программное обеспечение, которое их распознает? – whytheq

+0

Это было предназначено для управления Crosstab Telerik. Вы должны использовать измерения в сочетании с группировкой выражений с горизонтальными и вертикальными вычислениями. – Gracie

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