2015-09-24 108 views
0

我有一个MDX查询驱动与工作像预期的那样Telerik的交叉控制:过滤多维MDX查询

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

这是针对Telerik Crosstab控制。您可以将尺寸与分组表达式结合使用以进行水平和垂直计算。 – Gracie