[英]time range filter in mdx query
我们有一个具有以下值的表:
项目名称数量F位日期
项目1100 2011年1月1日
Item2 150 1/5/2011
项目3 200 2011年1月14日
项目4 250 1/20/2011
项目5 1000 2/1/2011
在MDX查询中,我们需要根据日期范围过滤数据。 假设我们需要获取日期范围为01/01/2011至01/31/2011的商品及其数量,我们使用以下MDX查询:
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。 但是,当FromDate和ToDate作为01/01/2011和01/31/2011(或)01/01/2011和01/19/2011传递时,它甚至返回Item5的值,这是错误的。 即,仅当表中可用的确切日期作为参数传递时,它才返回正确的结果。 但是,当传递表中不可用的日期时,将返回整个数据集。
使用“ FILTER”时相同。
有任何指向这个问题的指针吗?
如果使用不存在的成员名称,则(如果将维度的MdxMissingMemberMode配置为等效于Ignore
的默认设置),则Analysis Services会将无效的成员名称转换为NULL
。 范围运算符:
将null
解释为无界,即,如果在范围的右侧使用null
,则表示“到级别的最后一个成员”,而在左侧:
则表示“从级别的第一个成员开始”水平”。
您可以采取什么措施解决该问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.