Eşleme veri akışında değişiklik satırı dönüşümü
Uygulama hedefi: Azure SYNAPSE Analytics 'i Azure Data Factory
Veri akışları hem Azure Data Factory hem de Azure SYNAPSE Pipelines kullanılabilir. Bu makale, veri akışlarını eşlemek için geçerlidir. Dönüşümlere yeni atıdıysanız, lütfen bir eşleme veri akışı kullanarak veri dönüştürmetanıtım makalesine başvurun.
Satırlarda INSERT, DELETE, Update ve upsert ilkeleri ayarlamak için alter Row dönüşümünü kullanın. Tek-çok koşullarını ifade olarak ekleyebilirsiniz. Her satır, ilk eşleşen ifadeye karşılık gelen ilkeyle işaretlendiği için bu koşulların öncelik sırasına göre belirtilmesi gerekir. Bu koşulların her biri, eklenen, güncellenen, silinmekte veya toplanmakta olan bir satırın (veya satırların) oluşmasına neden olabilir. Alter Row, veritabanınıza göre hem DDL & DML eylemleri üretebilir.
Değişiklik satırı dönüştürmeleri yalnızca veri akışınızdaki veritabanı, REST veya CosmosDB havuzları üzerinde çalışır. Satırlara atadığınız eylemler (INSERT, Update, DELETE, upsert) hata ayıklama oturumlarında gerçekleşmeyecek. veritabanı tablolarınızda alter row ilkelerini uygulamak için bir işlem hattındaki veri yürütme Flow etkinliğini çalıştırın.
Varsayılan bir satır ilkesi belirtin
Alter Row dönüşümü oluşturun ve koşulu olan bir satır ilkesi belirtin
true() . Önceden tanımlanmış ifadelerden hiçbiriyle eşleşmeyen her satır, belirtilen satır ilkesi için işaretlenir. Varsayılan olarak, herhangi bir koşullu ifadeyle eşleşmeyen her satır için işaretlenir
Insert .
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 belirtebilirsiniz
true() .
Veri önizlemede ilkeleri 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 modu ' nu kullanın. Bir alter Row dönüşümünün veri önizlemesi, hedeflemenize karşı DDL veya DML eylemleri üretmeyecektir.
Her alter Row ilkesi, bir INSERT, Update, upsert veya Deleted eyleminin gerçekleşeceğini belirten bir simgeyle temsil edilir. Üst başlıkta, Önizlemedeki her ilkeden kaç satır etkileniyor gösterilmektedir.
Havuzda alter Row ilkelerine izin ver
alter row ilkelerinin çalışması için veri akışının bir veritabanına veya Cosmos havuzuna yazması gerekir. havuzinizdeki Ayarlar sekmesinde, bu havuz için hangi alter row ilkelerine izin verileceğini etkinleştirin.
Varsayılan davranış yalnızca eklemeleri izin veriçindir. Güncelleştirmelere, üst ve Siliye izin vermek için, bu koşula karşılık gelen havuzda kutuyu işaretleyin. Güncelleştirmeler, uplar veya silme etkinse, havuzdaki hangi anahtar sütunlarının eşleşeceğini belirtmeniz gerekir.
Not
Ekleme, güncelleştirme veya ön ekler, havuzdaki hedef tablonun şemasını değiştirmezse veri akışı başarısız olur. Veritabanınızdaki hedef şemayı değiştirmek için tabloyu Tablo eylemi olarak yeniden oluştur ' u seçin. Bu, yeni şema tanımıyla tablonuzu bırakıp yeniden oluşturacak.
Havuz dönüştürmesi, hedef veritabanınızda benzersiz satır tanımlaması için tek bir anahtar veya bir dizi anahtar gerektirir. SQL havuzları için havuz ayarları sekmesindeki anahtarları ayarlayın. CosmosDB için, ayarlarda bölüm anahtarını ayarlayın ve ayrıca havuz eşinizdeki CosmosDB sistem alanını "ID" olarak ayarlayın. CosmosDB için, güncelleştirmeler, uplar ve silmeler için "ID" sistem sütununu eklemek zorunludur.
Azure SQL Veritabanı ve Azure Synapse ile birleştirir ve yukarı
veri akışları, Azure SQL Veritabanı ve Azure Synapse veritabanı havuzuna (veri ambarı) karşı, upsert seçeneği ile birleştirmeleri destekler.
Bununla birlikte, hedef veritabanı şemanızın anahtar sütunlarının kimlik özelliğini kullandığı senaryolara sahip olabilirsiniz. Hizmet, güncelleştirmeler ve yukarı serler için satır değerleriyle eşleştirmek üzere kullanacağınız anahtarları tanımlamanızı gerektirir. Ancak, hedef sütununda Identity özelliği ayarlanmış ise ve upsert ilkesi kullanıyorsanız, hedef veritabanı sütuna yazmanıza izin vermez. Ayrıca, dağıtılmış bir tablonun dağıtım sütununa karşı daha fazla denemeye çalıştığınızda hatalarla karşılaşabilirsiniz.
Bunu gidermenin yolları aşağıda verilmiştir:
havuz dönüştürme Ayarlar gidin ve "anahtar sütunlarını yazmayı atla" öğesini ayarlayın. Bu, hizmete eşlemenin anahtar değeri olarak seçtiğiniz sütunu yazmadığından emin olur.
bu anahtar sütun, 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. sonra, işlem sonrası SQL özelliği ile devre dışı bırakın:
SET IDENTITY_INSERT tbl_content OFF.
Hem kimlik durumu hem de dağıtım sütunu durumu için mantığınızı, koşullu bölünmüş dönüşüm kullanarak ayrı bir güncelleştirme koşulu ve ayrı bir ekleme koşulu kullanarak kullanabilirsiniz. Bu şekilde, güncelleştirme yolundaki eşlemeyi anahtar sütunu eşlemesini yoksayacak şekilde ayarlayabilirsiniz.
Veri akışı betiği
Syntax
<incomingStream> alterRow( insertIf(<condition>?), updateIf(<condition>?), deleteIf(<condition>?), upsertIf(<condition>?), ) ~> <alterRowTransformationName>
Örnek
Aşağıdaki örnek,
CleanData gelen akış alan
SpecifyUpsertConditions ve üç alter Row koşulu oluşturan adlı bir alter Row dönüşümünün örneğidir. Önceki dönüşümde,
alterRowCondition bir satırın veritabanına eklenip eklenmeyeceğini, güncelleştirileceğini veya silindiğini belirleyen adlı bir sütun hesaplanır. Sütunun değeri alter Row kuralıyla eşleşen bir dize değeri içeriyorsa, bu ilke atanır.
Kullanıcı arabiriminde, bu dönüşüm aşağıdaki görüntüye benzer şekilde görünür:
Bu dönüşüm için veri akışı betiği aşağıdaki kod parçacığında verilmiştir:
SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'), updateIf(alterRowCondition == 'update'), deleteIf(alterRowCondition == 'delete')) ~> AlterRow
Sonraki adımlar
Alter Row dönüşümünde, verilerinizi bir hedef veri deposuna havuzaalmak isteyebilirsiniz.