Eşleme veri akışında satır dönüştürmeyi değiştirme

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.

Satırlara ekleme, silme, güncelleştirme ve upsert ilkeleri ayarlamak için Satır Değiştir dönüştürmesini kullanın. bire çok koşullarını ifade olarak ekleyebilirsiniz. Her satır ilk eşleşen ifadeye karşılık gelen ilkeyle işaretleneceğinden, bu koşullar öncelik sırasına göre belirtilmelidir. Bu koşulların her biri bir satırın (veya satırların) eklenmesine, güncelleştirilip silinmesine veya eklenmesine neden olabilir. Alter Row, veritabanınızda hem DDL hem de DML eylemleri oluşturabilir.

Alter row settings

Satır Değiştirme dönüştürmeleri yalnızca veri akışınızdaki veritabanı, REST veya Azure Cosmos DB havuzlarında çalışır. Satırlara atadığınız eylemler (ekleme, güncelleştirme, silme, upsert) hata ayıklama oturumları sırasında gerçekleşmez. Veritabanı tablolarınızdaki değişiklik satırı ilkelerini uygulamak için işlem hattında bir Execute Veri Akışı etkinliği çalıştırın.

Dekont

SQL Server veya SAP gibi yerel CDC kaynaklarını kullanan Veri Yakalama veri akışlarını değiştirmek için Alter Row dönüştürmesi gerekmez. Bu durumlarda, ADF satır işaretçisini otomatik olarak algılar, bu nedenle Satır İlkelerini Değiştir gereksizdir.

Varsayılan satır ilkesi belirtme

Satır Değiştir dönüştürmesi oluşturun ve koşuluyla true()bir satır ilkesi belirtin. Önceden tanımlanmış ifadelerden herhangi biriyle eşleşmeyen her satır, belirtilen satır ilkesi için işaretlenir. Varsayılan olarak, hiçbir koşullu ifadeyle eşleşmeyen her satır için Insertişaretlenir.

Alter row policy

Dekont

Tüm satırları tek bir ilkeyle işaretlemek için, bu ilke için bir koşul oluşturabilir ve koşulu olarak true()belirtebilirsiniz.

İlkeleri veri önizlemesinde görüntüleme

Değişiklik satırı ilkelerinizin sonuçlarını veri önizleme bölmesinde görüntülemek için hata ayıklama modunu kullanın. Bir değişiklik satırı dönüştürmesinin veri önizlemesi hedefinize karşı DDL veya DML eylemleri üretmez.

Alter row policies

Her değişiklik satırı ilkesi, ekleme, güncelleştirme, yükseltme veya silme eyleminin gerçekleşip gerçekleşmeyeceğini belirten bir simgeyle temsil edilir. Üst üst bilgi, önizlemedeki her ilkeden kaç satırın etkilendiğini gösterir.

Havuzdaki satır ilkelerini değiştirmeye izin ver

Satır değiştirme ilkelerinin çalışması için veri akışının bir veritabanına veya Azure Cosmos DB havuzuna yazması gerekir. Havuzunuzun Ayarlar sekmesinde, bu havuz için hangi değişiklik satırı ilkelerine izin verildiğini etkinleştirin.

Alter row sink

Varsayılan davranış yalnızca eklemelere izin vermektir. Güncelleştirmelere, yükseltmelere veya silmelere izin vermek için havuzdaki bu koşula karşılık gelen kutuyu işaretleyin. Güncelleştirmeler, upsert'ler veya silmeler etkinleştirilirse havuzdaki hangi anahtar sütunlarının eşleşeceğini belirtmeniz gerekir.

Dekont

Eklemeleriniz, güncelleştirmeleriniz veya upsert'leriniz havuzdaki hedef tablonun şemasını değiştirirse veri akışı başarısız olur. Veritabanınızdaki hedef şemayı değiştirmek için tablo eylemi olarak Tabloyu yeniden oluştur'u seçin. Bu, tablonuzu yeni şema tanımıyla bırakır ve yeniden oluşturur.

Havuz dönüşümü, hedef veritabanınızda benzersiz satır belirleme için tek bir anahtar veya bir dizi anahtar gerektirir. SQL havuzları için havuz ayarları sekmesinde anahtarları ayarlayın. Azure Cosmos DB için ayarlarda bölüm anahtarını ayarlayın ve ayrıca havuz eşlemenizde Azure Cosmos DB sistem alanı "id" değerini ayarlayın. Azure Cosmos DB için güncelleştirmeler, upsert'ler ve silmeler için "id" sistem sütununun eklenmesi zorunludur.

Azure SQL Veritabanı ve Azure Synapse ile birleştirmeler ve upsert'ler

Veri Akışı, upsert seçeneğiyle Azure SQL Veritabanı ve Azure Synapse veritabanı havuzuna (veri ambarı) yönelik birleştirmeleri destekler.

Ancak, hedef veritabanı şemanızın anahtar sütunların kimlik özelliğini kullandığı senaryolarla karşılaşabilirsiniz. Hizmet, güncelleştirmeler ve upsert'ler için satır değerleriyle eşleştirmek için kullanacağınız anahtarları tanımlamanızı gerektirir. Ancak hedef sütunda kimlik özelliği ayarlanmışsa ve upsert ilkesini kullanıyorsanız, hedef veritabanı sütuna yazmanıza izin vermez. Dağıtılmış bir tablonun dağıtım sütununa upsert eklemeyi denediğinizde de hatalarla karşılaşabilirsiniz.

Bunu düzeltmenin yolları şunlardır:

  1. Havuz dönüştürme Ayarlar gidin ve "Anahtar sütunları yazmayı atla" seçeneğini ayarlayın. Bu, hizmete eşlemeniz için anahtar değeri olarak seçtiğiniz sütunu yazmaması gerektiğini bildirir.

  2. Bu anahtar sütunu, kimlik sütunları için soruna neden olan sütun değilse, Havuz dönüştürme ön işleme SQL seçeneğini kullanabilirsiniz: SET IDENTITY_INSERT tbl_content ON. Ardından, işlem sonrası SQL özelliğiyle kapatın: SET IDENTITY_INSERT tbl_content OFF.

  3. Hem kimlik durumu hem de dağıtım sütunu durumu için, mantığınızı Upsert'ten ayrı bir güncelleştirme koşulu ve Koşullu Bölme dönüştürmesi kullanarak ayrı bir ekleme koşulu kullanmaya geçirebilirsiniz. Bu şekilde, güncelleştirme yolundaki eşlemeyi anahtar sütun eşlemesini yoksayacak şekilde ayarlayabilirsiniz.

Veri akışı betiği

Sözdizimi

<incomingStream>
    alterRow(
           insertIf(<condition>?),
           updateIf(<condition>?),
           deleteIf(<condition>?),
           upsertIf(<condition>?),
        ) ~> <alterRowTransformationName>

Örnek

Aşağıdaki örnek, bir gelen akışı SpecifyUpsertConditions alan ve üç değişiklik satırı koşulu oluşturan adlı CleanData bir değişiklik satırı dönüşümüdür. Önceki dönüştürmede, veritabanında satır eklenip eklenmeyeceğini, güncelleştirilip güncelleştirilmediğini veya silinip silinmeyeceğini belirleyen adlı alterRowCondition bir sütun hesaplanır. Sütunun değeri, değiştirme satırı kuralıyla eşleşen bir dize değerine sahipse, bu ilkeye atanır.

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

Alter row example

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

SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'),
	updateIf(alterRowCondition == 'update'),
	deleteIf(alterRowCondition == 'delete')) ~> AlterRow

Satırı Değiştir dönüştürme işleminden sonra, verilerinizi bir hedef veri deposuna batırmak isteyebilirsiniz.