我们有一个包含以下值的表:
ItemName数量F位日期
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查询:
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'时也一样。
有关此问题的任何指示?
答案 0 :(得分:0)
如果使用不存在的成员名称,则(如果已将维度的MdxMissingMemberMode配置为等效于Ignore
的默认设置),则Analysis Services会将无效成员名称转换为{{ 1}}。范围运算符NULL
将:
解释为无界,i。即如果您在范围的右侧使用null
,则表示“到级别的最后一个成员”,而在null
的左侧则表示“从级别的第一个成员”
你能做些什么来解决这个问题: