Powerbi 使用IF和and函数的DAX
我正在尝试创建一个带有值和预测的趋势表。预测需要从当前月份开始。我正在使用此dax函数:Powerbi 使用IF和and函数的DAX,powerbi,dax,Powerbi,Dax,我正在尝试创建一个带有值和预测的趋势表。预测需要从当前月份开始。我正在使用此dax函数: Spend Forecast = IF ( OR ( DIVIDE ( CALCULATE ( SUM ( refv_Spend_Cap[Spend_2019] ), FILTER ( refv_Spend_Cap, refv_Spend_Cap[Split] = "Spend Actual" )
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
),
""
)
支出预测=
如果(
或(
分开(
算计(
总额(参考费用上限【2019年费用】,
过滤器(参考值支出上限,参考值支出上限[拆分]=“实际支出”)
),
1000000
)
< 1,
分开(
算计(
总额(参考费用上限【2019年费用】,
过滤器(参考值支出上限,参考值支出上限[Ind\U Monthend]=“x”)
),
1000000
)
< 1
),
分开(
算计(
总额(参考费用上限【2019年费用】,
过滤器(参考支出上限,参考支出上限[拆分]=“支出预测”)
),
1000000
),
""
)
计算公式用于检查这两个条件是否满足:
如果没有值,则填充预测,或者如果ind-monthend='x',则应填充预测,如果不满足这两个条件,则应将其保留为空。
查询中没有语法错误,但我得到以下错误:
True/False表达式未指定列。每一个都是真/假
用作表筛选器表达式的表达式必须精确引用
一栏
我哪里出错了?很难理解这么长的公式。最好的做法是将它们分解为多个度量。例如,您的代码可以按如下方式重新编写: 创建基本度量:
Total Spend = SUM ( refv_Spend_Cap[Spend_2019] ) / 1000000
现在重新使用基本度量来创建3个条件度量。无需在此处使用过滤器:
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], "")
Forecast=IF([实际支出]<1 | |[支出X]<1,[支出预测],“”)
理解正在发生的事情非常容易,调试也更容易。您还将获得性能奖金,因为(通常)重复使用的度量值只缓存和计算一次
试试这段代码,如果它仍然给你带来问题,描述一下新的错误,我会帮助你修复它
顺便说一句,有一个流行的免费工具来格式化您的DAX代码:
理解这么长的公式很难。最好的做法是将它们分解为多个度量。例如,您的代码可以按如下方式重新编写: 创建基本度量:
Total Spend = SUM ( refv_Spend_Cap[Spend_2019] ) / 1000000
现在重新使用基本度量来创建3个条件度量。无需在此处使用过滤器:
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], "")
Forecast=IF([实际支出]<1 | |[支出X]<1,[支出预测],“”)
理解正在发生的事情非常容易,调试也更容易。您还将获得性能奖金,因为(通常)重复使用的度量值只缓存和计算一次
试试这段代码,如果它仍然给你带来问题,描述一下新的错误,我会帮助你修复它
顺便说一句,有一个流行的免费工具来格式化您的DAX代码: