Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sintassi
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
Informazioni su
Unisce le righe di table1
alle righe di table2
in base a una corrispondenza fuzzy dei valori delle colonne chiave selezionate da key1
(per table1
) e key2
(per table2
). I risultati vengono restituiti in una nuova colonna denominata newColumnName
.
La corrispondenza fuzzy è un confronto basato sulla somiglianza del testo anziché sull'uguaglianza del testo.
Il parametro joinKind
facoltativo specifica il tipo di join da eseguire. Per impostazione predefinita, viene eseguita un'operazione di join esterno sinistro se non si specifica joinKind
. Le opzioni includono:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
È possibile includere un set facoltativo di joinOptions
per specificare la modalità di confronto delle colonne chiave. Le opzioni includono:
-
ConcurrentRequests
: numero compreso tra 1 e 8 che specifica il numero di thread paralleli da usare per la corrispondenza fuzzy. Il valore predefinito è 1. -
Culture
: consente la corrispondenza dei record in base a regole specifiche della cultura. Può essere qualsiasi nome di cultura valido. Ad esempio, un'opzione di cultura "ja-JP" individua i record in base alla cultura giapponese. Il valore predefinito è "", che individua le corrispondenze in base alla cultura invariata in inglese. -
IgnoreCase
: valore logico (true/false) che consente la corrispondenza di chiavi senza distinzione tra maiuscole e minuscole. Ad esempio, quando è vero, "Uva" corrisponde a "uva". Il valore predefinito è true. -
IgnoreSpace
: valore logico (true/false) che consente la combinazione di parti di testo per trovare corrispondenze. Ad esempio, quando è vero, "Uva" corrisponde a "Uva". Il valore predefinito è true. -
NumberOfMatches
: numero intero che specifica il numero massimo di righe corrispondenti che possono essere restituite per ogni riga di input. Ad esempio, il valore 1 restituirà al massimo una riga corrispondente per ogni riga di input. Se questa opzione non viene specificata, vengono restituite tutte le righe corrispondenti. -
SimilarityColumnName
: nome della colonna che mostra la somiglianza tra un valore di input e il valore rappresentativo per tale input. Il valore predefinito è Null, nel qual caso non verrà aggiunta una nuova colonna per le somiglianze. -
Threshold
: numero compreso tra 0,00 e 1,00 che specifica il punteggio di somiglianza al cui raggiungimento verranno fatti corrispondere due valori. Ad esempio, "Grapes" e "Graes" (mancante di "p") vengono fatti corrispondere solo se questa opzione è impostata su un valore inferiore a 0,90. Una soglia di 1,00 consente solo corrispondenze esatte. Si tenga presente che una "corrispondenza approssimativa" potrebbe ignorare differenze come maiuscole e minuscole, ordine delle parole e punteggiatura. Il valore predefinito è 0.80. -
TransformationTable
: tabella che consente la corrispondenza dei record in base ai mapping di valori personalizzati. Deve contenere le colonne "From" e "To". Ad esempio, "Uva" viene abbinato a "Uva passa" se si specifica una tabella di trasformazione in cui la colonna "From" contiene "Uva" e la colonna "To" contiene "Uva passa". Si noti che la trasformazione verrà applicata a tutte le occorrenze del testo nella tabella di trasformazione. Con la tabella di trasformazione precedente, "Uva è dolce" sarà abbinato anche a "Uva passa è dolce".
Esempio 1
Join sinistro fuzzy di due tabelle basato su [FirstName]
Utilizzo
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({})
]
})