Table.FuzzyNestedJoin
Синтаксис
Table.FuzzyNestedJoin(table1 as table, key1 as any, table2 as table, key2 as any, newColumnName as text, optional joinKind as nullable number, optional joinOptions as nullable record) as table
О нас
Объединяет строки table1
со строками table2
на основе нечеткого сопоставления значений ключевых столбцов, выбранных key1
(для table1
) и key2
(для table2
). Результаты возвращаются в новом столбце с именем newColumnName
.
Нечеткое сопоставление — это сравнение на основе сходства текста, а не равенства текста.
Необязательный joinKind
указывает тип выполняемого соединения. По умолчанию левое внешнее соединение выполняется, если 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, "Виноград" соответствует "винограду". Значение по умолчанию — true. -
IgnoreSpace
: логическое значение (true/false), позволяющее объединять текстовые части для поиска совпадений. Например, если значение true, "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", содержащий "Изюм". Обратите внимание, что преобразование будет применено ко всем вхождениям текста в таблице преобразования. С приведенной выше таблицей преобразования "Виноград сладкий" также будет соответствовать "Изюм сладкий".
Пример 1
Левое внутреннее нечеткое соединение двух таблиц на основе [FirstName]
использование
Table.FuzzyNestedJoin(
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"},
"NestedTable",
JoinKind.LeftOuter,
[IgnoreCase = true, IgnoreSpace = false]
)
выход
Table.FromRecords({
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
NestedTable = Table.FromRecords({
[
CustomerStateID = 1,
FirstName2 = "Bob",
State = "TX"
],
[
CustomerStateID = 2,
FirstName2 = "bOB",
State = "CA"
]
})
],
[
CustomerID = 2,
FirstName1 = "Robert",
Phone = "555-4567",
NestedTable = Table.FromRecords({})
]
})