Power Bi中基於多條件兩列的switch語句

到哪個

我有兩列是 A 和 B,兩列都包含文本,有時包含文本和數字。

我想通過使用基於 A 列和 B 列的 DAX 以及下面提到的規則來生成新的計算列。

如果 A 列等於 DNK,B 列等於 Apple,則結果正常

如果 A 列等於 DNK 且 B 不等於 Apple,則結果不正常

如果 A 列等於 DNK,B 列是 NA,則結果為 XX。

DNK 期望基於 A&B 列的三個不同結果,具有多個場景,並且 ADNK 和 BJB 的結果相同。

如果 A 列等於 ADNK,B 列等於 Orange,則結果正常

如果 A 列等於 ADNK 且 B 不等於 Orange,則結果不正常

如果 A 列等於 ADNK,B 列是 NA,則結果為 XX。

如果列 A 等於 BJB 且 B 等於 Apple1,則結果正常

如果 A 列等於 BJB 且 B 不等於 Apple1,則結果不正常

如果 A 列等於 BJB,B 列是 NA,則結果為 XX。

A   B   RESULT
DNK APPLE   OK
DNK APPLE   OK
DNK ORANGE  NOT OK
DNK ORANGE  NOT OK
DNK APPLE   OK
DNK APPLE   OK
DNK NA  XX
DNK NA  XX
ADNK    ORANGE  OK
ADNK    ORANGE  OK
ADNK    ORANGE  OK
ADNK    ORANGE  OK
ADNK    NA  XX
ADNK    APPLE   NOT OK
ADNK    APPLE   NOT OK
BJB APPLE1  OK
BJB ORANGE1 NOT OK
BJB APPLE1  OK
BJB ORANGE1 NOT OK
BJB APPLE1  OK
BJB APPLE1  OK
BJB NA  XX
BJB NA  XX
BJB ORANGE1 NOT OK
BJB APPLE1  OK

在此處輸入圖片說明

smpa01

根據您的要求,您可以通過兩種方式實現

一種。通過優化SWITCH如下

desiredColumn1 = 
SWITCH (
    TRUE (),
    [A] <> BLANK ()
        && [B] = "NA", "XX",
    [A]="DNK"&&[B]="Apple"||[A]="ADNK"&&[B]="Orange"||[A]="BJB"&&[B]="Apple1","ok",
    "not ok"
)

解決方案

通過構建一個白名單表並在事實中迭代它

desiredColumn2 = 
VAR _whiteList =
    DATATABLE (
        "a1", STRING,
        "b1", STRING,
        "c1", STRING,
        {
            { "DNK", "Apple", "ok" },
            { "DNK", "NA", "XX" },
            { "ADNK", "Orange", "ok" },
            { "ADNK", "NA", "XX" },
            { "BJB", "Apple1", "ok" },
            { "BJB", "NA", "XX" }
        }
    )
VAR _fromList =
    MAXX (
        FILTER (
            _whiteList,
            [a1] = EARLIER ( 'Table'[A] )
                && [b1] = EARLIER ( 'Table'[B] )
        ),
        [c1]
    )
RETURN
    IF ( _fromList = BLANK (), "not ok", _fromList )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章