Sql server 2012 已获取类型为Microsoft.AnalysisServices.AdomdClient.CellSet的对象

Sql server 2012 已获取类型为Microsoft.AnalysisServices.AdomdClient.CellSet的对象,sql-server-2012,ssas,mdx,ssms-2012,Sql Server 2012,Ssas,Mdx,Ssms 2012,我在SSMS 2012中运行此查询 SELECT YTD([Date].[Calendar].[Month].&[2003])ON 0 FROM [Adventure Works]; 我得到了这个错误 正在执行查询。。。获取类型为的对象: Microsoft.AnalysisServices.AdomdClient.CellSet格式。细胞集 由1行和0列组成。已完成格式设置。执行完毕 我想从Cube和aginst中选择最后12个月,以显示一些度量 编辑1: 当我试图对其中一个度量值触

我在SSMS 2012中运行此查询

SELECT YTD([Date].[Calendar].[Month].&[2003])ON 0 FROM [Adventure Works];
我得到了这个错误

正在执行查询。。。获取类型为的对象: Microsoft.AnalysisServices.AdomdClient.CellSet格式。细胞集 由1行和0列组成。已完成格式设置。执行完毕

我想从Cube和aginst中选择最后12个月,以显示一些度量

编辑1:

当我试图对其中一个度量值触发它时,它显示为
null

SELECT YTD([Date].[Calendar].[Month].&[2003].[8])ON 0 ,
[Measures].[Internet Sales Amount] on 1
FROM [Adventure Works];
输出为:

我缺少的地方。有人可以将我重定向到正确的方向

让我们先看看文档-它需要成员表达式。您指定了
[Date].[Calendar].[Month].&[2003]
-这很奇怪,因为我假设是Year=2003,而不是Month。无论如何,如果你想得到最后12个月,你应该试试

select
{
   [Measures].[Total Sales] // for example
} on 0,
{
   Descendants(
               Ancestors(
                          Tail(EXISTING [Date].[Calendar].[Day].members,1).Item(0),
                          [Date].[Calendar].[Year]
                        ) // end ancestors
            ,[Date].[Calendar].[Month]
              ) // end descendants

 }
 on 1
from [YourCube]
现在我来解释一下<代码>尾部(现有[Date].[Calendar].[Day]。成员,1)。项(0)提供多维数据集中存在的最后日期
日历维度
。您需要几个月的时间,因此还有两个步骤:

  • 获取此日期的年份
  • 获取多维数据集层次结构中存在的今年月份
祖先
此处用于获取年份成员(第二个参数[Date].[Calendar].[Year])。现在我们已经移到了年级别,所以我们准备使用
子体
函数获取所有月份,该函数提供与[Year]相关的级别的所有成员,这里我们指定[Month]。请同时查看列出的函数MSDN文档

让我们先看看文档-它需要成员表达式。您指定了
[Date].[Calendar].[Month].&[2003]
-这很奇怪,因为我假设是Year=2003,而不是Month。无论如何,如果你想得到最后12个月,你应该试试

select
{
   [Measures].[Total Sales] // for example
} on 0,
{
   Descendants(
               Ancestors(
                          Tail(EXISTING [Date].[Calendar].[Day].members,1).Item(0),
                          [Date].[Calendar].[Year]
                        ) // end ancestors
            ,[Date].[Calendar].[Month]
              ) // end descendants

 }
 on 1
from [YourCube]
现在我来解释一下<代码>尾部(现有[Date].[Calendar].[Day]。成员,1)。项(0)提供多维数据集中存在的最后日期
日历维度
。您需要几个月的时间,因此还有两个步骤:

  • 获取此日期的年份
  • 获取多维数据集层次结构中存在的今年月份
祖先
此处用于获取年份成员(第二个参数[Date].[Calendar].[Year])。现在我们已经移到了年级别,所以我们准备使用
子体
函数获取所有月份,该函数提供与[Year]相关的级别的所有成员,这里我们指定[Month]。请同时检查MSDN文档中列出的功能

尝试以下操作:

SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,YTD([Date].[Calendar].[Date].&[20070114]) ON 1
FROM [Adventure Works];
它使用我们指定的级别返回年初至今的日期,即天数:

然后,我们可以使用如下自定义度量来聚合上述内容:

WITH 
  MEMBER [Date].[Calendar].[YTDtotalTo14jan] AS 
    Aggregate(YTD([Date].[Calendar].[Date].&[20070114])) 
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,[Date].[Calendar].[YTDtotalTo14jan] ON 1
FROM [Adventure Works];
看来你刚刚选了一个糟糕的2003年

要返回过去12个月,我将使用
Tail
功能:

SELECT 
  {} ON 0 //<<add whatever measures you like in here
 ,Tail
  (
    [Date].[Calendar].[Month]
   ,12
  ) ON 1
FROM [Adventure Works];
这不是一条错误消息

正在执行查询。。。获取类型为的对象: Microsoft.AnalysisServices.AdomdClient.CellSet格式。细胞集 由1行和0列组成。完成格式化。执行完毕

试试这个:

SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,YTD([Date].[Calendar].[Date].&[20070114]) ON 1
FROM [Adventure Works];
它使用我们指定的级别返回年初至今的日期,即天数:

然后,我们可以使用如下自定义度量来聚合上述内容:

WITH 
  MEMBER [Date].[Calendar].[YTDtotalTo14jan] AS 
    Aggregate(YTD([Date].[Calendar].[Date].&[20070114])) 
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,[Date].[Calendar].[YTDtotalTo14jan] ON 1
FROM [Adventure Works];
看来你刚刚选了一个糟糕的2003年

要返回过去12个月,我将使用
Tail
功能:

SELECT 
  {} ON 0 //<<add whatever measures you like in here
 ,Tail
  (
    [Date].[Calendar].[Month]
   ,12
  ) ON 1
FROM [Adventure Works];
这不是一条错误消息

正在执行查询。。。获取类型为的对象: Microsoft.AnalysisServices.AdomdClient.CellSet格式。细胞集 由1行和0列组成。完成格式化。执行完毕


实际上这不是一个错误,查询只是不给出结果。您是否可以尝试在不使用YTD函数的情况下提取单个成员,如[Date].[Calendar].[Month].&[2003].[8]?实际上这不是一个错误,查询不会给出任何结果。您是否可以尝试在不使用YTD函数的情况下提取单个成员,如[Date].[Calendar].[Month].&[2003].[8]?