Ssas 如何在SSDT中使用MeasureExpression?

Ssas 如何在SSDT中使用MeasureExpression?,ssas,mdx,sql-server-data-tools,Ssas,Mdx,Sql Server Data Tools,我的事实表中有这样的内容: 名为dimType的维度,可以具有以下值“FIND,LOSE,GIFT” 和一个名为Count的度量值,该度量值为正数 我想在SSDT中通过SUMAggregateFunction使用此度量值,但有一点变化,在聚合之前,如果它是LOSE类型,我想对其进行计数 例: 类型:查找/Count:12 类型:丢失/Count:5 类型:礼物/Count:4 然后:总和(计数)=12-5+4=11 我应该在度量属性中使用MeasureExpression?我该怎么做呢?实际上,

我的事实表中有这样的内容:

名为dimType的维度,可以具有以下值“FINDLOSEGIFT” 和一个名为Count的度量值,该度量值为正数

我想在SSDT中通过SUMAggregateFunction使用此度量值,但有一点变化,在聚合之前,如果它是LOSE类型,我想对其进行计数 例:

类型:查找/Count:12
类型:丢失/Count:5
类型:礼物/Count:4

然后:总和(计数)=12-5+4=11


我应该在度量属性中使用MeasureExpression?我该怎么做呢?

实际上,最简单的方法是SQL:

iif(type = 'LOSE',-count,count)
如果出于某种原因需要它,无论是正聚合还是负聚合,都可以使用MDX计算

简单一点:

[Measures].[Count] - ([dimType].[Type].[LOSE],[Measures].[Count]) * 2
通用一号:

Sum(
    Existing [dimType].[Type].[Type].Members,
    Iif(
        [dimType].[Type].CurrentMember is [dimType].[Type].[LOSE],
        -[Measures].[Count],
        [Measures].[Count]
    )
)

非常感谢:)为了更好的测试,我将[dimType].[Type]更改为[Product].[Category](我希望[Bike]为负数,而不是[LOSE]),并将[Measures].[Count]更改为[Measures].[Internet Order Quantity],结果如图所示,如果我筛选类别,则F1_Simple在选择行上的类别时不正确,F2_sum在不选择行上的类别时不正确。请尝试Excel,您会感到惊讶。:)问题是BIRD浏览器过滤器生成器。BIRD将所有内容都放在subselect中,这对于某些类型的计算是不正确的(由于子查询,计算根本不知道过滤了什么)。同时,Excel不允许您生成子选择,从而防止出现意外结果。是的,它在任何情况下都应按预期工作,但有时可能会显得很慢。