ALTER TABLE
Dotyczy: Databricks SQL
Databricks Runtime
Zmienia schemat lub właściwości tabeli.
Aby uzyskać informacje o zmianach typu lub zmianie nazw kolumn w usłudze Delta Lake, zobacz Ponowne zapisywanie danych.
Aby zmienić komentarz w tabeli lub kolumnie, możesz również użyć COMMENT ON.
Aby zmienić STREAMING TABLE
, użyj ALTER STREAMING TABLE.
Jeśli tabela jest buforowana, polecenie czyści buforowane dane tabeli i wszystkie jej zależności, które się do niej odwołują. Pamięć podręczna zostanie leniwie wypełniona, gdy przy następnym dostępie będzie uzyskiwany dostęp do tabeli lub zależności.
Uwaga
Podczas dodawania kolumny do istniejącej tabeli delty nie można zdefiniować DEFAULT
wartości. Wszystkie kolumny dodane do tabel delty są traktowane jako NULL
dla istniejących wierszy. Po dodaniu kolumny można opcjonalnie zdefiniować wartość domyślną dla kolumny, ale jest ona stosowana tylko dla nowych wierszy wstawionych do tabeli. Użyj następującej składni:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
Na tabelach obcych można wykonywać tylko ALTER TABLE SET OWNER
i ALTER TABLE RENAME TO
.
Wymagane uprawnienia
Jeśli używasz Unity Catalog, musisz mieć MODIFY
uprawnienia do:
- ZMIEŃ COLUMN
- DODAJ COLUMN
- Odrzuć COLUMN
- SET TBLPROPERTIES
- Polecenie UNSET TBLPROPERTIES
- modyfikowanie OPTYMALIZACJI PREDYKCYJNEJ
Jeśli używasz Katalogu Unity, musisz mieć uprawnienia MANAGE
lub posiadanie:
- DO WŁAŚCICIELA SET
Wszystkie inne operacje wymagają własności tabeli.
Składnia
ALTER TABLE table_name
{ RENAME TO clause |
ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN clause |
DEFAULT COLLATION clause |
ADD CONSTRAINT clause |
DROP CONSTRAINT clause |
DROP FEATURE clause |
ADD PARTITION clause |
DROP PARTITION clause |
PARTITION SET LOCATION clause |
RENAME PARTITION clause |
RECOVER PARTITIONS clause |
SET { ROW FILTER clause } |
DROP ROW FILTER |
SET TBLPROPERTIES clause |
UNSET TBLPROPERTIES clause |
SET SERDE clause |
SET LOCATION clause |
SET OWNER TO clause |
SET SERDE clause |
SET TAGS clause |
UNSET TAGS clause |
CLUSTER BY clause |
PREDICTIVE OPTIMIZATION clause}
Parametry
-
Identyfikuje zmienianą tabelę. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji. Jeśli nie można odnaleźć tabeli usługi Azure Databricks, wystąpi błąd TABLE_OR_VIEW_NOT_FOUND .
RENAME TO
to_table_nameZmienia nazwę tabeli w ramach tego samego schematu.
-
Identyfikuje nową nazwę tabeli. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji.
-
-
Dodaje do tabeli co najmniej jedną kolumnę.
-
Zmienia właściwość lub lokalizację kolumny.
-
Upuść jedną lub więcej kolumn lub pól w tabeli Delta Lake.
-
Zmienia nazwę kolumny lub pola w tabeli Delta Lake.
-
Dodaje ograniczenie sprawdzania, informacyjne ograniczenie klucza obcego lub informacyjne ograniczenie klucza podstawowego do tabeli.
Klucze obce i klucze podstawowe są obsługiwane tylko w przypadku tabel w katalogu Unity, a nie w katalogu
hive_metastore
. DEFAULT COLLATION
nazwa_porządkowaniaDotyczy:
Databricks Runtime 16.3 lub nowsze
Zmienia domyślne sortowanie tabeli dla nowych kolumn
STRING
. Ta klauzula nie ma wpływu na istniejące kolumny. Aby zmienić sortowanie istniejącej kolumny, użyjALTER TABLE ... ALTER COLUMN ... COLLATE collation_name
.
-
Usuwa z tabeli ograniczenie klucza podstawowego, klucza obcego lub sprawdzania.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]
Dotyczy:
Databricks SQL
Databricks Runtime 14.1 i nowsze
Usuwa funkcjonalność z tabeli Delta Lake.
Usunięcie funkcji, które mają wpływ zarówno na czytelników, jak i pisarzy, wymaga dwuetapowego procesu:
Pierwsze wywołanie usuwa wszelkie ślady cechy i informuje o częściowym powodzeniu.
Następnie musisz poczekać, aż okres przechowywania minie, a następnie ponownie wykonać polecenie, aby zakończyć usuwanie.
Jeśli za wcześnie zainicjujesz drugie wywołanie, usługa Azure Databricks zgłasza DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD lub DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
Aby uzyskać szczegółowe informacje, zobacz Co to są funkcje tabeli?
feature_name
Nazwa funkcji w postaci
STRING
literału lub identyfikatora, która musi być zrozumiała dla usługi Azure Databricks i obsługiwana w tabeli.Obsługiwane
feature_names
są następujące:- "wektory usuwania" lub
deletionvectors
- „v2Checkpoint” lub
v2checkpoint
- „v2Checkpoint” lub
Jeśli funkcja nie występuje w tabeli, usługa Azure Databricks zgłasza DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.
- "wektory usuwania" lub
Skróć historię
Opcjonalnie umożliwia zainicjowanie drugiej fazy usunięcia funkcji odczytująco-zapisującej po 24 godzinach przez skrócenie historii tabeli do czasu wykonania polecenia.
Skrócenie historii tabeli ogranicza możliwość wykonywania DESCRIBE HISTORY i wykonywania zapytań dotyczących podróży czasowych.
-
Dodaje jedną lub więcej partycji do tabeli.
-
Usuwa jedną lub więcej partycji z tabeli.
-
Ustawia lokalizację partycji.
-
Zastępuje klucze partycji.
-
Nakazuje usłudze Azure Databricks skanowanie lokalizacji tabeli i dodawanie wszelkich plików do tabeli, które zostały dodane bezpośrednio do systemu plików.
-
Dotyczy:
Databricks SQL
Databricks Runtime 12.2 LTS i nowszy
tylko Unity Catalog
Dodaje do tabeli funkcję filtru wierszy. Wszystkie kolejne zapytania do tabeli uzyskują podzbiór wierszy, w których funkcja zwraca wartość logiczną TRUE. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego w celu określenia, czy filtrować niektóre wiersze.
DROP ROW FILTER
Dotyczy:
tylko Unity Catalog
Porzuca filtr wierszy z tabeli, jeśli istnieje. Przyszłe zapytania będą zwracać wszystkie wiersze z tabeli bez automatycznego filtrowania.
-
Ustawia lub resetuje co najmniej jedną właściwości zdefiniowaną przez użytkownika.
-
Usuwa co najmniej jedną właściwości zdefiniowaną przez użytkownika.
SET LOCATION
Przenosi lokalizację tabeli.
SET LOCATION path
LOCATION path
path
musi byćSTRING
literałem. Określa nową lokalizację tabeli.Pliki w oryginalnej lokalizacji nie zostaną przeniesione do nowej lokalizacji.
[ SET ] OWNER TO
głównyPrzenosi własność tabeli na
principal
.Dotyczy:
Databricks SQL
Databricks Runtime 11.3 LTS i nowsze
SET
jest dozwolone jako opcjonalne słowo kluczowe.SET TAGS ( { tag_name = tag_value } [, ...] )
Dotyczy:
Databricks SQL
Databricks Runtime 13.3 LTS i nowsze
Zastosuj tagi do tabeli. Musisz mieć
APPLY TAG
uprawnienia do dodawania tagów do tabeli.tag_name
Literał
STRING
. Elementtag_name
musi być unikatowy w tabeli lub kolumnie.tag_value
Literał
STRING
.
UNSET TAGS ( tag_name [, ...] )
Dotyczy:
Databricks SQL
Databricks Runtime 13.3 LTS i nowsze
Usuń tagi z tabeli. Musisz mieć
APPLY TAG
uprawnienia do usuwania tagów z tabeli.tag_name
Literał
STRING
. Elementtag_name
musi być unikatowy w tabeli lub kolumnie.
-
Dotyczy:
Databricks SQL
Databricks Runtime 13.3 LTS i nowsze
Dodaje, zmienia lub usuwa strategię klastrowania dla tabeli Delta Lake.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
Dotyczy:
Databricks SQL
Databricks Runtime 12.2 LTS i nowszy
tylko Unity Catalog
Zmienia zarządzaną tabelę usługi Delta Lake na żądane ustawienie optymalizacji predykcyjnej.
Domyślnie, gdy tabele są tworzone, zachowanie polega na
INHERIT
z schematu.Gdy optymalizacja predykcyjna jest jawnie włączona lub dziedziczona jako włączona, OPTIMIZE i VACUUM zostaną automatycznie wywołane w tabeli, jeśli zostaną uznane za stosowne przez usługę Azure Databricks. Aby uzyskać więcej informacji, zobacz: Optymalizacja predykcyjna dla tabel zarządzanych przez katalog Unity.
Przykłady
Aby uzyskać informacje na temat dodawania ograniczeń i modyfikowania kolumn w Delta Lake, zobacz
-- RENAME table
> DESCRIBE student;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
> ALTER TABLE Student RENAME TO StudentInfo;
-- After Renaming the table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- RENAME partition
> SHOW PARTITIONS StudentInfo;
partition
---------
age=10
age=11
age=12
> ALTER TABLE default.StudentInfo PARTITION (age='10') RENAME TO PARTITION (age='15');
-- After renaming Partition
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
-- Add new columns to a table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
> ALTER TABLE StudentInfo ADD columns (LastName string, DOB timestamp);
-- After Adding New columns to the table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- Add a new partition to a table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
> ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18);
-- After adding a new partition to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
age=18
-- Drop a partition from the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
age=18
> ALTER TABLE StudentInfo DROP IF EXISTS PARTITION (age=18);
-- After dropping the partition of the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
-- Adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
> ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);
-- After adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
age=18
age=20
-- ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
col_name data_type comment
+-----------------------+---------+-------
name string NULL
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";
--After ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -----------
name string new comment
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- RENAME COLUMN
> ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName;
--After RENAME COLUMN
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -----------
FirstName string new comment
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- Change the file Location
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
-- SET SERDE/ SERDE Properties (DBR only)
> ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe';
> ALTER TABLE dbx.tab1 SET SERDE 'org.apache.hadoop' WITH SERDEPROPERTIES ('k' = 'v', 'kay' = 'vee');
-- SET TABLE PROPERTIES
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
-- DROP TABLE PROPERTIES
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
-- Drop the "deletion vectors" from a Delta table
> ALTER TABLE my_table DROP FEATURE deletionVectors;
-- 24 hours later
> ALTER TABLE my_table DROP FEATURE deletionVectors TRUNCATE HISTORY;
-- Applies three tags to the table named `test`.
> ALTER TABLE test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
-- Removes three tags from the table named `test`.
> ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3');
-- Applies three tags to table `main.schema1.test` column `col1`.
> ALTER TABLE main.schema1.test ALTER COLUMN col1 SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
-- Removes three tags from table `main.schema1.test` column `col1`.
> ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');
-- Enables predictive optimization for my_table
> ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
Powiązane artykuły
- ALTER VIEW
- CLUSTER BY
- COMMENT ON
- CREATE TABLE
- DROP CONSTRAINT
- DROP TABLE
- zarządzaj COLUMN
- zarządzaj PARTITION
- REPAIR TABLE
- PARTITION