MDX查询不接受日期值

时间:2013-03-02 16:39:25

标签: sql-server-2008-r2 ssas mdx

我是SSAS新手,我正在尝试查询多维数据集,以按日期顺序检索一些测量组的数据。我希望在查询中指定的日期范围。我正在使用的查询是: -

SELECT
{
    [Measures].[Measure1],
    [Measures].[Measure2],
    [Measures].[Measure3]
} 
ON COLUMNS,
NON EMPTY{
   [Date].[AllMembers]
         } 
ON ROWS
FROM (SELECT ( STRTOMEMBER('2/23/2013', CONSTRAINED) : 
STRTOMEMBER('3/1/2013', CONSTRAINED) ) ON COLUMNS 
FROM   [MyCube])

SELECT { [Measures].[Measure1], [Measures].[Measure2], [Measures].[Measure3] } ON COLUMNS, NON EMPTY{ [Date].[AllMembers] } ON ROWS FROM (SELECT ( STRTOMEMBER('2/23/2013', CONSTRAINED) : STRTOMEMBER('3/1/2013', CONSTRAINED) ) ON COLUMNS FROM [MyCube])

然而它给了我以下错误
查询(10,16)违反了STRTOMEMBER函数中CONSTRAINED标志所施加的限制。

我尝试删除约束关键字,然后甚至是strtomember函数。但在每种情况下,我分别得到以下错误
查询(10,16)STRTOMEMBER函数需要1参数的成员表达式。使用了字符串或数字表达式。

* Query(10,14):function期望1参数的成员表达式。使用了字符串或数字表达式。 *

我可以从最后两个错误中了解到我需要包含约束关键字。但有谁能告诉我为什么这个查询不会执行?

3 个答案:

答案 0 :(得分:2)

作为成员表达式传递的字符串必须是完全限定的成员名称,或者解析为一个。使用与SELECT中相同的格式。

例如:

STRTOMEMBER('[Date].[2/23/2013]', CONSTRAINED)

修改:我刚注意到您的范围选择的语法看起来不对 - 您需要使用{...},而不是(...)

SELECT { 
    STRTOMEMBER('2/23/2013', CONSTRAINED) : 
    STRTOMEMBER('3/1/2013', CONSTRAINED) }

答案 1 :(得分:1)

请执行以下脚本。 通过右键单击并将其粘贴到STRTOMEMBER值中,提取日期维度属性进行复制。

它会正常工作。

 SELECT NON EMPTY { [Measures].[Internet Sales Amount] } ON COLUMNS 
 FROM ( SELECT ( STRTOMEMBER('[Date].[Date].&[20050701]')  : 
 STRTOMEMBER('[Date].[Date].&[20061007]') )  ON COLUMNS 
 FROM [Adventure Works]) 

答案 2 :(得分:1)

FROM ( SELECT (
   STRTOMEMBER(@FromDateCalendarDate, CONSTRAINED) :
   STRTOMEMBER(@ToDateCalendarDate, CONSTRAINED) ) ON COLUMNS