函数计算已在真/假表达式中使用,该表达式用作不允许的表过滤器表达式

Dee*_*shu 4 sql-server ssas dax ssas-tabular

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

:CurrMonthYear:=CONCATENATE(CONCATENATE("""",concatenate(year(now()),CONCATENATE(0,month(now())))),"""")       output: "201704"
Run Code Online (Sandbox Code Playgroud)

...计算当前年份和当前月份。但是当我以这样的方式给出这个值时:

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

...这不起作用。尽管如此,用“201704”代替 CurrMonthYear 是有效的。

有人可以帮我吗?

提前致谢

RAD*_*ADO 12

问题不在于 CurrMonthYear 度量,而在于您的第二个公式 - CALCULATE 函数不接受度量作为标准,只接受值。这就是为什么当您明确输入“201704”时它有效但在使用该度量时失败的原因。

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

CALCULATE(SUM(DimRevisedForecast[RevisedForecast]), 
          FILTER ('DimRevisedForecast',  
                  'DimRevisedForecast'[CalendarYearMonth] = [CurrMonthYear])
Run Code Online (Sandbox Code Playgroud)

这个问题的一个很好的解释在这里: FILTER() – 何时、为什么和如何使用它