Delta Lake şema doğrulaması
Delta Lake, yazılan DataFrame şemasının tablonun şemasıyla uyumlu olduğunu otomatik olarak doğrular. Delta Lake, DataFrame'den tabloya yazma işleminin uyumlu olup olmadığını belirlemek için aşağıdaki kuralları kullanır:
- Tüm DataFrame sütunları hedef tabloda bulunmalıdır. DataFrame'de tabloda bulunmayan sütunlar varsa, bir özel durum oluşur. Tabloda bulunan ancak DataFrame'de bulunmayan sütunlar null olarak ayarlanır.
- DataFrame sütun veri türleri, hedef tablodaki sütun veri türleriyle eşleşmelidir. Eşleşmiyorsa, bir özel durum oluşturulur.
- DataFrame sütun adları yalnızca büyük/küçük harfe göre farklılık gösteremez. Bu, aynı tabloda "Foo" ve "foo" gibi sütunların tanımlanamayacağı anlamına gelir. Spark'ı büyük/küçük harfe duyarlı veya duyarsız (varsayılan) modda kullanabilirsiniz ancak Parquet sütun bilgilerini depolarken ve döndürürken büyük/küçük harfe duyarlıdır. Delta Lake, şemayı depolarken büyük/küçük harf korumalı ancak duyarsızdır ve olası hataları, veri bozulmalarını veya kayıp sorunlarını önlemek için bu kısıtlamaya sahiptir.
Delta Lake, DDL'nin yeni sütunları açıkça eklemesini ve şemayı otomatik olarak güncelleştirme özelliğini destekler.
gibi partitionBy
diğer seçenekleri ekleme moduyla birlikte belirtirseniz, Delta Lake bunların eşleşip eşleşmediğini doğrular ve herhangi bir uyuşmazlık için bir hata oluşturur. Mevcut partitionBy
olmadığında, ekler otomatik olarak mevcut verilerin bölümlemesi izler.
Not
INSERT
söz dizimi şema zorlama sağlar ve şema evrimi destekler. Bir sütunun veri türü Delta Lake tablonuzun veri türüne güvenli bir şekilde atanamıyorsa, çalışma zamanı özel durumu oluşturulur. Şema evrimi etkinleştirilirse, şemanın gelişmesi için şemanızın son sütunları (veya iç içe yerleştirilmiş sütunlar) olarak yeni sütunlar bulunabilir.
Delta Lake birleştirme için şema doğrulaması
merge
ekleme ve güncelleştirme ifadeleri tarafından oluşturulan verilerin şemasının tablonun şemasıyla uyumlu olduğunu otomatik olarak doğrular. İşlemin uyumlu olup olmadığını merge
belirlemek için aşağıdaki kuralları kullanır:
- ve
insert
eylemleri içinupdate
, belirtilen hedef sütunların hedef Delta tablosunda mevcut olması gerekir. - ve
insertAll
eylemleri içinupdateAll
, kaynak veri kümesinin hedef Delta tablosunun tüm sütunlarına sahip olması gerekir. Kaynak veri kümesinde ek sütunlar olabilir ve bunlar yoksayılır. - Tüm eylemler için, hedef sütunları oluşturan ifadeler tarafından oluşturulan veri türü hedef Delta tablosundaki karşılık gelen sütunlardan farklıysa,
merge
bunları tablodaki türlere dönüştürmeye çalışır.