Table.FuzzyJoin
Table.FuzzyJoin(table1 as table, key1 as any, table2 as table, key2 as any, optional joinKind as nullable number, optional joinOptions as nullable record) as table
key1
(table1
için) ve key2
(table2
için) tarafından seçilen anahtar sütunlarının değerlerinin benzer eşleşmesine bağlı olarak table1
satırlarını table2
satırlarıyla birleştirir.
Bulanık eşleştirme, metin eşitliği yerine metnin benzerliğine dayalı bir karşılaştırmadır.
Varsayılan olarak, iç birleşim gerçekleştirilir, ancak birleştirme türünü belirtmek için isteğe bağlı bir joinKind
eklenebilir. Seçenekler şunlardır:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
Anahtar sütunların nasıl karşılaştırılacağını belirtmek için isteğe bağlı bir joinOptions
kümesi eklenebilir. Seçenekler şunlardır:
-
ConcurrentRequests
: Benzer eşleştirme için kullanılacak paralel iş parçacığı sayısını belirten 1 ile 8 arasında bir sayıdır. Varsayılan değer 1'dir. -
Culture
: Kültüre özgü kurallara göre eşleşen kayıtlara izin verir. Herhangi bir geçerli kültür adı olabilir. Örneğin, "ja-JP" kültür seçeneği, Kayıtları Japon kültürüne göre eşleştirir. Varsayılan değer "", Invariant English (değişmez İngilizce) kültürüne göre eşleşir. -
IgnoreCase
: Büyük/küçük harfe duyarsız anahtar eşleştirmesine izin veren mantıksal (true/false) değer. Örneğin, doğru olduğunda, "Üzüm" "üzüm" ile eşleştirilir. Varsayılan değer true değeridir. -
IgnoreSpace
: Eşleşmeleri bulmak için metin bölümlerinin birleştirilmesine olanak tanıyan mantıksal (true/false) değer. Örneğin, true olduğunda, "Gra pes" "Üzümler" ile eşleşir. Varsayılan değer true değeridir. -
NumberOfMatches
: Her giriş satırı için döndürülebilecek eşleşen satır sayısı üst sınırını belirten tamsayı. Örneğin, 1 değeri her giriş satırı için en fazla bir eşleşen satır döndürür. Bu seçenek sağlanmazsa, eşleşen tüm satırlar döndürülür. -
SimilarityColumnName
: Giriş değeri ile bu girişin temsili değeri arasındaki benzerliği gösteren sütun adı. Varsayılan değer null değeridir ve bu durumda benzerlikler için yeni bir sütun eklenmez. -
Threshold
: İki değerin eşleştirileceği benzerlik puanını belirten 0,00 ile 1,00 arasında bir sayıdır. Örneğin, "Üzümler" ve "Graes" (burada "p" eksik) yalnızca bu seçenek 0,90'dan küçük olarak ayarlanırsa eşleştirilir. 1,00 eşiği yalnızca tam eşleşmelere izin verir. (Hatalı bir "tam eşleşme"nin büyük/küçük harf, sözcük sırası ve noktalama işaretleri gibi farkları yok sayabileceğini unutmayın.) Varsayılan değer 0,80'dir. -
TransformationTable
: Özel değer eşlemelerine göre eşleşen kayıtlara izin veren bir tablo. "Kimden" ve "Kime" sütunları içermelidir. Örneğin, "Kaynak" sütununda "Üzümler" ve "Hedef" sütununda "Kuru Üzümler" içeren bir dönüştürme tablosu sağlanırsa, "Üzümler" "Kuru Üzümler" ile eşleştirilir. Dönüştürmenin, dönüştürme tablosundaki metnin tüm oluşumlarına uygulanacağını unutmayın. Yukarıdaki dönüşüm tablosu ile "Üzümler tatlıdır" aynı zamanda "Kuru üzümler tatlıdır" ile de eşleştirilecektir.
[FirstName] üzerine iki tablonun sol iç bulanık birleşimi
Kullanım
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]
)
Çıkış
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
]
})