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

时间:2013-07-19 15:35:35

标签: ssas mdx

这没关系,并返回过去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天集的定义包含循环引用   执行完成

1 个答案:

答案 0 :(得分:3)

我认为这是SSAS的限制,并且与查询的不同部分的执行处理有关;即使使用SUB-QUERY(即FROM(SELECT ...))而不是WHERE也无法解决问题。

您可以在架构级别定义您的设置:

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

或者取决于会话级别的客户端应用程序:

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