Ssas 过滤多维MDX查询

Ssas 过滤多维MDX查询,ssas,mdx,crosstab,Ssas,Mdx,Crosstab,我有一个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],

我有一个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] 

并尝试使用多个交叉联接,但解决方案似乎总是过于冗长,我相信有一种更简单的方法。

我发现最令人满意的方法是使用子多维数据集:

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]
)

这意味着需要通过第二个交叉表获得“总计”数字,该交叉表使用相同的查询在整个集合上分组,与单独的成员相对。

4个轴似乎有点多-这是一个子选择吗?我不认为有一种方法可以将交叉表分组,而不将集合放在单独的轴上。2上的
和3
上的
有什么意义?你们有四维监视器吗?这是针对Telerik交叉表控件的。您可以将尺寸与分组表达式结合使用来进行水平和垂直计算。请您解释一下轴2和轴3的用法-这不是我以前见过的。我意识到有许多备用轴可以使用-但除了在子立方体中之外,使用它们的原因是什么?是否有识别它们的软件?这是针对Telerik交叉表控件的。将尺寸标注与分组表达式结合使用,以进行水平和垂直计算。