MDX查询包括日期范围

时间:2015-01-20 21:46:40

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

我正在使用此查询(MDX)。它返回数据,但它返回数据多年,我试图在日期范围内获取日期:例如,如果我想要10/1/2013,查询返回10/1 / 2013,10 / 1 / 2014,10 / 1/2015
我正在寻找具体的日期范围,2013年10月13日和2014年1月13日 为什么我要多年,我特别要求该日期范围?

SELECT              {[Measures].[Network Calls Received]} 
                    ON COLUMNS,
                    non empty               

                   [Dim Time].[Half Hour of Day].members  ON Rows

FROM 

                  [OTS Analysis Services]
      where [Dim Date].[Date].&[10/13/2013]:[Dim Date].[Date].&[01/13/2014]

2 个答案:

答案 0 :(得分:1)

您的过滤器看起来有一个错误的密钥。一旦使用了错误的密钥,服务器就会使用NULL而不是它。

以下是一个例子:

未过滤(显示数据样本): SSAS_WrongKeys_Unfiltered

2014年3月至2014年6月正确过滤: SSAS_WrongKeys_FilteredGood

比我们向正确的成员添加错误的密钥(和使用NULL一样!): SSAS_WrongKeys_FilteredBad_Right

一旦我们使用了两个错误的密钥,就没有机会弄清楚所使用的维度(与两个NULL相同): SSAS_WrongKeys_FilteredBad_Both

请检查两位成员,尤其是[Dim Date]。[Date]。& [01/13/2014]。看起来这个维度中没有这样的成员。

解决格式的键也需要检查,就像BI Dude前一段时间写的那样(非常感谢他!)。

答案 1 :(得分:0)

我认为问题在于您的参考。通常维度成员键是整数。 所以你的范围应该是

 where ([Dim Date].[Date].&[20131013]:[Dim Date].[Date].&[20140113])

您可以通过以下方式查看会员参考:

  1. 连接到SSMS Analysis Services
  2. 创建新的MDX查询。
  3. 将日期成员从层次结构拖到编辑器。