Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 使用IF和and函数的DAX_Powerbi_Dax - Fatal编程技术网

Powerbi 使用IF和and函数的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" )

我正在尝试创建一个带有值和预测的趋势表。预测需要从当前月份开始。我正在使用此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
    ),
    ""
)
支出预测=
如果(
或(
分开(
算计(
总额(参考费用上限【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代码: