这没关系,并返回过去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天集的定义包含循环引用 执行完成
答案 0 :(得分:3)
我认为这是SSAS的限制,并且与查询的不同部分的执行处理有关;即使使用SUB-QUERY(即FROM(SELECT ...))而不是WHERE也无法解决问题。
您可以在架构级别定义您的设置:
CREATE STATIC SET [OurCube].[30Days] as ...
或者取决于会话级别的客户端应用程序:
CREATE SESSION STATIC SET SET [OurCube].[30Days] as ...