Неточное соответствие в Power BI и Power Query; соответствие на основе порога сходства
После долгого ожидания в выпуске Power BI Desktop, выпущенном в октябре 2018 года, мы увидели наконец добавленную функцию неточного соответствия. Ура! Вы когда-нибудь хотели совместить две таблицы вместе, но не на точных совпадениях, при этом на пороге сходства? Если вы отвечаете на этот вопрос положительно, то эта функция создана для вас. Давайте подробно рассмотрим, как работает неточное соответствие в Power BI.
Включите функцию предварительного просмотра
Во время написания этого сообщения в блоге, Fuzzy matching - это функция предварительного просмотра, и вы должны включить ее в Power BI Desktop -> Files -> Options and Settings -> Options;
В окне «Options» в разделе Preview Features установите флажок “Enable fuzzy merge”,
После этого шага вам нужно будет закрыть Power BI Desktop и снова открыть его.
Пример набора данных
Для этого примера мы будем использовать образец набора данных, который содержит две очень простые таблицы ниже;
Таблица “source”, которая содержит данные сотрудников и их отделов. Обратите внимание, что поле Departmentа имеет проблемы с качеством данных. У нас есть такие значения в нем, как “Sales”и “Sale”. Или другим примером является «Managmnt» и «Management».
Как вы можете видеть, список названий отделов чист в этой таблице, и это таблица, которая должна использоваться для очистки таблицы “source”. Теперь посмотрим, как это возможно?
Fuzzy Merge
Fuzzy Merge - это способ объединения двух таблиц вместе, но не по точным критериям соответствия, а по порогу подобия. Если вы хотите узнать, что такое операция слияния и какая разница с Append, прочитайте этот пост. Если вы хотите узнать больше о том, что такое Merge, а также о разных типах объединения или слияния, прочитайте наш другой пост в блоге. Объединение или слияние - это просто объединение двух таблиц с разными структурами, но со столбцами ссылок / объединений, для доступа к столбцам из одной из таблиц в другой.
Чтобы использовать операцию слияния в «исходном» запросе, вы можете выбрать опцию «Merge Queries as New» на вкладке Home окна «Power Query Editor».
Затем вы можете выбрать вторую таблицу и выбрать « Department» в качестве поля объединения
Этот процесс даст вам следующий результат (после расширения вывода столбца слияния);
Вы можете видеть, что операция Merge только находит сценарии EXACT Matching. Раздел «Sale» не соответствует таблице Department , потому что в конце отсутствует «S» в соответствии с «Sales».
Теперь давайте посмотрим, как работает Fuzzy. Чтобы использовать Fuzzy Merge, просто установите флажок в диалоговом окне Merge tables;
Когда вы включаете неточное соответствие, вы можете настроить его в «fuzzy merge operations». Вы можете оставить все опциональным или установить значения. Давайте сначала посмотрим на образец вывода этой операции, а затем посмотрим, каковы параметры. Это пример вывода Fuzzy Merge:
Вы можете видеть три выделенные записи, которые не были распознаны как точное совпадение в нормальной операции слияния, не соответствуют результатам неточного слияния. Fuzzy merge проверяет сходство между полями объединения, и если их сходство больше, чем пороговая конфигурация, оно передает его как успешное совпадение. Вы можете видеть, что «Managmnt» может соответствовать «Management» с этой пороговой конфигурацией, но «Mangmt» не показывает, что порог сходства выше, чем ставка сходства этих двух текстовых значений друг с другом.
Вы можете играть с опциями Fuzzy Merge и получать разные результаты. Вот объяснение этих вариантов:
Опция |
Допустимое значение |
Описание |
Threshold |
значение между 0.00 и 1.00 |
Если сходство между двумя текстовыми значениями превышает пороговое значение, это будет считаться успешным действием. Значение 1.00 означает точное совпадение. |
Ignore Case |
true/false |
Если вы хотите, чтобы алгоритм сходства работал независимо от букв верхнего или нижнего регистра, выберите этот параметр. |
Ignore Space |
true/false |
Если вы хотите, чтобы алгоритм сходства работал независимо от количества пробелов в тексте, выберите эту опцию. |
Maximum Number of Matches |
Положительное число от 0 до 2147483647 |
Количество строк, которые могут быть сопоставлены с одним значением. |
Transformation Table |
table |
Это похоже на таблицу сопоставлений, давайте проверим ее немного позже. Это дает вам возможность использовать собственную таблицу сопоставления. В этой таблице должно быть не менее двух столбцов «To» и «From». |
Функции Power Query
В дополнение к опции, добавленной в графическом интерфейсе Power Query, у нас также есть две функции Power Query, которые выполняют Fuzzy Merge, это:
Table.FuzzyJoin
Table.FuzzyNestedJoin
Обе эти функции имеют одинаковые конфигурации неточности, их единственное различие состоит в том, что один из них дает вам расширенный вывод (FuzzyJoin), другой дает тот же результат, что и тот, который вы видите в графическом интерфейсе с выводом столбца таблицы после слияния (FuzzyNestedJoin). Если вы используете эти две функции непосредственно в сценарии M, у вас будет еще несколько параметров для настройки, которые предназначены для параллелизма и настроек культуры.
Это параметры двух вышеперечисленных функций;
Таблица преобразования
Иногда в операции слияния вам нужна таблица соответствия. Эта таблица называется здесь как Transformation Table. Ниже приведен пример таблицы соответствия:
Обратите внимание, что эта таблица должна содержать по крайней мере два столбца “To”, и “From”. И не забывайте, что Power Query чувствителен к регистру!
Теперь вы можете выбрать эту таблицу в своей операции Merge в конфигурации Fuzzy, как показано ниже;
Этот процесс похож на объединение таблицы “source”, которая является первой таблицей в нашем Merge, с таблицей “Department”, основанной на столбце “Department”, а затем “Department Name” , а затем слияние с таблицей “mapping”, основанной на столбце “To” и “Department Name”. На выводе появится столбец “To” таблицы соответствия. Вот пример вывода:
Резюме
Соответствие, основанное на пороге сходства, или нечеткое соответствие - это фантастическая функция, добавленная в Power Query и Power BI, однако она по-прежнему является функцией предварительного просмотра, и у нее может возникнуть еще одна конфигурация.