函数calculate已用于true / false表达式,该表达式用作不允许的表过滤器表达式

时间:2017-04-28 05:08:09

标签: sql-server ssas dax ssas-tabular

我有一个在ssas表格模型中检查度量的当前月份和当前年份值,但由于类型不匹配,我无法执行此操作。为此,我创建了一个使用此dax查询的度量

:CurrMonthYear:=CONCATENATE(CONCATENATE("""",concatenate(year(now()),CONCATENATE(0,month(now())))),"""")       output: "201704"

...计算当前年份和当前月份。但是,当我用这样的度量给出这个值时:

SumOfRevisedForecast:=CALCULATE(SUM(DimRevisedForecast[RevisedForecast]),DimRevisedForecast[Approved] <>"N"  && DimRevisedForecast[Approved] <>blank(),'DimRevisedForecast'[CalendarYearMonth] =CurrMonthYear)

......这不起作用。虽然,给予&#34; 201704&#34;取代CurrMonthYear的作品。

有人可以帮助我吗?

提前致谢

1 个答案:

答案 0 :(得分:3)

问题不在于CurrMonthYear度量,它与您的第二个公式有关 - CALCULATE函数不接受度量作为条件,仅接受值。这就是为什么当你放置&#34; 201704&#34;显式但在使用度量时失败。

一个常见的解决方案是将标准包装到FILTER函数中,例如:

CALCULATE(SUM(DimRevisedForecast[RevisedForecast]), 
          FILTER ('DimRevisedForecast',  
                  'DimRevisedForecast'[CalendarYearMonth] = [CurrMonthYear])

这个问题的一个很好的解释是: FILTER() – When, Why, & How to Use It