Поделиться через


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({})
    ]
})