Table.FuzzyNestedJoinTable.FuzzyNestedJoin

СинтаксисSyntax

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

СведенияAbout

Объединяет строки таблицы table1 со строками table2 на основе нечеткого соответствия значений ключевых столбцов, выбранных в key1 (для table1) и key2 (для table2).Joins the rows of table1 with the rows of table2 based on a fuzzy matching of the values of the key columns selected by key1 (for table1) and key2 (for table2). Результаты возвращаются в новом столбце с именем newColumnName.The results are returned in a new column named newColumnName.

Нечеткое соответствие — это сравнение, основанное на сходстве, а не на равенстве текста.Fuzzy matching is a comparison based on similarity of text rather than equality of text.

Необязательное значение joinKind указывает вид выполняемого соединения.The optional joinKind specifies the kind of join to perform. По умолчанию выполняется левое внешнее соединение, если joinKind не указано.By default, a left outer join is performed if a joinKind is not specified. Доступные параметры: Options include:

  • JoinKind.Inner
  • JoinKind.LeftOuter
  • JoinKind.RightOuter
  • JoinKind.FullOuter
  • JoinKind.LeftAnti
  • JoinKind.RightAnti

Для указания способа сравнения ключевых столбцов можно включить необязательный набор joinOptions.An optional set of joinOptions may be included to specify how to compare the key columns. Доступные параметры: Options include:

  • ConcurrentRequests — Число от 1 до 8, указывающее количество параллельных потоков, используемых для нечеткого соответствия.ConcurrentRequests: A number between 1 and 8 that specifies the number of parallel threads to use for fuzzy matching. Значение по умолчанию — 1.The default value is 1.
  • Culture — Позволяет сопоставлять записи на основе правил конкретного языка и региональных параметров.Culture: Allows matching records based on culture-specific rules. Это может быть любой допустимый язык и региональные параметры.It can be any valid culture name. Например, параметр языка и региональных параметров "ja-JP" соответствует записям, основанным на японском языке.For example, a Culture option of "ja-JP" matches records based on the Japanese culture. Значение по умолчанию — "", которое соответствует на инвариантном языке и региональных параметрах английского языка.The default value is "", which matches based on the Invariant English culture.
  • IgnoreCase — Логическое значение (true/false), разрешающее сопоставление ключей без учета регистра.IgnoreCase: A logical (true/false) value that allows case-insensitive key matching. Например, если true, то "Виноград" сопоставляется с "виноград".For example, when true, "Grapes" is matched with "grapes". Значение по умолчанию — true.The default value is true.
  • IgnoreSpace — Логическое значение (true/false), которое позволяет объединять текстовые части для поиска совпадений.IgnoreSpace: A logical (true/false) value that allows combining of text parts in order to find matches. Например, если true, то "Вино град" сопоставляется с "виноград".For example, when true, "Gra pes" is matched with "Grapes". Значение по умолчанию — true.The default value is true.
  • NumberOfMatches — Целое число, которое задает максимальное количество совпадающих строк, которые могут быть возвращены.NumberOfMatches: A whole number that specifies the maximum number of matching rows that can be returned. Например, значение 1 будет возвращать не более одной совпадающей строки для каждой входной строки.For example, a value of 1 will return at most one matching row for each input row. Если этот параметр не указан, возвращаются все совпадающие строки.If this option is not provided, all matching rows are returned.
  • Threshold — Число от 0,00 до 1,00, указывающее показатель сходства, в котором будут сопоставлены два значения.Threshold: A number between 0.00 and 1.00 that specifies the similarity score at which two values will be matched. Например, элемент "Виноград" группируется с элементом "Винорад" (пропущена буква "г"), только если для этого порога задано значение меньше 0,90.For example, "Grapes" and "Graes" (missing "p") are matched only if this option is set to less than 0.90. Пороговое значение 1,00 означает точное совпадение.A threshold of 1.00 is the same as specifying an exact match criteria. Значение по умолчанию — 0,80.The default value is 0.80.
  • TransformationTable — Таблица, позволяющая сопоставлять записи на основе пользовательских сопоставлений значений.TransformationTable: A table that allows matching records based on custom value mappings. Она должна содержать столбцы "От" и "До".It should contain "From" and "To" columns. Например, элемент "Виноград" соответствует элементу "Изюм", если в таблице преобразования есть столбец "Из", содержащий "Виноград", и столбец "В", содержащий "Изюм".For example, "Grapes" is matched with "Raisins" if a transformation table is provided with the "From" column containing "Grapes" and the "To" column containing "Raisins". Обратите внимание, что преобразование будет применено ко всем вхождениям текста в таблице преобразования.Note that the transformation will be applied to all occurrences of the text in the transformation table. В приведенной выше таблице преобразования элемент "Виноград сладкий" будет также сопоставляться с элементом "Изюм сладкий".With the above transformation table, "Grapes are sweet" will also be matched with "Raisins are sweet".

ПримерExample

Левое внутреннее нечеткое соединение двух таблиц на основе [FirstName]Left inner fuzzy join of two tables based on [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] 
)
CustomerIDCustomerID FirstName1FirstName1 ТелефонPhone NestedTableNestedTable
11 ВладимирBob 555-1234555-1234 [Таблица][Table]
22 RobertRobert 555-4567555-4567 [Таблица][Table]