Пређи на главни садржај

Table.FuzzyNestedJoin

Obavlja približno spajanje tabela na navedenim kolonama i daje rezultat spajanja u novoj koloni.

Syntax

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

Remarks

Povezuje redove iz table1 sa redovima iz table2 na osnovu približnog podudaranja vrednosti kolona ključa koje bira key1 (za table1) i key2 (za table2). Rezultati se vraćaju u novoj koloni pod imenom newColumnName.

Približno podudaranje je poređenje zasnovano na sličnosti, a ne na jednakosti teksta.

Opcionalni joinKind navodi vrstu spajanja koju treba izvršiti. Podrazumevano se izvršava levo spoljno spajanje ako joinKind nije naveden. Opcije su:

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

Opcionalni skup joinOptions može biti uključen da bi se navelo kako treba porediti kolone ključa. Opcije su:

  • ConcurrentRequests : Broj između 1 i 8 koji navodi broj paralelnih niti koje se koriste za približno podudaranje. Podrazumevana vrednost je 1.
  • Culture : Omogućava podudaranje zapisa na osnovu pravila specifičnih za kulturu. To može da bude bilo koje važeće ime kulture. Na primer, opcija kulture „ja-JP“ podudara zapise na osnovu japanske kulture. Podrazumevana vrednost je „“, koja podudara na osnovu nepromenlјive engleske kulture.
  • IgnoreCase : Logička (true/false) vrednost koja omogućava podudaranje klјuča koje ne razlikuje mala i velika slova. Na primer, kada se podesi vrednost „true“, „Grožđe“ se podudara sa „grožđe“. Podrazumevana vrednost je „true“.
  • IgnoreSpace : Logička (true/false) vrednost koja omogućava kombinovanje delova teksta kako bi se pronašla podudaranja. Na primer, kada se podesi vrednost „true“, „Gro žđe“ se podudara sa „Grožđe“. Podrazumevana vrednost je „true“.
  • NumberOfMatches : Ceo broj koji navodi maksimalan broj redova koji se podudaraju koji se može vratiti za svaki red ulaza. Na primer, vrednost 1 vraća najviše jedan red koji se podudara za svaki red ulaza. Ako ova opcija nije navedena, vraćaju se svi redovi koji se podudaraju.
  • SimilarityColumnName : Ime za kolonu koja prikazuje sličnost između ulazne vrednosti i reprezentativne vrednosti za taj unos. Podrazumevana opcija je bez vrednosti i u tom slučaju neće biti dodata nova kolona za sličnosti.
  • Threshold : Broj između 0,00 i 1,00 koji navodi ocenu sličnosti po kojoj će se dve vrednosti podudarati. Na primer, „Grožđe“ i „Grože“ (nedostaje slovo „đ“) podudaraju se samo ako je ova opcija podešena na manje od 0,90. Granična vrednost od 1,00 dozvoljava samo potpuna podudaranja. (Imajte u vidu da približno „Potpuno podudaranje“ može da zanemaruje razlike kao što su veličina slova, redosled reči i interpunkcije.) Podrazumevana vrednost je 0,80.
  • TransformationTable : Tabela koja omogućava podudaranje zapisa na osnovu mapiranja prilagođene vrednosti. Trebalo bi da sadrži kolone „Iz“ i „U“. Na primer, „Grožđe se podudara sa „Suvo grožđe“ ako je data tabela transformacije sa kolonom „Iz“ koja sadrži „Grožđe“ i kolonom „U“ koja sadrži „Suvo grožđe“. Imajte na umu da se transformacija primenjuje na sva pojavlјivanja teksta u tabeli transformacije. Na osnovu gorenavedene tabele transformacije i „Grožđe je slatko“ podudariće se sa „Suvo grožđe je slatko“.

Examples

Example #1

Levo unutrašnje spajanje približnih za dve tabele zasnovane na [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]
)

Result:

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

Category

Table.Transformation