Eşleme veri akışında birleştirme dönüşümü

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Veri akışları hem Azure Data Factory'de hem de Azure Synapse Pipelines'da kullanılabilir. Bu makale, eşleme veri akışları için geçerlidir. Dönüştürmeler hakkında yeniyseniz lütfen eşleme veri akışı kullanarak verileri dönüştürme başlıklı giriş makalesine bakın.

Bir eşleme veri akışında iki kaynaktan veya akıştan verileri birleştirmek için birleştirme dönüştürmesini kullanın. Çıkış akışı, birleştirme koşuluna göre eşleştirilen her iki kaynaktan tüm sütunları içerir.

Birleştirme türleri

Eşleme veri akışları şu anda beş farklı birleştirme türünü destekler.

İç Birleşim

İç birleşim yalnızca her iki tabloda da eşleşen değerlere sahip satırların çıkışını verir.

Sol Dış

Sol dış birleşim, sol akıştan tüm satırları ve sağ akıştan eşleşen kayıtları döndürür. Sol akıştan bir satırın eşleşmesi yoksa, sağ akıştan çıkış sütunları NULL olarak ayarlanır. Çıkış, iç birleşim tarafından döndürülen satırlar ve sol akıştan eşleşmeyen satırlar olacaktır.

Dekont

Veri akışları tarafından kullanılan Spark altyapısı, katılma koşullarınızdaki olası kartezyen ürünler nedeniyle zaman zaman başarısız olur. Bu durumda, özel çapraz birleştirmeye geçebilir ve birleştirme koşulunuzu el ile girebilirsiniz. Yürütme altyapısının ilişkinin her iki tarafından tüm satırları hesaplaması ve ardından satırları filtrelemesi gerektiğinden, bu durum veri akışlarınızda daha yavaş performansa neden olabilir.

Sağ Dış

Sağ dış birleşim, sağ akıştan tüm satırları ve sol akıştan eşleşen kayıtları döndürür. Sağ akıştan bir satırın eşleşmesi yoksa, sol akıştan çıkış sütunları NULL olarak ayarlanır. Çıkış, iç birleşim tarafından döndürülen satırlar ve sağ akıştan eşleşmeyen satırlar olacaktır.

Tam Dış

Tam dış birleşim, eşleştirilmeyen sütunlar için NULL değerleriyle her iki taraftan tüm sütunları ve satırların çıkışını verir.

Özel çapraz birleştirme

Çapraz birleştirme, bir koşula göre iki akışın çapraz çarpımını verir. Eşitlik olmayan bir koşul kullanıyorsanız, çapraz birleştirme koşulunuz olarak özel bir ifade belirtin. Çıkış akışı, birleştirme koşuluna uyan tüm satırlar olacaktır.

Bu birleştirme türünü, equi olmayan birleşimler ve OR koşullar için kullanabilirsiniz.

Tam kartezyen ürünü açıkça üretmek istiyorsanız, eşleşmesi gereken yapay bir anahtar oluşturmak için birleştirmeden önce iki bağımsız akışın her birinde Türetilmiş Sütun dönüştürmesini kullanın. Örneğin, adlı SyntheticKey her akışta Türetilmiş Sütun'da yeni bir sütun oluşturun ve değerine eşit 1olarak ayarlayın. Ardından özel birleştirme ifadeniz olarak kullanın a.SyntheticKey == b.SyntheticKey .

Dekont

Özel çapraz birleşimde sol ve sağ ilişkinizin her iki tarafından en az bir sütun eklediğinizden emin olun. Çapraz birleştirmelerin her iki taraftan sütunlar yerine statik değerlerle yürütülmesi, veri kümesinin tamamında tam tarama yapılmasına ve veri akışınızın kötü performans göstermesine neden olur.

Benzer birleşim

"Benzer eşleştirmeyi kullan" onay kutusunu açarak tam sütun değeri eşleştirmesi yerine benzer birleşim mantığına göre birleştirmeyi seçebilirsiniz.

  • Metin bölümlerini birleştirme: Sözcükler arasındaki boşluğu kaldırarak eşleşmeleri bulmak için bu seçeneği kullanın. Örneğin, bu seçenek etkinse Data Factory DataFactory ile eşleştirilir.
  • Benzerlik puanı sütunu: İsteğe bağlı olarak, bu değeri depolamak için buraya yeni bir sütun adı girerek bir sütundaki her satır için eşleşen puanı depolamayı seçebilirsiniz.
  • Benzerlik eşiği: Seçtiğiniz sütunlardaki değerler arasında yüzde eşleşmesi olarak 60 ile 100 arasında bir değer seçin.

Fuzzy join

Dekont

Benzer eşleştirme şu anda yalnızca dize sütun türleriyle ve iç, sol dış ve tam dış birleşim türleriyle çalışır. Eşleşen birleştirmeleri fuzzing kullanırken yayın iyileştirmesini kapatmanız gerekir.

Yapılandırma

  1. Sağ akış açılan listesinde hangi veri akışına katılacağınız seçin.
  2. Katılma türünüzü seçin
  3. Birleştirme koşulunuz için hangi anahtar sütunlarını eşleştirmek istediğinizi seçin. Varsayılan olarak, veri akışı her akıştaki bir sütun arasında eşitlik arar. Hesaplanan değerle karşılaştırmak için sütun açılan listesinin üzerine gelin ve Hesaplanan sütun'a tıklayın.

Screenshot of join Transformation

Eşit olmayan birleşimler

Birleştirme koşullarınızda eşit (!=) veya büyüktür> () gibi bir koşullu işleç kullanmak için, iki sütun arasındaki işleç açılan listesini değiştirin. Eşdeğer olmayan birleşimler, İyileştir sekmesindeki Sabit yayın kullanılarak iki akışın en az birinin yayınlanması gerekir.

Non-equi join

Birleştirme performansını iyileştirme

SSIS gibi araçlarda birleştirme birleştirme işleminden farklı olarak birleştirme dönüşümü zorunlu birleştirme birleştirme işlemi değildir. Birleştirme anahtarları sıralama gerektirmez. Birleştirme işlemi Spark'taki en uygun birleştirme işlemine (yayın veya harita tarafı birleştirme) göre gerçekleşir.

Join Transformation optimize

Birleştirmelerde, aramalar ve var olan dönüştürmede, veri akışlarından biri veya her ikisi de çalışan düğümü belleğine sığıyorsa, Yayını etkinleştirerek performansı iyileştirebilirsiniz. Varsayılan olarak, spark altyapısı bir tarafı yayınlayıp yayınlamamaya otomatik olarak karar verir. Yayınlamak istediğiniz tarafı el ile seçmek için Sabit'i seçin.

Birleşimleriniz zaman aşımı hatalarıyla karşılaşmıyorsa Kapalı seçeneği aracılığıyla yayını devre dışı bırakmanız önerilmez.

Kendi Kendine Katılma

Bir veri akışını kendi kendine birleştirmek için, mevcut bir akışı belirli bir dönüşümle diğer adla kullanın. Bir dönüşümün yanındaki artı simgesine tıklayıp Yeni dal'ı seçerek yeni bir dal oluşturun. Özgün akışı diğer ad olarak kullanmak için bir seçme dönüştürmesi ekleyin. Birleştirme dönüştürmesi ekleyin ve özgün akışı Sol akış olarak, dönüştürmeyi Sağ akış olarak seçin.

Self-join

Birleştirme koşullarını test etme

Birleştirme dönüştürmelerini hata ayıklama modunda veri önizlemesi ile test ederken, bilinen küçük bir veri kümesi kullanın. Büyük bir veri kümesinden satır örneklemesi yaparken, test için hangi satırların ve anahtarların okunacağını tahmin edebilirsiniz. Sonuç belirlenemez, yani birleştirme koşullarınız herhangi bir eşleşme döndürmeyebilir.

Veri akışı betiği

Sözdizimi

<leftStream>, <rightStream>
    join(
        <conditionalExpression>,
        joinType: { 'inner'> | 'outer' | 'left_outer' | 'right_outer' | 'cross' }
        broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
    ) ~> <joinTransformationName>

İç birleşim örneği

Aşağıdaki örnek, sol akış ve sağ TripFareakış TripData alan adlı JoinMatchedData bir birleştirme dönüşümüdür. Birleştirme koşulu, her akıştaki hack_license, medallion, vendor_idve pickup_datetime sütunları eşleşirse true döndüren ifadedirhack_license == { hack_license} && TripData@medallion == TripFare@medallion && vendor_id == { vendor_id} && pickup_datetime == { pickup_datetime}. joinType şeklindedir'inner'. Yalnızca sol akışta broadcast yayınlamayı etkinleştirdiğimiz için değeri 'left'vardır.

Kullanıcı arabiriminde bu dönüştürme aşağıdaki görüntüye benzer:

Screenshot shows the transformation with the Join Settings tab selected and a Join type of Inner.

Bu dönüşümün veri akışı betiği aşağıdaki kod parçacığındadır:

TripData, TripFare
    join(
        hack_license == { hack_license}
        && TripData@medallion == TripFare@medallion
        && vendor_id == { vendor_id}
        && pickup_datetime == { pickup_datetime},
        joinType:'inner',
        broadcast: 'left'
    )~> JoinMatchedData

Özel çapraz birleştirme örneği

Aşağıdaki örnek, sol akış ve sağ RightStreamakış LeftStream alan adlı JoiningColumns bir birleştirme dönüşümüdür. Bu dönüşüm iki akış alır ve sütunun sütunundan leftstreamcolumn büyük rightstreamcolumnolduğu tüm satırları birleştirir. joinType şeklindedircross. Yayın etkin broadcast değil değeri 'none'vardır.

Kullanıcı arabiriminde bu dönüştürme aşağıdaki görüntüye benzer:

Screenshot shows the transformation with the Join Settings tab selected and a Join type of Custom (cross).

Bu dönüşümün veri akışı betiği aşağıdaki kod parçacığındadır:

LeftStream, RightStream
    join(
        leftstreamcolumn > rightstreamcolumn,
        joinType:'cross',
        broadcast: 'none'
    )~> JoiningColumns

Verileri birleştirdikten sonra türetilmiş bir sütun oluşturun ve verilerinizi hedef veri deposuna havuza yazın.