如何比较同一table中两列的输入来验证数据输入?

How to compare the input of two columns in the same table to validate data input?

我正在尝试比较同一 table

中两列之间每一行的文本输入

这是我使用的 dax 公式:

Checkpoint = IF(AND(CONTAINSROW('tweedelijns melding'[Korte omschrijving (Details)], "ADW", "Wachtwoord","reset","Resetten", "Uitvraagscript", "Profile","Citrix", "Aanvraag") && 'tweedelijns melding'[Object ID] = "Active directory" ||'tweedelijns melding'[Object ID] = "Citrix"), "Match", "No match")

我要实现的目标如下:

[Korte omschrijving (Details)] 列包含一个问题,对象 ID 主要包含一两个词。

我想检查一下 [Korte omschrijving (Details)] 栏是否包含 "ADW"、"Wachtwoord"、"reset"、"Resetten" .... . 如果 [object ID] 列包含诸如 "Active directory" 或 "Citrix" 之类的词,如果是,则它将被视为匹配,否则不会。

这是它应该生成的输出:

Output

这是一种似乎有效的 Power Query 方法。

从您的 table 作为表 1 开始:

我添加了一个自定义列:

自定义列公式的 M 代码如下:

if List.ContainsAny(
    Text.Split(Text.Upper([Question])," "),
    List.Transform({"ADW", "Wachtwoord","reset","Resetten", "Uitvraagscript", "Profile","Citrix", "Aanvraag"}, each Text.Upper(_))
) 
    then if List.ContainsAny(
        Text.Split(Text.Upper([Categorie]),""),
        List.Transform({"Active directory", "citrix"}, each Text.Upper(_))
    ) 
    then "match" 
    else "no match" 
else "no match"

它的作用是将“问题”列的每一行拆分成一个单词列表,然后将该列表与您的单词列表进行比较,{"ADW"、"Wachtwoord"、"reset"、"Resetten"、"Uitvraagscript"、"Profile"、"Citrix"、"Aanvraag"},看看你的单词列表中是否有任何单词在那个从问题行创建的列表。如果存在匹配项,那么它会对 Categorie 列执行相同的操作。但是...对于 Categorie 列,它实际上只为每一行制作一个项目列表。换句话说......例如,"Verzoek resetten wachtwoord",从问题变成列表 {"VERZOEK","RESETTEN","WACHTWOORD"} 和 "Active Directory",从类别变成列表 {"ACTIVE DIRECTORY"}。如果两个列表中都有匹配项,则返回 "match"。否则,返回 "no match"。

Text.Split 是转换为列表的内容。 List.ContainsAny 是比较列表内容的。我使用 Text.Upper 将问题类别信息强制为大写,并使用 List.Transform 将您的单词列表强制为大写,以确保进行适当的匹配比较。

这是我的结果: