首页 > 解决方案 > dax中的高级IF

问题描述

当条件满足时,我需要更改我原来的“总预算金额”以在新的“TotalBudgetTest”中包含不同的公式。条件是当 art=220 它应该从 art 101 返回 15%*totalBudgettest + 从 art 220 的总预算金额。这意味着它是 15 * 1.321.049+ 1.878.566 我的问题是我的代码现在不添加当条件不满足时,值(1.878.566)的 15% 应返回总预算金额中的值

目标是使测量如图所示 在此处输入图像描述

我的代码是

TotalBudgetTest =
VAR _if =
    IF (
        HASONEVALUE ( Art[Art Code] ),
        SWITCH (
            VALUES ( Art[Art Code] ),
            101, [Project Cost Amount],
            220, [Total Budget Amount],
            [Total Budget Amount]
        )
    )
RETURN
    _if

任何人都可以帮助我吗?

标签: powerbidax

解决方案


您必须更改[Total Budget Amount]ArtCode 为 220 时的上下文。您必须将 SWITCH 语句中的该行更改为如下所示:


HASONEVALUE( Art[Art Code] ),
    SWITCH (
        VALUES ( Art[Art Code] ),
        101, [Project Cost Amount],
        220, [Total Budget Amount] + 
             CALCULATE(
                 [Project Cost Amount], 
                 [Art Code] = 101
             )*0,15),
        [Total Budget Amount]
    )

我还没有尝试过这个解决方案(我通常在发布之前这样做)所以让我知道它不起作用,我会再看一下。此外,我不了解您的代码背后的逻辑/推理,所以我可能误解了您要计算的内容。

编辑1:

我组成了一个数据集,并尝试了以下代码:

_if = 
 var _if = 
IF( 
    HASONEVALUE('Data'[Leve4]);
    SWITCH(
        VALUES(Data[Leve4]);
        101; [Project Cost Amount]*0,1;
        220; [Project Cost Amount]+CALCULATE([Project Cost Amount]; Data[Leve4] = 101)*0,1;
        [Project Cost Amount]
    )
)

return 
_if

将其添加到小型数据集表时,我得到了这个结果。如您所见,即使在 switch 语句中也可以计算计算。

在此处输入图像描述


推荐阅读