Table.FuzzyJoin
Table.FuzzyJoin(table1 as table, key1 as any, table2 as table, key2 as any, optional joinKind as nullable number, optional joinOptions as nullable record) as table
Объединяет строки table1
со строками table2
на основе нечеткого сопоставления значений ключевых столбцов, выбранных key1
(для table1
) и key2
(для table2
).
Нечеткое сопоставление — это сравнение на основе сходства текста, а не равенства текста.
По умолчанию внутреннее соединение выполняется, однако необязательный joinKind
может быть включен для указания типа соединения. Варианты включают:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
Необязательный набор joinOptions
может быть включен, чтобы указать, как сравнить ключевые столбцы. Варианты включают:
-
ConcurrentRequests
: число от 1 до 8, указывающее количество параллельных потоков, используемых для нечеткого сопоставления. Значение по умолчанию — 1. -
Culture
: Позволяет сопоставлять записи на основе культурных правил. Это может быть любое допустимое имя культуры. Например, параметр "Культура"ja-JPсоответствует записям, связанным с японской культурой. Значение по умолчанию — "", которое соответствует инвариантной английской культуре. -
IgnoreCase
: логическое значение (true/false), которое позволяет выполнить сопоставление ключей без учета регистра. Например, если значение истинное, "Grapes" сопоставляется с "grapes". Значение по умолчанию — true. -
IgnoreSpace
: логическое значение (true/false), позволяющее объединять текстовые части для поиска совпадений. Например, когда условие истинно, "Gra pes" сопоставляется с "Виноград". Значение по умолчанию — true. -
NumberOfMatches
: целое число, указывающее максимальное количество соответствующих строк, которые можно возвращать для каждой входной строки. Например, значение 1 возвращает по крайней мере одну соответствующую строку для каждой входной строки. Если этот параметр не указан, возвращаются все соответствующие строки. -
SimilarityColumnName
: имя столбца, показывающее сходство между входным значением и репрезентативным значением для этого ввода. Значение по умолчанию равно NULL, в этом случае новый столбец для сходства не будет добавлен. -
Threshold
: число от 0,00 до 1.00, указывающее оценку сходства, по которой будут соответствовать два значения. Например, "Виноград" и "Graes" (отсутствует "p") совпадают только в том случае, если этот параметр имеет значение менее 0,90. Пороговое значение 1.00 допускает только точные совпадения. (Обратите внимание, что нечеткое "точное совпадение" может игнорировать различия, такие как регистр, порядок слов и знак препинания.) Значение по умолчанию — 0,80. -
TransformationTable
: таблица, которая позволяет сопоставлять записи на основе сопоставлений настраиваемых значений. Он должен содержать столбцы From и To. Например, "Виноград" сопоставляется с "Изюмом", если предоставляется таблица преобразования со столбцом "From", содержащим "Виноград", и столбцом "To", содержащим "Изюм". Обратите внимание, что преобразование будет применено ко всем экземплярам текста в таблице преобразования. С приведенной выше таблицей преобразования "Виноград сладкий" также будет соответствовать "Изюм сладкий".
Левое внутреннее нечеткое соединение двух таблиц на основе [FirstName]
использование
Table.FuzzyJoin(
Table.FromRecords(
{
[CustomerID = 1, FirstName1 = "Bob", Phone = "555-1234"],
[CustomerID = 2, FirstName1 = "Robert", Phone = "555-4567"]
},
type table [CustomerID = nullable number, FirstName1 = nullable text, Phone = nullable text]
),
{"FirstName1"},
Table.FromRecords(
{
[CustomerStateID = 1, FirstName2 = "Bob", State = "TX"],
[CustomerStateID = 2, FirstName2 = "bOB", State = "CA"]
},
type table [CustomerStateID = nullable number, FirstName2 = nullable text, State = nullable text]
),
{"FirstName2"},
JoinKind.LeftOuter,
[IgnoreCase = true, IgnoreSpace = false]
)
Выход
Table.FromRecords({
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
CustomerStateID = 1,
FirstName2 = "Bob",
State = "TX"
],
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
CustomerStateID = 2,
FirstName2 = "bOB",
State = "CA"
],
[
CustomerID = 2,
FirstName1 = "Robert",
Phone = "555-4567",
CustomerStateID = null,
FirstName2 = null,
State = null
]
})