0

我在 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];

输出是:

在此处输入图像描述

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

4

2 回答 2

2

让我们先看看YTD文档——它需要成员表达式。您指定[Date].[Calendar].[Month].&[2003]了-这很奇怪,因为我认为年份= 2003,而不是月份。无论如何,如果你想获得最后 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]

现在稍微解释一下。Tail(EXISTING [Date].[Calendar].[Day].members,1).Item(0)为您提供多维数据集中存在的最后日期Calendar dimensions。你需要几个月,所以剩下两个步骤:

  • 获取此日期的年份
  • 获取今年存在于多维数据集层次结构中的月份

Ancestors这里用于获取 Year 成员(第二个参数 [Date].[Calendar].[Year])。现在我们已经转移到 Year 级别,所以我们准备使用Descendants函数获取所有月份,该函数给出与 [Year] 相关的所有级别成员,这里我们指定 [Month]。请同时查看列出的功能 MSDN 文档

于 2015-02-17T11:06:16.310 回答
2

试试这个:

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];

ps 这在我的运行良好SSMS

SELECT YTD([Date].[Calendar].[Month].&[2003])ON 0 FROM [Adventure Works];

这不是错误消息...

执行查询... 获得的对象类型:Microsoft.AnalysisServices.AdomdClient.CellSet 格式化。单元集由 1 行和 0 列组成。完成格式化。执行完成

于 2015-02-17T13:26:12.533 回答