【问题标题】:MDX Query to include date rangeMDX 查询以包含日期范围
【发布时间】:2015-01-20 21:46:39
【问题描述】:

我正在使用此查询 (MDX)。它正在返回数据,但它正在返回多年的数据,我试图只获取日期范围内的日期:例如,如果我想要 2013 年 10 月 1 日,则查询返回 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]

【问题讨论】:

  • 我正在寻找一个 mdx 来返回那个日期,实际上要寻找的是所有收到的网络呼叫(一个答案),其中日期范围是上述范围,时间是 07:30( 19:30)

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


【解决方案1】:

您的过滤器似乎有一个错误的键。一旦使用了错误的密钥,服务器将使用 NULL 代替它。

这是一个例子:

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

从 2014 年 3 月到 2014 年 6 月正确过滤:

然后我们将错误的键添加到正确的成员(与使用 NULL 相同!):

一旦我们使用了两个错误的键,就没有机会找出使用的维度(与两个 NULL 相同):

请检查两个成员,尤其是 [Dim Date].[Date].&[01/13/2014]。这个维度好像没有这样的成员。

正如 BI Dude 前段时间所写的那样,密钥寻址格式也需要检查(非常感谢他!)。

【讨论】:

  • 这个答案是正确的——我也遇到过同样的情况——但当我们的日期维度是完整的时,当使用日期范围时不是这样。当对不同维度使用冒号时,我也挠了很久,然后意识到运算符的一侧被评估为 Null。
【解决方案2】:

我相信问题出在您的参考上。通常维度成员键是一个整数。 所以你的范围应该看起来像

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

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

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

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多