Przejdź do głównej zawartości

Table.FuzzyJoin

Tworzy sprzężenie wierszy z dwóch tabel, które uznano za zgodne w dopasowaniu rozmytym na podstawie danych kluczy.

Syntax

Table.FuzzyJoin(
table1 as table,
key1 as any,
table2 as table,
key2 as any,
optional joinKind as JoinKind.Type,
optional joinOptions as record
) as table

Remarks

Tworzy sprzężenie wierszy tabeli table1 z wierszami tabeli table2 na podstawie dopasowania rozmytego wartości kolumn klucza wybranych przez parametr key1 (dla tabeli table1) i parametr key2 (dla tabeli table2).
Dopasowywanie rozmyte to porównywanie bazujące na podobieństwie tekstu, a nie jego równości.
Domyślnie jest tworzone sprzężenie wewnętrzne, jednak za pomocą opcjonalnego dołączonego parametru joinKind można określić typ sprzężenia. Dostępne opcje:

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

Aby określić metodę porównania kolumn klucza, możesz dołączyć opcjonalny zestaw parametrów joinOptions. Dostępne opcje:
  • ConcurrentRequests : Liczba z zakresu od 1 do 8 określająca liczbę wątków równoległych, które mają być używane na potrzeby dopasowywania rozmytego. Wartość domyślna to 1.
  • Culture : Umożliwia dopasowanie rekordów na podstawie reguł dotyczących kultury. Może to być dowolna prawidłowa nazwa kultury. Na przykład opcja Kultura „ja-JP” dopasowuje rekordy oparte na kulturze japońskiej. Wartość domyślna to „”, która dopasowuje na podstawie niezmiennej kultury angielskiej.
  • IgnoreCase : Wartość logiczna (true/false), która umożliwia dopasowywanie kluczy bez uwzględniania wielkości liter. Na przykład gdy wartość jest równa true, „winogrona” są dopasowane do „winogron”. Wartość domyślna to true.
  • IgnoreSpace : Wartość logiczna (true/false), która umożliwia łączenie części tekstowych w celu znalezienia dopasowań. Na przykład gdy wartość jest równa true, „wino grona” są dopasowane do „winogron”. Wartość domyślna to true.
  • NumberOfMatches : Liczba całkowita określająca maksymalną liczbę zgodnych wierszy, które mogą zostać zwrócone dla każdego wiersza wejściowego. Na przykład wartość 1 spowoduje zwrócenie maksymalnie jednego zgodnego wiersza dla każdego wiersza wejściowego. Jeśli ta opcja nie zostanie określona, zostaną zwrócone wszystkie zgodne wiersze.
  • SimilarityColumnName : Nazwa kolumny pokazującej podobieństwo między wartością wejściową i wartością reprezentatywną dla tych danych wejściowych. Wartość domyślna jest równa null, a w takim przypadku nowa kolumna podobieństw nie zostanie dodana.
  • Threshold : Liczba z zakresu od 0,00 do 1,00, która określa wskaźnik podobieństwa, przy którym zostaną dopasowane dwie wartości. Na przykład „Winogrona” i „Winogroa” (brak litery „n”) są dopasowywane tylko wtedy, gdy ta opcja jest ustawiona na wartość mniejszą niż 0,90. Próg wynoszący 1,00 zezwala tylko na dokładne dopasowania. (Pamiętaj, że rozmyte „dokładne dopasowanie” może ignorować różnice, takie jak wielkość liter, kolejność wyrazów i interpunkcję). Wartość domyślna to 0,80.
  • TransformationTable : Tabela umożliwiająca dopasowywanie rekordów na podstawie mapowań wartości niestandardowych. Powinna zawierać kolumny „Od” i „Do”. Na przykład „winogrona” są dopasowane do „rodzynków, jeśli tabela transformacji ma kolumnę „Od” zawierającą „Winogrona” oraz kolumnę „Do” zawierającą „Rodzynki”. Zauważ, że transformacja zostanie zastosowana do wszystkich wystąpień tekstu w tabeli transformacji. Z powyższą tabelą transformacji „winogrona słodkie zostaną również dopasowane do „rodzynki są słodkie”.

Examples

Example #1

Lewe wewnętrzne sprzężenie rozmyte dwóch tabel na podstawie wartości [FirstName]

Table.FuzzyJoin(
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"},
JoinKind.LeftOuter,
[IgnoreCase = true, IgnoreSpace = false]
)

Result:

Table.FromRecords({
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
CustomerStateID = 1,
FirstName2 = "Bob",
State = "TX"
],
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
CustomerStateID = 2,
FirstName2 = "bOB",
State = "CA"
],
[
CustomerID = 2,
FirstName1 = "Robert",
Phone = "555-4567",
CustomerStateID = null,
FirstName2 = null,
State = null
]
})

Category

Table.Transformation