检查字符串中除 Power BI 列表中的值之外的任何其他值

Check for any other value in a string than the ones from a list in Power BI

我在 table1 中有一个计算列,return 是一个包含多个值的字符串。这些值中的每一个都代表一个故障代码,其格式为 DI 后跟 4 位数字。 现在我有第二个 table (table2),它有一个故障代码列表,其中一些故障代码可以在第一个 table 的计算列的字符串中找到。 我正在寻找的是一种措施,如果 table1 中计算列中的任何行具有不在故障列表中的故障代码,该措施将 return 'True' 语句来自 table2 的代码。此外,如果 table1 中计算列的字符串中的所有代码都出现在 table2 的列表中,则 return 将执行 'False' 语句。请看一个简化的例子

.

结果应该如下所示

.

到目前为止,我已经设法检查 table 1 的计算列中的字符串是否只有第一个值满足该条件。不幸的是,我无法将其应用于完整的字符串,请有人支持。

表2列表

| List   |
|--------|
| DI0001 |
| DI0002 |
| DI0003 |
| DI0004 |
| DI0005 |
| DI0006 |
| DI0007 |
| DI0008 |
| DI0009 |
| DI0011 |
| DI0013 |
| DI0015 |
| DI0105 |
| DI0107 |
| DI0108 |
| DI0211 |
| DI0212 |
| DI0505 |
| DI0806 |
| DI0907 |
| DI1113 |
| DI1212 |
| DI1504 |
| DI1505 |
| DI1601 |
| DI1602 |
| DI1603 |
| DI1604 |
| DI1605 |
| DI1606 |
| DI1607 |
| DI1608 |
| DI1609 |
| DI1610 |
| DI1611 |
| DI1612 |
| DI1613 |
| DI1614 |
| DI1615 |
| DI1616 |
| DI1617 |
| DI1618 |
| DI1701 |
| DI1702 |
| DI1703 |
| DI1704 |
| DI1705 |
| DI1706 |
| DI1707 |
| DI1708 |
| DI1801 |
| DI1802 |
| DI1803 |
| DI1804 |
| DI1901 |
| DI1902 |
| DI1903 |
| DI1904 |
| DI1905 |
| DI2601 |
| DI9901 |
| DI9902 |
| DI9903 |
| DI9904 |
| DI9905 |
| DI9906 |
| DI9907 |
| DI9908 |
| DI9909 |
| DI9910 |
| DI9911 |
| DI9912 |
| DI9913 |

这里是table1和计算的列

| Calculated   Column                                       |
|-----------------------------------------------------------|
| DI0501 DI1604 DI1605                                      |
| DI1604 DI1605                                             |
| DI1604 DI1605                                             |
| DI1605                                                    |
| DI1604 DI1605 DI0105                                      |
| DI1604 DI1605                                             |
| DI0105 DI1604 DI1605                                      |
| DI1605 DI1604                                             |
| DI1604 DI1605 DI0105 DI1604   DI1604 DI1604 DI1604 DI1604 |
| DI1604 DI1605                                             |
| DI1605                                                    |
| DI1604 DI1605                                             |
| DI1605                                                    |
| DI1604 DI1605 DI0105                                      |
| DI0105 DI1604 DI1605                                      |
| DI1604 DI1605                                             |
| DI1010 DI1604 DI1605 DI0105                               |
| DI1604 DI1605 DI0105                                      |
| DI1604 DI1605 DI1604 DI1604   DI1604 DI1604 DI1604        |
| DI1604 DI1605                                             |
| DI1604 DI1605                                             |
| DI1604 DI1605 DI0105 DI1604   DI1604 DI1604 DI1604 DI1604 |
| DI0204                                                    |
| DI1015 DI0105 DI1604 DI1605                               |
| DI1604 DI1605 DI0105                                      |
| DI1604 DI1605 DI0105                                      |
| DI1604 DI1605 DI0105 DI1604   DI1604 DI1604 DI1604 DI1604 |
| DI1102 DI1605                                             |
| DI1605                                                    |
| DI1604 DI1604 DI1605                                      |
| DI1604 DI1605 DI1604                                      |
| DI1605 DI1604 DI1010                                      |
| DI0107                                                    |
| DI0105 DI1604 DI1605                                      |
| DI1604 DI0204                                             |
| DI0105 DI1604 DI1605                                      |
| DI1605                                                    |
| DI1604 DI1605 DI0105 DI1604   DI1604 DI1604 DI1604 DI1604 |

你可以这样写一个度量

Measure =
VAR _1 =
    ADDCOLUMNS ( table1, "new", SUBSTITUTE ( table1[Calculated column], " ", "|" ) )
VAR _2 =
    GENERATE (
        _1,
        ADDCOLUMNS (
            GENERATESERIES ( 1, PATHLENGTH ( [new] ) ),
            "_txt", TRIM ( PATHITEM ( [new], [Value], TEXT ) )
        )
    )
VAR _filt =
    ADDCOLUMNS (
        _2,
        "score",
            VAR _1 = [_txt]
            VAR _2 =
                CALCULATE ( MAX ( table2[List] ), TREATAS ( { _1 }, table2[List] ) )
            RETURN
                IF ( _2 = BLANK (), "x", _2 )
    )
RETURN
    IF (
        COUNTX ( FILTER ( _filt, [score] = "x" ), [Calculated column] ) >= 1,
        TRUE,
        FALSE
    )