首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mdx查询中的时间范围筛选

mdx查询中的时间范围筛选
EN

Stack Overflow用户
提问于 2013-09-18 11:54:55
回答 1查看 2K关注 0票数 1

我们有一个具有以下值的表:

ItemName Qty位日期

Item1 100 1/1/2011

Item2 150 1/5/2011

Item3 200 1/14/2011

Item4 250 1/20/2011

Item5 1000 2/1/2011

在MDX查询中,我们需要根据日期范围过滤数据。假设我们需要获取日期范围为01/01/2011至01/31/2011的项目及其数量,则使用以下MDX查询:

代码语言:javascript
运行
复制
SELECT 
   NON Empty 
      {[Final Report View For Scorecards].[F Bit Date].Children} ON ROWS, 
   NON Empty 
      {[Measures].[Qty]} ON COLUMNS 
FROM 
  ( 
  SELECT 
     ( 
    {[Final Report View For Scorecards].[F Bit Date].&[2011-01-01T00:00:00] : 
     [Final Report View For Scorecards].[F Bit Date].&[2011-01-31T00:00:00]} 
     ) ON COLUMNS 
  FROM [FinalReportView] 
  )

在这里,当FromDate和ToDate参数作为01/01/2011和01/20/2011传递时,将正确检索项目1至4及其各自的qty's。但是当FromDate和ToDate作为01/01/2011和01/31/2011 (或) 01/01/2011和01/19/2011通过时,它甚至返回错误的Item5值。也就是说,只有当表中可用的确切日期作为参数传递时,它才返回正确的结果。但是,当传递表中不可用的日期时,将返回整个数据集。

当使用“过滤器”时,它是相同的。

对这个问题有什么建议吗?

EN

Stack Overflow用户

回答已采纳

发布于 2013-09-18 12:23:53

如果使用不存在的成员名称,则(如果已将维度的MdxMissingMemberMode配置为等效于Ignore的默认设置),则Analysis将无效成员名转换为NULL。range运算符:null解释为无界的,也就是说,如果在范围的右侧使用null,它的意思是“到级别的最后一个成员”,而在:的左侧,它的意思是“来自级别的第一个成员”。

你能做些什么来解决这个问题:

  • 要么注意只生成现有成员的名称
  • 或者用足够大的日期来填充维度表,这样就不会产生问题了。现在您不需要添加任何事实,只需在维度表中添加一个条目。
  • 或者在MDX中使用一些字符串逻辑来查找下一个存在(对于范围的左侧)或前一个存在(对于范围的右侧)。您可以在MDX中使用VBA字符串函数。
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18871578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档