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 , decimal , double |
short |
int , long , decimal , double |
int |
long , decimal , double |
long |
decimal |
float |
double |
decimal |
Daha büyük hassasiyet ve ölçekle decimal |
date |
timestampNTZ |
Tamsayı değerlerinin ondalıklara yanlışlıkla yükseltılmasını önlemek için, byte
, short
, int
veya long
tür değişikliklerini el ile decimal
veya double
olarak işlemeniz gerekir.
Not
Herhangi bir sayısal türü decimal
olarak değiştirirken, toplam duyarlık başlangıç duyarlığına eşit veya bundan büyük olmalıdır. Ölçeği de artırırsanız, toplam kesinlik aynı oranda artmalıdır.
byte
, short
ve int
türleri için en düşük hedef decimal(10,0)
.
long
için asgari hedef decimal(20,0)
.
decimal(10,1)
olan bir alana iki ondalık basamak eklemek istiyorsanız, en düşük hedef decimal(12,3)
.
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
delta.enableTypeWidening
tablo özelliğini true
olarak ayarlayarak var olan bir tabloda tür genişletmeyi 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 typeWidening-preview
tablo özelliğini 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
INSERT
kullanırMERGE INTO
. - 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şılamayan tür uyuşmazlıkları normal şema uygulama kurallarına tabidir. Bkz. Şema zorlaması.
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 DROP FEATURE
komutunu kullanabilirsiniz:
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.