Как сравнить ввод двух столбцов в одной таблице для проверки ввода данных? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь сравнить ввод текста для каждой строки между двумя столбцами в одной таблице

Это моя формула Дакса, которую я использую:

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)] содержится вопрос, а идентификатор объекта состоит в основном из одного или двух слов.

Я хотел бы проверить, является ли столбец [Korte omschrijving (Details)] содержит такие слова, как «ADW», «Wachtwoord», «reset», «Resetten» ..... и если столбец [ID объекта] содержит такие слова, как «Active directory» или «Citrix» если это так, то это будет считаться совпадением, в противном случае - нет.

Это выходные данные, которые он должен генерировать:

Выходные данные

1 Ответ

0 голосов
/ 18 февраля 2020

Вот подход Power Query, который, кажется, работает.

Начиная со своей таблицы как Table1:

enter image description here

Я добавил настраиваемый столбец:

enter image description here

Вот код 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 "}, чтобы увидеть, есть ли какие-либо слова в вашем списке слов в этом списке, созданном из строки Вопроса. Если есть совпадение, то оно делает то же самое со столбцом Категория ie. Но ... для столбца Категория ie он действительно создает только один список элементов для каждой строки. Другими словами ... В качестве примера, "Verzoek resetten wachtwoord" из Вопроса становится списком {"VERZOEK", "RESETTEN", "WACHTWOORD"} и "Active Directory" из категории ie становится списком {" АКТИВНАЯ КАТАЛОГ "}. Если в обоих списках есть совпадение, то возвращается «совпадение». В противном случае возвращается «нет совпадения».

Text.Split - это то, что преобразуется в список. List.ContainsAny - это то, что сравнивает содержимое списка. Я использовал Text.Upper, чтобы принудительно ввести информацию о категории вопроса ie в верхний регистр, и я использовал List.Transform, чтобы заставить списки ваших слов в верхний регистр, чтобы обеспечить соответствующее сравнение для сопоставления.

Вот мой результат:

enter image description here

...