如何比较同一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 将您的单词列表强制为大写,以确保进行适当的匹配比较。
这是我的结果:
我正在尝试比较同一 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 将您的单词列表强制为大写,以确保进行适当的匹配比较。
这是我的结果: