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

ŞUNLARA UYGULANIR: Azure Data Factory Azure Synapse Analytics

İpucu

Microsoft Fabric'daki Data Factory, daha basit bir mimariye, yerleşik yapay zekaya ve yeni özelliklere sahip yeni nesil Azure Data Factory. Veri tümleştirmeyi yeni kullanmaya başladıysanız Fabric Data Factory ile başlayın. Mevcut ADF iş yükleri veri bilimi, gerçek zamanlı analiz ve raporlama genelinde yeni özelliklere erişmek için Fabric yükseltebilir.

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

İpucu

Satır Değiştir dönüştürmesi şu anda Veri Akışı 2. Nesil'de desteklenmiyor. Desteklenen dönüştürmelerin ve bunların eşdeğerlerinin listesi için bkz. Veri akışı kullanıcılarını eşlemek için Veri Akışı 2. Nesil kılavuzu.

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şaretlendiğ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.

Satır ayarlarını değiştirme

Satır Değiştirme Dönüşümleri yalnızca veri akışında yer alan 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ızda satır değiştirme politikalarını uygulamak için işlem hattında bir Veri Akışı Yürütme etkinliğini çalıştırın.

Not

SQL Server veya SAP gibi yerel CDC kaynaklarını kullanan Veri Değişiklik Yakalama (CDC) veri akışları için bir Alter Row dönüştürmesi gerekmez. Bu durumlarda, ADF satır işaretçisini otomatik olarak algılar, bu nedenle Satır Değiştir politikaları gereksiz hale gelir.

Varsayılan bir satır ilkesini belirtin

Satır Değiştir dönüşümünü oluşturun ve koşulu true() olan bir satır ilkesini 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.

Satır ilkesini değiştirme

Not

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. Satır değiştirme dönüşümünün veri önizlemesi, hedefinize karşı DDL veya DML eylemleri oluşturmaz.

Satır ilkelerini değiştirme

Her değişiklik satırı ilkesi için bir simge, ekleme, güncelleştirme, yükseltme veya silme eyleminin gerçekleşip gerçekleşmediğini gösterir. Üst bilgi, her ilkenin önizleme alanında kaç satırı etkilediğ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. Sink'inizin Ayarlar sekmesinde, bu sink için hangi değişiklik satırı ilkelerinin izin verildiğini etkinleştirin.

Satır havuzu değiştirme

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.

Not

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 işlem, tablonuzu yeni şema tanımıyla siler 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 "ID" Azure Cosmos DB sistem alanını ayarlayın. Azure Cosmos DB için güncelleştirmeler, upsert'ler ve silmeler için "ID" sistem sütununun eklenmesi zorunlu olur.

Azure SQL Veritabanı ve Azure Synapse ile birleştirme ve ekleme veya güncelleme işlemleri

Veri Akışları, 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üncellemeler ve upsert işlemleri için satır değerlerini eşleştirmek amacıyla kullandığı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ı'na gidin ve "Anahtar sütunları yazmayı atla" seçeneğini belirleyin. Bu, hizmete eşlemeniz için anahtar değeri olarak seçtiğiniz sütunu yazmamalarını söyler.

  2. Eğer bu anahtar sütun, kimlik sütunları için soruna neden olan sütun değilse, Sink transformation ö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 hem de dağıtım sütunu durumu için, Upsert mantığınızı bırakıp ayrı bir güncelleştirme ve ekleme koşulu kullanmaya, yani Koşullu Bölme dönüştürmesi ile bu işlemi yapmaya geçebilirsiniz. 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, gelen bir akışı CleanData alan ve üç değişiklik satırı koşulu oluşturan SpecifyUpsertConditions adlı bir satır değiştirme 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, satır değiştirme kuralıyla eşleşen bir dize değerine sahipse, ilgili politika atanır.

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

Satır örneğini değiştirme

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 yönlendirmek isteyebilirsiniz.