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 не указано. Возможные варианты:

Необязательный набор joinOptions может быть включен, чтобы указать, как сравнить ключевые столбцы. Возможные варианты:

  • ConcurrentRequests: число от 1 до 8, указывающее количество параллельных потоков, используемых для нечеткого сопоставления. Значение по умолчанию равно 1.
  • Culture: позволяет сопоставлять записи на основе правил, зависящих от языка и региональных параметров. Это может быть любое допустимое имя языка и региональных параметров. Например, параметр "Культура" "ja-JP" соответствует записям на основе японской культуры. Значение по умолчанию — "", которое соответствует инвариантной английской культуре.
  • IgnoreCase: логическое значение (true/false), позволяющее сопоставлять ключ без учета регистра. Например, если значение 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({})
    ]
})