我有兩列是 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

uj5u.com熱心網友回復:
根據您的要求,您可以通過兩種方式實作
一種。通過優化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 )
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335812.html
上一篇:C#:while與if
