我正在尝试创建带有值和预测的趋势表。预测需要从当前月份开始。我正在使用此dax函数:
Spend Forecast =
IF (
OR (
DIVIDE (
CALCULATE (
SUM ( refv_Spend_Cap[Spend_2019] ),
FILTER ( refv_Spend_Cap, refv_Spend_Cap[Split] = "Spend Actual" )
),
1000000
)
< 1,
DIVIDE (
CALCULATE (
SUM ( refv_Spend_Cap[Spend_2019] ),
FILTER ( refv_Spend_Cap, refv_Spend_Cap[Ind_Monthend] = "x" )
),
1000000
)
< 1
),
DIVIDE (
CALCULATE (
SUM ( refv_Spend_Cap[Spend_2019] ),
FILTER ( refv_Spend_Cap, refv_Spend_Cap[Split] = "Spend Forecast" )
),
1000000
),
""
)
该公式正在计算以检查是否满足这两个条件: 如果没有值,则填充预测;如果ind monthend ='x',则应填充该预测;如果不满足这两个条件,则应将其留空。 查询上没有语法错误,但出现此错误:
True / False表达式未指定列。每个对/错 用作表过滤器表达式的表达式必须完全引用 一栏
我哪里出错了?
答案 0 :(得分:2)
很难理解这么长的公式。最好的做法是将它们分解为多种度量。例如,您的代码可以按以下方式重新编写:
创建基本指标:
Total Spend = SUM ( refv_Spend_Cap[Spend_2019] ) / 1000000
现在重新使用基本度量来创建3个条件度量。无需在此处使用FILTER:
Spend Actual = CALCULATE ( [Total Spend], refv_Spend_Cap[Split] = "Spend Actual" )
Spend X = CALCULATE ( [Total Spend], refv_Spend_Cap[Ind_Monthend] = "x" )
Spend Forecast = CALCULATE ( [Total Spend], refv_Spend_Cap[Split] = "Spend Forecast" )
那么最终结果就是:
Forecast = IF ( [Spend Actual] < 1 || [Spend X] < 1, [Spend Forecast], "")
了解正在发生的事情非常容易,并且更容易调试。由于(通常)重复使用的度量仅被缓存和计算一次,因此您还将获得性能提升。
请尝试使用此代码,如果它仍然给您带来问题,请描述新错误,我们将帮助您解决。
顺便说一句,有一个流行的免费工具可以格式化您的DAX代码: Dax Formatter