Tür genişletme

Önemli

Bu özellik Databricks Runtime 15.2 ve üzeri sürümlerin Genel Önizleme sürümündedir.

Tür genişletme özelliği etkinleştirilmiş tablolar, temel alınan veri dosyalarını yeniden yazmadan sütun veri türlerini daha geniş bir türe dönüştürmenizi sağlar. Sütun türlerini el ile değiştirebilir veya sütun türlerini geliştirmek için şema evrimi kullanabilirsiniz.

Tür genişletme delta lake gerektirir. Unity Kataloğu tarafından yönetilen tüm tablolarda varsayılan olarak Delta Lake kullanılır.

Desteklenen tür değişiklikleri

Türleri aşağıdaki kurallara göre genişletebilirsiniz:

Source type Desteklenen daha geniş türler
byte short, int, long
short int, long
int long
float double
decimal decimal daha fazla duyarlık ve aynı ölçekle
date timestampNTZ

Tür değişiklikleri yapıların, haritaların ve dizilerin içinde iç içe yerleştirilmiş en üst düzey sütunlar ve alanlar için desteklenir.

Tür genişletmeyi etkinleştirme

Tablo özelliğini trueolarak ayarlayarak mevcut bir tabloda tür genişletmeyi delta.enableTypeWidening etkinleştirebilirsiniz:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')

Tablo oluşturma sırasında tür genişletmeyi de etkinleştirebilirsiniz:

  CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')

Önemli

Tür genişletmeyi etkinleştirdiğinizde, okuyucu ve yazıcı protokollerini yükselten tablo özelliğini typeWidening-previewayarlar. Tür genişletme etkinleştirilmiş tablolarla etkileşime geçmek için Databricks Runtime 15.2 veya üzerini kullanmanız gerekir. Dış istemciler de tabloyla etkileşime geçiyorsa, bu tablo özelliğini desteklediklerini doğrulayın. Bkz. Azure Databricks Delta Lake özellik uyumluluğunu nasıl yönetir?.

Tür değişikliğini el ile uygulama

ALTER COLUMN Türleri el ile değiştirmek için komutunu kullanın:

ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>

Bu işlem, temel alınan veri dosyalarını yeniden yazmadan tablo şemasını güncelleştirir.

Otomatik şema evrimi ile türleri genişletme

Şema evrimi, hedef tablolardaki veri türlerini gelen veri türüyle eşleşecek şekilde güncelleştirmek için tür genişletme ile çalışır.

Not

Tür genişletme etkinleştirilmeden, şema evrimi her zaman hedef tablodaki sütun türleriyle eşleşecek şekilde verileri güvenli bir şekilde aşağı aktarmayı dener. Hedef tablolarınızdaki veri türlerini otomatik olarak genişletmeyi istemiyorsanız, şema evrimi etkin iş yüklerini çalıştırmadan önce tür genişletmeyi devre dışı bırakın.

Şema evrimini kullanarak bir sütunun veri türünü genişletmek için aşağıdaki koşulları karşılamanız gerekir:

  • komutu veya MERGE INTOkullanırINSERT.
  • Komut, otomatik şema evrimi etkin olarak çalışır.
  • Hedef tabloda tür genişletme etkinleştirildi.
  • Kaynak sütun türü hedef sütun türünden daha geniştir.
  • Tür genişletme, tür değişikliğini destekler.

Bu koşulların tümünü karşılamayen tür uyuşmazlıkları normal şema zorlama kurallarına uyar. Bkz. Şema zorlama.

Tür genişletme tablosu özelliğini devre dışı bırakma

özelliğini falseolarak ayarlayarak etkinleştirilen tablolarda yanlışlıkla tür genişletmeyi önleyebilirsiniz:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')

Bu ayar, tabloda gelecekteki tür değişikliklerini engeller, ancak tür genişletme tablosu özelliğini kaldırmaz veya değiştirilen türleri geri almaz.

Tür genişletme tablosu özelliklerini tamamen kaldırmanız gerekiyorsa, aşağıdaki örnekte gösterildiği gibi komutunu kullanabilirsiniz DROP FEATURE :

 ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]

Tür genişletme bırakıldığında, geçerli tablo şemasına uymayan tüm veri dosyaları yeniden yazılır. Bkz . Delta tablosu özelliklerini bırakma.