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 partitionBydiğ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.

Bkz. Delta Lake birleştirme için otomatik şema evrimi.