SSAS的问题:集合的定义导致循环引用

SSAS的问题:集合的定义导致循环引用,ssas,mdx,Ssas,Mdx,这是确定的,并返回过去30天的默认度量值之和: SELECT FROM [OurCube] WHERE ( closingperiod( [Date].[Date - Calendar Month].[Calendar Day], [Date].[Date - Calendar Month].defaultmember ): closingperiod(

这是确定的,并返回过去30天的默认度量值之和:

SELECT
FROM    [OurCube]  
WHERE   (
        closingperiod(
            [Date].[Date - Calendar Month].[Calendar Day],
            [Date].[Date - Calendar Month].defaultmember
            ):
        closingperiod(
            [Date].[Date - Calendar Month].[Calendar Day],
            [Date].[Date - Calendar Month].defaultmember
            ).ITEM(0).LAG(30)
            )
如何将
WHERE
子句中的日期集转移到
WITH
子句中?
我尝试了以下操作,但它创建了详细的错误消息:

WITH 
    SET [30Days] AS
    {
    closingperiod(
            [Date].[Date - Calendar Month].[Calendar Day],
            [Date].[Date - Calendar Month].defaultmember
            ):
    closingperiod(
        [Date].[Date - Calendar Month].[Calendar Day],
        [Date].[Date - Calendar Month].defaultmember
        ).ITEM(0).LAG(30)
    }
SELECT
FROM  [OurCube]  
WHERE (
      [30Days]
      )
正在执行查询…
30天集合的定义包含循环引用。
执行完毕


我认为这是SSA的一个局限性,与查询不同部分的执行处理有关;即使使用子查询(即FROM(SELECT…)而不是WHERE也无法解决问题

您可以在架构级别定义集合:

CREATE STATIC SET [OurCube].[30Days] as ...
或者取决于会话级别的客户端应用程序:

CREATE SESSION STATIC SET SET [OurCube].[30Days] as ...

+谢谢你,马克。您提到的
子查询
和不同级别的声明这两个主题对我来说都是新的,听起来值得探讨。离题:如何呈现
MDX
的结果?有趣-如果不使用
SSAS
,如何构建多维数据集?因此,不在
SSRS
或非MS多维数据集工具中呈现结果?