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 true
olarak 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-preview
ayarlar. 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 INTO
kullanı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 false
olarak 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.