Ssas 用于获取非空值记录的MDX查询

Ssas 用于获取非空值记录的MDX查询,ssas,mdx,Ssas,Mdx,我是MDX的新手,你们中有谁能帮我解答以下问题吗 1) 从上面的结果集中,如何使用下面的查询消除column1和column3中具有空值的行 WITH MEMBER TotalPatientCnt as '[Measures].[HealthPlanPatientCnt]' MEMBER PrevalencePercent as '([Measures].[PatientCnt]*1.00/[Measures]. [TotalPatientCnt])*100' SELECT NON

我是MDX的新手,你们中有谁能帮我解答以下问题吗

1) 从上面的结果集中,如何使用下面的查询消除column1和column3中具有空值的行

WITH
MEMBER TotalPatientCnt as '[Measures].[HealthPlanPatientCnt]'
MEMBER PrevalencePercent as '([Measures].[PatientCnt]*1.00/[Measures].    [TotalPatientCnt])*100'

SELECT 
NON EMPTY {[DimCP_Population].[Dr Key].[Dr Key]}
ON rows, 
 { 
     [Measures].[PatientCnt] ,[Measures].[TotalPatientCnt]
     ,[Measures].[PrevalencePercent]

}
ON columns
FROM [StrategyCompanionDWCube]
WHERE 
(
    [DimAnchorDate].[Date Key].&[20121231], 
    [DimCP_PCP].[PCP Key].&[124],
    [DimProduct].[Product Key].&[15],
    [DimHealthPlan].[Health Plan Key].&[1]
)
)

2) 我分别有3个维度和3个度量

[DimCP_PCP], [DimProduct], [DimHealthPlan]

pcpCnt, productCnt, HelahtPlanPatientCnt
我想根据带有参数值的维度类型构建相同的
TotalPatientCnt
成员,希望需要编写case语句,但我无法编写case语句,请在下面的示例中帮助我们

WITH MEMBER TotalPatientCnt as 
case 
when [DimProduct].[Product Key].&[if getting anymember] then
'[Measures].[productCnt]'
when [DimHealthPlan].[Health Plan Key].&[if getting anymember] then
'[Measures].[HealthPlanPatientCnt]'
when [DimCP_PCP].[PCP Key].&[if getting anymember] then
'[Measures].[pcpCnt]'
如果我从
[DimCP\u PCP]
获取任何参数,例如[
DimCP\u PCP].[PCP Key]。&[124]
需要显示TotalPatientCnt成员,如下所示

WITH MEMBER TotalPatientCnt as '[Measures].[pcpCnt]'
WITH MEMBER TotalPatientCnt as '[Measures].[HealthPlanPatientCnt]'
WITH MEMBER TotalPatientCnt as '[Measures].[productCnt]'
如果我从
[DimHealthPlan]
获取任何参数,例如
[DimHealthPlan].[Health Plan Key].&[1]
需要显示
TotalPatientCnt
成员,如下所示

WITH MEMBER TotalPatientCnt as '[Measures].[pcpCnt]'
WITH MEMBER TotalPatientCnt as '[Measures].[HealthPlanPatientCnt]'
WITH MEMBER TotalPatientCnt as '[Measures].[productCnt]'
如果我从
[DimProduct]
示例
[DimProduct].[Product Key].&[15]
获取任何参数,则需要显示
TotalPatientCnt
成员,如下所示

WITH MEMBER TotalPatientCnt as '[Measures].[pcpCnt]'
WITH MEMBER TotalPatientCnt as '[Measures].[HealthPlanPatientCnt]'
WITH MEMBER TotalPatientCnt as '[Measures].[productCnt]'

要回答您的第一个问题:

由于
NON-EMPTY
不适用于此处的行,由于要排除的记录的第二列不为空,您可以使用很少记录的
HAVING
子句,如下所示:

...
{[DimCP_Population].[Dr Key].[Dr Key]}
HAVING NOT IsEmpty([Measures].[PatientCnt])
   AND NOT IsEmpty([Measures].[PrevalencePercent])
ON rows
...

要回答您的第一个问题:

由于
NON-EMPTY
不适用于此处的行,由于要排除的记录的第二列不为空,您可以使用很少记录的
HAVING
子句,如下所示:

...
{[DimCP_Population].[Dr Key].[Dr Key]}
HAVING NOT IsEmpty([Measures].[PatientCnt])
   AND NOT IsEmpty([Measures].[PrevalencePercent])
ON rows
...

在这里,您可能会得到您的答案,并明确空和空的概念


在这里,您可能会得到您的答案,并明确空和空的概念,这是两个问题。我建议你删除第二个问题,并将其作为单独的问题发布。这是两个问题。我建议你删除第二个,并将其作为单独的问题发布。你好,弗兰克,非常感谢。它正按照我的要求工作。请您提供第二点的解决方案,正如我在对您的问题的评论中所写的那样,以使搜索和重复使用答案对其他可能会出现问题的人来说更加容易。G通过Google查找您的问题和我的答案,我建议您编辑您的问题,使其仅包含一个问题和一个适当的标题,并将第二个问题放入一个单独的问题中。@FrankPl我也有类似的问题,但由于我在查询中使用topcount,它还考虑topcount中的空值,所以如果我的结果包括null,当我做topcount 3时,它返回10,20,30,当我做topcount 4时,它返回10,20,30。意味着它也在topcount中考虑空值。请帮助我,弗兰克,非常感谢。它正按照我的要求工作。请您提供第二点的解决方案,正如我在对您的问题的评论中所写的那样,以使搜索和重复使用答案对其他可能会出现问题的人来说更加容易。G通过Google查找您的问题和我的答案,我建议您编辑您的问题,使其仅包含一个问题和一个适当的标题,并将第二个问题放入一个单独的问题中。@FrankPl我也有类似的问题,但由于我在查询中使用topcount,它还考虑topcount中的空值,所以如果我的结果包括null,当我做topcount 3时,它返回10,20,30,当我做topcount 4时,它返回10,20,30。意味着它也在topcount中考虑空值。请帮忙