【问题标题】:MDX: add a condition to a measureMDX:向度量添加条件
【发布时间】:2021-10-16 09:33:08
【问题描述】:

我想修改一个度量以使用集合进行过滤:如果成员属于集合,则度量返回默认度量,否则返回 0。

这是我的尝试:

with
MEMBER spename AS [Dim misc].[SpePats].[Speciality Id].[{1037B3B2-EB0C-4DA3-BD9D-EB54F6CA92A5}].FirstChild.membervalue
SET spesSame AS filter([Dim misc].[SpePats].[Speciality Id].MEMBERS
,[Dim misc].[SpePats].CurrentMember.FirstChild.MemberValue = spename)--filter

MEMBER nb AS iif(IsEmpty(Intersect({[Dim misc].[SpePats].CurrentMember}
,spesSame))--intersect
,0
,Measures.[VParcours Nombre])

SELECT {nb} ON 0
,{[Dim misc].[SpePats].[Speciality Id].&[{1037B3B2-EB0C-4DA3-BD9D-EB54F6CA92A5}]
,[Dim misc].[SpePats].[Speciality Id].&[{1095C7D1-F24C-4E22-B2E4-4C2959E29FFD}]} ON 1
FROM [BDD PBM]

以下是一些解释: 首先,检索一些医院服务的特征名称。例如,名称可以是“妇科”。 然后,创建名称与 spename 相同的专业 id 集合,因此 spesSame 是名称为 'gynecology' 的专业 id 列表。

我需要的是构造nb,定义为:如果层次结构SpePats的currentmember属于spesSame(相交函数),则结果为患者数,否则为0,但结果始终为患者数患者(在我的请求中,在行中,第一个专业 id 属于 spesSame,而不是第二个)。

谢谢。

【问题讨论】:

    标签: ssas mdx


    【解决方案1】:

    好的,iif 的语法错误:正确的是:

    MEMBER nb AS iif(Intersect({[Dim misc].[SpePats].CurrentMember}
    ,spesSame).count=0--intersect
    ,0
    ,[Measures].[VPARCOURS Nombre])
    

    显然, isempty 测试单元格是否为空。如果有人可以进一步解释其背后的原因......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      相关资源
      最近更新 更多