2014-04-16 38 views
1

我目前正在研究一块MDX代码,其中NON EMPTY无法过滤NULL值。这实际上列出了昨天所有帐户的DEMO_KPI。由于并非所有帐户都在当天处于活动状态,因此结果集应该非常小。 MDX使用预定义的集合来查找昨天。我认为昨天发现的复杂性来自过去的设计。我是一个新手MDX开发人员,试图找出为什么这个查询返回NULL,它仍然是一个谜。使用NON EMPTY的MDX查询不过滤NULL NULL

SELECT 
     NON EMPTY { [yesterday_1] } ON COLUMNS, 
     NON EMPTY { [Account].[Account ID].[All].CHILDREN } ON ROWS 
    FROM [DEMO] 
    WHERE ([DIM_1].[Hierarchy_1].&[xyz], [Dim_2].[Hierarchy_2].&[abc], [Measures].[Demo KPI]) 

MDX使用计算好的措施,我在这里作为一个单一的一套代码来表示..

WITH 
     SET [base_yesterday_1] AS 
     FILTER(
     [Date].[Date].[Date].MEMBERS, 
     [Date].[Date].CURRENTMEMBER.NEXTMEMBER.PROPERTIES("CALENDAR DATE NO PADDING")=format(NOW(), 'M/d/yyyy') 
     ) 
     SET [cyesterday_1] AS 
     EXISTS(
     [Date].[Calendar].[Date].MEMBERS, 
     [base_yesterday_1] 
     ).ITEM(0).ITEM(0) 
     SET [yesterday_1] AS 
     {cyesterday_1.ITEM(0).ITEM(0)} 
    SELECT 
     NON EMPTY { [yesterday_1] } ON COLUMNS, 
     NON EMPTY { [Account].[Account ID].[All].CHILDREN } ON ROWS 
    FROM [DEMO] 
    WHERE ([DIM_1].[Hierarchy_1].&[xyz], [Dim_2].[Hierarchy_2].&[abc], [Measures].[Demo KPI]) 

中的结果将是,因为所有的空的回报,并影响客户端性能的稀疏。

试过更换EXISTSNONEMPTY这不过滤NULLS either.Is有没有办法来解决这个问题,或者重写MDX语句,结果不包含空值帮助吗?

回答

0

NON EMPTY的行从显示器,将有NULL所有列不包括行,NON EMPTY为从列,将显示NULL所有行显示排除列。

我不确定您的数据内容。但是,也许这有助于将包含[Measures].[Demo KPI]度量值的度量值组的名称添加到引号中,作为EXISTS的第三个参数。也许这有助于在ON ROWS之前直接添加HAVING子句,该子句可以使用可针对每行评估的任何条件来限制要显示的行。

+1

嗨弗兰克 - 因为自定义集不是上下文感知(除了WHERE子句),这是否会影响用户将'currentmember'放在集合[base_yesterday_1]中? – whytheq

+0

@whytheq好点!可能''[base_yesterday_1]''始终是空集,因为'[Date]。[Date] .CURRENTMEMBER'是日期层次结构的默认成员,大概是'All'成员,它没有'NEXTMEMBER'。 – FrankPl