Rozšíření typu
Důležité
Tato funkce je ve verzi Public Preview v Databricks Runtime 15.2 a vyšší.
Tabulky s povoleným rozšířením typu umožňují změnit datové typy sloupců na širší typ bez přepsání podkladových datových souborů. Typy sloupců můžete změnit ručně nebo pomocí vývoje schématu vyvíjet typy sloupců.
Rozšíření typu vyžaduje Delta Lake. Všechny spravované tabulky katalogu Unity používají ve výchozím nastavení Delta Lake.
Podporované změny typu
Typy můžete rozšířit podle následujících pravidel:
Source type | Podporované širší typy |
---|---|
byte |
short , int , long , , decimal double |
short |
int , long , , decimal double |
int |
long , , decimal double |
long |
decimal |
float |
double |
decimal |
decimal s větší přesností a škálováním |
date |
timestampNTZ |
Chcete-li zabránit náhodnému povýšení celočíselné hodnoty na desetinná místa, je nutné ručně potvrdit změny typu z byte
, short
, int
nebo long
do decimal
nebo double
.
Poznámka:
Při změně libovolného číselného typu na decimal
musí být celková přesnost rovna nebo větší než počáteční přesnost. Pokud také zvětšíte měřítko, celková přesnost se musí zvýšit o odpovídající množství.
Minimální cíl pro byte
, short
a int
typy je decimal(10,0)
. Minimální cíl je long
decimal(20,0)
.
Pokud chcete do pole decimal(10,1)
přidat dvě desetinná místa, je minimální cíl decimal(12,3)
.
Změny typu jsou podporovány u sloupců a polí nejvyšší úrovně vnořených uvnitř struktur, map a polí.
Povolení rozšíření typu
Rozšíření typu u existující tabulky můžete povolit nastavením delta.enableTypeWidening
vlastnosti tabulky na true
:
ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')
Při vytváření tabulky můžete také povolit rozšíření typu:
CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')
Důležité
Když povolíte rozšíření typu, nastaví funkci typeWidening-preview
tabulky, která upgraduje protokoly pro čtení a zápis. Pokud chcete pracovat s tabulkami s povoleným rozšířením typu, musíte použít Databricks Runtime 15.2 nebo vyšší. Pokud s tabulkou pracují i externí klienti, ověřte, že tuto funkci tabulky podporují. Podívejte se, jak Azure Databricks spravuje kompatibilitu funkcí Delta Lake?
Ruční použití změny typu
ALTER COLUMN
Pomocí příkazu ručně změňte typy:
ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>
Tato operace aktualizuje schéma tabulky bez přepsání podkladových datových souborů.
Rozšiřující typy s automatickým vývojem schématu
Vývoj schématu funguje s rozšířením typu pro aktualizaci datových typů v cílových tabulkách tak, aby odpovídalo typu příchozích dat.
Poznámka:
Bez povoleného rozšíření typu se vývoj schématu vždy pokouší bezpečně downcastovat data tak, aby odpovídala typům sloupců v cílové tabulce. Pokud nechcete v cílových tabulkách automaticky rozšiřovat datové typy, zakažte rozšíření typu před spuštěním úloh s povoleným vývojem schématu.
Pokud chcete použít vývoj schématu k rozšíření datového typu sloupce, musíte splnit následující podmínky:
- Příkaz používá
INSERT
neboMERGE INTO
. - Příkaz se spustí s povoleným automatickým vývojem schématu.
- Cílová tabulka má povolený rozšiřující typ.
- Typ zdrojového sloupce je širší než cílový typ sloupce.
- Rozšíření typu podporuje změnu typu.
Neshody typů, které nesplňují všechny tyto podmínky, splňují normální pravidla vynucení schématu. Viz vynucení schématu.
Zakázání funkce rozšiřující tabulky typu
Náhodné rozšíření typu u povolených tabulek můžete zabránit nastavením vlastnosti na false
:
ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')
Toto nastavení brání budoucím změnám typu v tabulce, ale neodebere funkci rozšiřující tabulky typu ani typy, které se změnily.
Pokud potřebujete úplně odebrat funkce rozšiřující tabulky typu, můžete použít DROP FEATURE
příkaz, jak je znázorněno v následujícím příkladu:
ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]
Při rozšiřování typu se přepíší všechny datové soubory, které neodpovídají aktuálnímu schématu tabulky. Viz Funkce tabulky Drop Delta.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro