Table.FuzzyNestedJoinTable.FuzzyNestedJoin

SyntaxSyntax

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

InfoAbout

Verknüpft die Zeilen von table1 mit den Zeilen von table2. Grundlage hierfür bildet eine Fuzzyübereinstimmung der Werte der Schlüsselspalten, die durch key1 (für table1) und key2 (für table2) ausgewählt wurden.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). Die Ergebnisse werden in einer neuen Spalte mit dem Namen newColumnName zurückgegeben.The results are returned in a new column named newColumnName.

Eine Fuzzyübereinstimmung ist ein Vergleich, der eher auf Ähnlichkeit als auf genauer Übereinstimmung des Texts beruht.Fuzzy matching is a comparison based on similarity of text rather than equality of text.

Mit der optionalen Angabe von joinKind wird die Art des auszuführenden Joins angegeben.The optional joinKind specifies the kind of join to perform. Standardmäßig wird ein linker äußerer Join ausgeführt, sofern joinKind nicht angegeben ist.By default, a left outer join is performed if a joinKind is not specified. Beispiele für Optionen:Options include:

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

Optional können joinOptions einbezogen werden, um anzugeben, wie die Schlüsselspalten verglichen werden sollen.An optional set of joinOptions may be included to specify how to compare the key columns. Beispiele für Optionen:Options include:

  • ConcurrentRequests: Eine Zahl zwischen 1 und 8, die die Anzahl von parallelen Threads angibt, die für Fuzzyübereinstimmungen verwendet werden sollen.ConcurrentRequests: A number between 1 and 8 that specifies the number of parallel threads to use for fuzzy matching. Der Standardwert ist 1.The default value is 1.
  • Culture: Ermöglicht den Abgleich von Datensätzen basierend auf kulturspezifischen Regeln.Culture: Allows matching records based on culture-specific rules. Dabei kann es sich um einen beliebigen Kulturnamen handeln.It can be any valid culture name. Beispielsweise werden bei Festlegung der Option „Culture“ auf „ja-JP“ Datensätze ermittelt, die auf der japanischen Kultur basieren.For example, a Culture option of "ja-JP" matches records based on the Japanese culture. Der Standardwert ist "", wodurch die Zuordnung auf der Grundlage der englischbasierten Kultur erfolgt.The default value is "", which matches based on the Invariant English culture.
  • IgnoreCase: Dies ist ein logischer Wert (true/false), der die Zuordnung von Schlüsseln ermöglicht, bei denen die Groß- und Kleinschreibung beachtet wird.IgnoreCase: A logical (true/false) value that allows case-insensitive key matching. Bei „true“ wird „Trauben“ beispielsweise „trauben“ zugeordnet.For example, when true, "Grapes" is matched with "grapes". Der Standardwert ist true.The default value is true.
  • IgnoreSpace: Dies ist ein logischer Wert (true/false), der das Kombinieren von Textteilen ermöglicht, um Übereinstimmungen zu suchen.IgnoreSpace: A logical (true/false) value that allows combining of text parts in order to find matches. Bei TRUE wird „Gra pes“ beispielsweise „Grapes“ zugeordnet.For example, when true, "Gra pes" is matched with "Grapes". Der Standardwert ist true.The default value is true.
  • NumberOfMatches: Eine ganze Zahl, die die maximale Anzahl an übereinstimmenden Zeilen angibt, die zurückgegeben werden können.NumberOfMatches: A whole number that specifies the maximum number of matching rows that can be returned. Beispielsweise gibt der Wert 1 höchstens eine übereinstimmende Zeile für jede Eingabezeile zurück.For example, a value of 1 will return at most one matching row for each input row. Wenn diese Option nicht angegeben wird, werden alle übereinstimmenden Zeilen zurückgegeben.If this option is not provided, all matching rows are returned.
  • Threshold: Dies ist eine Zahl zwischen 0,00 und 1,00, die den Ähnlichkeitswert angibt, bei dem zwei Werte zugeordnet werden.Threshold: A number between 0.00 and 1.00 that specifies the similarity score at which two values will be matched. Beispiel: „Trauben“ und „Trauen“ (fehlendes „b“) werden nur dann zugeordnet, wenn diese Option auf weniger als 0,90 festgelegt ist.For example, "Grapes" and "Graes" (missing "p") are matched only if this option is set to less than 0.90. Ein Schwellenwert von 1,00 entspricht der Angabe eines genauen Übereinstimmungskriteriums.A threshold of 1.00 is the same as specifying an exact match criteria. Der Standardwert ist 0,80.The default value is 0.80.
  • TransformationTable: Dies ist eine Tabelle, die das Zuordnen von Datensätzen basierend auf benutzerdefinierten Wertzuordnungen ermöglicht.TransformationTable: A table that allows matching records based on custom value mappings. Dabei sollten die Spalten „From“ und „To“ enthalten sein.It should contain "From" and "To" columns. Beispiel: „Trauben“ stimmt mit „Rosinen“ überein, wenn eine Transformationstabelle bereitgestellt wird, in der die Spalte „From“ den Wert „Trauben“ und die Spalte „To“ den Wert „Rosinen“ enthält.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". Beachten Sie, dass die Transformation auf alle Vorkommen des Texts in der Transformationstabelle angewendet wird.Note that the transformation will be applied to all occurrences of the text in the transformation table. Bei der Transformationstabelle oben wird „Trauben sind süß“ auch „Rosinen sind süß“ zugeordnet.With the above transformation table, "Grapes are sweet" will also be matched with "Raisins are sweet".

BeispielExample

Linker innerer Fuzzyjoin zweier Tabellen basierend auf [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 PhonePhone NestedTableNestedTable
11 BerndBob 555–1234555-1234 [Tabelle][Table]
22 RobertRobert 555-4567555-4567 [Tabelle][Table]