【发布时间】:2014-04-16 06:44:14
【问题描述】:
我目前正在研究一段 MDX 代码,其中 NON EMPTY 无法过滤 NULL 值。这实际上列出了昨天所有帐户的 DEMO_KPI。由于当天并非所有帐户都处于活动状态,因此结果集应该非常小。 MDX 使用预定义的集合来查找昨天。我认为寻找昨天的复杂性是过去的设计。我是一个新手 MDX 开发人员,试图找出这个查询返回 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])
结果集将是稀疏的,因为所有空值都返回并影响客户端性能。
已尝试将EXISTS 替换为NONEMPTY,这也无助于过滤NULL。有没有办法解决这个问题或重写MDX 语句以使结果不包含NULL?
【问题讨论】:
标签: sql-server-2008-r2 ssas mdx