Teilen über


Table.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

Verknüpft die Zeilen table1 mit den Zeilen table2 basierend auf einem Fuzzy-Abgleich der Werte der Schlüsselspalten, die von key1 (für table1) und key2 (für table2) ausgewählt sind. Die Ergebnisse werden in einer neuen Spalte mit dem Namen newColumnNamezurückgegeben.

Der Fuzzyabgleich ist ein Vergleich, der auf der Ähnlichkeit von Text und nicht auf der Gleichheit von Text basiert.

joinKind Optional gibt die Art der auszuführenden Verknüpfung an. Standardmäßig wird eine linke äußere Verknüpfung ausgeführt, wenn keine joinKind Angabe erfolgt. Zu den Optionen gehören:

Ein optionaler Satz kann joinOptions eingeschlossen werden, um anzugeben, wie die Schlüsselspalten verglichen werden. Zu den Optionen gehören:

  • ConcurrentRequests: Eine Zahl zwischen 1 und 8, die die Anzahl der parallelen Threads angibt, die für den Fuzzyabgleich verwendet werden sollen. Der Standardwert ist 1.
  • Culture: Ermöglicht das Abgleichen von Datensätzen basierend auf kulturspezifischen Regeln. Dabei kann es sich um einen beliebigen gültigen Kulturnamen handeln. Beispielsweise entspricht eine Kulturoption von "ja-JP" Datensätze, die auf der japanischen Kultur basieren. Der Standardwert ist "", der basierend auf der invarianten englischen Kultur übereinstimmt.
  • IgnoreCase: Ein logischer (true/false)-Wert, der den Abgleich von Schlüsseln zwischen Groß- und Kleinschreibung zulässt. Wenn beispielsweise "true" lautet, wird "Trauben" mit "Trauben" abgeglichen. Der Standardwert ist true.
  • IgnoreSpace: Ein logischer Wert (true/false), der das Kombinieren von Textteilen ermöglicht, um Übereinstimmungen zu finden. Wenn beispielsweise "true" lautet, wird "Gra pes" mit "Trauben" abgeglichen. Der Standardwert ist true.
  • NumberOfMatches: Eine ganze Zahl, die die maximale Anzahl übereinstimmenden Zeilen angibt, die für jede Eingabezeile zurückgegeben werden können. Beispielsweise gibt ein Wert von 1 höchstens eine übereinstimmende Zeile für jede Eingabezeile zurück. Wenn diese Option nicht bereitgestellt wird, werden alle übereinstimmenden Zeilen zurückgegeben.
  • SimilarityColumnName: Ein Name für die Spalte, die die Ähnlichkeit zwischen einem Eingabewert und dem repräsentativen Wert für diese Eingabe anzeigt. Der Standardwert ist NULL, in diesem Fall wird keine neue Spalte für Ähnlichkeiten hinzugefügt.
  • Threshold: Eine Zahl zwischen 0,00 und 1,00, die die Ähnlichkeitsbewertung angibt, mit der zwei Werte abgeglichen werden. Beispielsweise werden "Trauben" und "Graes" (fehlendes "p") nur abgeglichen, wenn diese Option auf kleiner als 0,90 festgelegt ist. Ein Schwellenwert von 1,00 lässt nur genaue Übereinstimmungen zu. (Beachten Sie, dass eine fuzzy "genaue Übereinstimmung" Unterschiede wie Groß-/Kleinschreibung, Wortreihenfolge und Interpunktion möglicherweise ignoriert.) Der Standardwert ist 0,80.
  • TransformationTable: Eine Tabelle, die übereinstimmende Datensätze basierend auf benutzerdefinierten Wertzuordnungen zulässt. Sie sollte die Spalten "Von" und "An" enthalten. Beispielsweise wird "Trauben" mit "Raisins" abgeglichen, wenn eine Transformationstabelle mit der Spalte "Von" mit "Trauben" und der Spalte "An" mit "Raisins" bereitgestellt wird. Beachten Sie, dass die Transformation auf alle Vorkommen des Texts in der Transformationstabelle angewendet wird. Mit der obigen Transformationstabelle wird "Trauben sind süß" auch mit "Raisins sind süß" abgeglichen.

Beispiel 1

Linke innere Fuzzy-Verknüpfung von zwei Tabellen basierend auf [Vorname]

Verwendung

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]
)

Output

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