Ssas MDX,其中vs子多维数据集混淆

Ssas MDX,其中vs子多维数据集混淆,ssas,mdx,olap,Ssas,Mdx,Olap,我有以下MDX: SELECT NON EMPTY { [Measures].[My Measure] } ON COLUMNS FROM ( SELECT NONEMPTY(StrToMember(@StartDate,CONSTRAINED):StrToMember(@EndDate,CONSTRAINED)) ON COLUMNS, NONEMPTY(

我有以下MDX:

SELECT NON EMPTY 
       {
            [Measures].[My Measure]
       } ON COLUMNS 
FROM 
(
    SELECT 
           NONEMPTY(StrToMember(@StartDate,CONSTRAINED):StrToMember(@EndDate,CONSTRAINED)) 
           ON COLUMNS,

           NONEMPTY( STRTOSET(@Division)) 
           ON ROWS
    FROM
    (
        SELECT 
               NONEMPTY({[Project].[Project Status].&[Open],[Project].[Project Status].&[Closed]}) 
               ON COLUMNS,

               NONEMPTY(STRTOSET(@TargetLanguage)) 
               ON ROWS
        FROM [My Cube]
    )
    WHERE STRTOSET(@Project)
)
WHERE STRTOSET(@Requestor)
我的目标如下:在@StartDate、@EndDate、@Division、@TargetLanguage、@Project、@Requestor上进行筛选(除了将项目状态筛选为打开/关闭…)

他们唯一的方法我可以得到这些工作是玩子立方体和轴,直到我得到一个结果,似乎是正确的。。。例如,在这里,我不明白为什么在第二个子选择中,我不能简单地放一个:

Where STRTOSET(@TargetLanguage)
而不是把它放在行上。我不能100%肯定这是返回正确的数据,因为它是如此的复杂。。。有什么解释吗?到目前为止,谷歌没有任何帮助,这让我相信,将东西放在子多维数据集的行上并不是正确的解决方案

谢谢

试试这个:

我不是100%使用子多维数据集,而是重构您的代码,我认为这与:

SELECT NON EMPTY 
       {
            [Measures].[My Measure]
       } ON COLUMNS 
FROM 
       [My Cube]
WHERE 
(
    STRTOSET(@Requestor),
    STRTOSET(@TargetLanguage), 
    {[Project].[Project Status].&[Open],[Project].[Project Status].&[Closed]},
    STRTOSET(@Division),
    {StrToMember(@StartDate,CONSTRAINED):StrToMember(@EndDate,CONSTRAINED)},
    STRTOSET(@TargetLanguage)
)
说实话,第一个非空的似乎也不需要


在我看来,内部子立方体只是过滤切片,我认为它们非常简单,可以添加到主过滤器中。

我将最终只构建1个子立方体,在1、2、3和更多轴上放置集合和维度。这将是一个清晰、快速的mdx查询。