ALTER TABLE
ينطبق على: Databricks SQL Databricks Runtime
تغيير مخطط الجدول أو خصائصه.
لتغييرات النوع أو إعادة تسمية الأعمدة في Delta Lake، راجع إعادة كتابة البيانات.
لتغيير التعليق على جدول، يمكنك أيضا استخدام تعليق على.
لتغيير STREAMING TABLE
، استخدم ALTER STREAMING TABLE.
إذا تم تخزين الجدول مؤقتا، يقوم الأمر بمسح البيانات المخزنة مؤقتا للجدول وكافة التوابع الخاصة به التي تشير إليه. سيتم تعبئة ذاكرة التخزين المؤقت ببطء عند الوصول إلى الجدول أو التوابع في المرة التالية.
إشعار
عند إضافة عمود إلى جدول Delta موجود، لا يمكنك تعريف DEFAULT
قيمة. يتم التعامل مع جميع الأعمدة المضافة إلى جداول Delta على أنها NULL
للصفوف الموجودة. بعد إضافة عمود، يمكنك تحديد قيمة افتراضية للعمود بشكل اختياري، ولكن يتم تطبيق ذلك فقط على الصفوف الجديدة المدرجة في الجدول. استخدم بناء الجملة التالي:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
في الجداول الخارجية، يمكنك تنفيذ و فقطALTER TABLE SET OWNER
.ALTER TABLE RENAME TO
الأذونات المطلوبة
إذا كنت تستخدم كتالوج Unity، يجب أن يكون لديك MODIFY
إذن ل:
- تغيير العمود
- إضافة عمود
- إسقاط عمود
- تعيين ТБ LPROPERTIES
- إلغاء تعيين ТБ LPROPERTIES
- تعديل التحسين التنبؤي
تتطلب جميع العمليات الأخرى ملكية الجدول.
بناء الجملة
ALTER TABLE table_name
{ RENAME TO clause |
ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN 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}
المعلمات
-
يحدد الجدول الذي يتم تغييره. يجب ألا يتضمن الاسم مواصفات زمنية. إذا تعذر العثور على الجدول، فإن Azure Databricks يثير خطأ TABLE_OR_VIEW_NOT_FOUND .
RENAME TO
to_table_nameإعادة تسمية الجدول داخل نفس المخطط.
-
تعريف اسم الجدول الجديد. يجب ألا يتضمن الاسم مواصفات زمنية.
-
-
إضافة عمود واحد أو أكثر إلى الجدول.
-
تغيير خاصية أو موقع عمود.
-
إسقاط عمود أو حقل واحد أو أكثر في جدول Delta Lake.
-
إعادة تسمية عمود أو حقل في جدول Delta Lake.
-
إضافة قيد فحص أو قيد مفتاح خارجي إعلامي أو قيد مفتاح أساسي إعلامي إلى الجدول.
يتم دعم المفاتيح الخارجية والمفاتيح الأساسية فقط للجداول في كتالوج Unity، وليس الكتالوج
hive_metastore
. -
إسقاط مفتاح أساسي أو مفتاح خارجي أو قيد التحقق من الجدول.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]
ينطبق على: Databricks SQL Databricks Runtime 14.1 وما فوق
إزالة ميزة من جدول Delta Lake.
تتطلب إزالة الميزات التي تؤثر على كل من القراء والكتاب عملية مرحلتين:
يمسح استدعاء الأول أي آثار للميزة ويعلمك بنجاح جزئي.
ثم تحتاج إلى الانتظار حتى تنتهي فترة الاستبقاء وإعادة تنفيذ العبارة لإكمال الإزالة.
إذا بدأت استدعاء الثاني مبكرا جدا، فإن Azure Databricks يثير DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD أو DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
راجع ما هي ميزات الجدول؟ للحصول على التفاصيل.
feature_name
اسم ميزة في شكل
STRING
حرفي أو معرف، يجب أن يفهمه Azure Databricks وأن يكون مدعوما على الجدول.المدعومة
feature_names
هي:- "deleteionVectors" أو
deletionvectors
- 'v2Checkpoint' أو
v2checkpoint
- 'v2Checkpoint' أو
إذا لم تكن الميزة موجودة في الجدول فإن Azure Databricks يرفع DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.
- "deleteionVectors" أو
اقتطاع المحفوظات
يسمح لك اختياريا ببدء المرحلة الثانية من إسقاط ميزة القارئ بالإضافة إلى الكاتب بعد 24 ساعة عن طريق اقتطاع محفوظات الجدول إلى وقت تنفيذ أمر استدعاء.
يؤدي اقتطاع محفوظات الجدول إلى الحد من قدرتك على تنفيذ وصف المحفوظات وتنفيذ استعلامات السفر عبر الوقت.
-
إضافة قسم واحد أو أكثر إلى الجدول.
-
إسقاط قسم واحد أو أكثر من الجدول.
-
تعيين موقع القسم.
-
استبدال مفاتيح القسم.
-
يرشد Azure Databricks إلى مسح موقع الجدول ضوئيا وإضافة أي ملفات إلى الجدول التي تمت إضافتها مباشرة إلى نظام الملفات.
-
ينطبق على: Databricks SQL Databricks Runtime 12.2 LTS وما فوق كتالوج Unity فقط
إضافة دالة عامل تصفية صف إلى الجدول. ستتلقى جميع الاستعلامات المستقبلية من هذا الجدول مجموعة فرعية من صفوفها التي تقيم الدالة من أجلها القيمة المنطقية TRUE. يمكن أن يكون هذا مفيدا لأغراض التحكم في الوصول الدقيقة حيث يمكن للدالة فحص الهوية و/أو عضويات المجموعة للمستخدم الذي يستدعي من أجل تحديد ما إذا كان سيتم تصفية صفوف معينة أم لا.
DROP ROW FILTER
ينطبق على: كتالوج Unity فقط
إسقاط عامل تصفية الصف من الجدول، إن وجد. سترجع الاستعلامات المستقبلية جميع الصفوف من الجدول دون أي تصفية تلقائية.
-
تعيين أو إعادة تعيين خاصية واحدة أو أكثر معرفة من قبل المستخدم.
-
إزالة خاصية واحدة أو أكثر من الخصائص المعرفة من قبل المستخدم.
SET LOCATION
نقل موقع جدول.
SET LOCATION path
LOCATION path
path
يجب أن تكون قيمة حرفيةSTRING
. تحديد الموقع الجديد للجدول.لن يتم نقل الملفات الموجودة في الموقع الأصلي إلى الموقع الجديد.
[ SET ] OWNER TO
الرئيسيهنقل ملكية الجدول إلى
principal
.ينطبق على: Databricks SQL Databricks Runtime 11.3 LTS وما فوق
SET
مسموح به ككلمة أساسية اختيارية.SET TAGS ( { tag_name = tag_value } [, ...] )
ينطبق على: Databricks SQL Databricks Runtime 13.3 LTS وما فوق
تطبيق العلامات على الجدول. يجب أن يكون لديك
apply_tag
إذن لإضافة علامات إلى الجدول.tag_name
قيمة حرفية
STRING
.tag_name
يجب أن يكون فريدا داخل الجدول أو العمود.tag_value
قيمة حرفية
STRING
.
UNSET TAGS ( tag_name [, ...] )
ينطبق على: Databricks SQL Databricks Runtime 13.3 LTS وما فوق
إزالة العلامات من الجدول. يجب أن يكون لديك
apply_tag
إذن لإزالة العلامات من الجدول.tag_name
قيمة حرفية
STRING
.tag_name
يجب أن يكون فريدا داخل الجدول أو العمود.
-
ينطبق على: Databricks SQL Databricks Runtime 13.3 LTS وما فوق
إضافة استراتيجية التجميع لجدول Delta Lake أو تغييرها أو إسقاطها.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
ينطبق على: Databricks SQL Databricks Runtime 12.2 LTS وما فوق كتالوج Unity فقط
تغيير جدول Delta Lake المدار إلى إعداد التحسين التنبؤي المطلوب.
بشكل افتراضي، عند إنشاء الجداول، يكون
INHERIT
السلوك من المخطط.عند تمكين التحسين التنبؤي بشكل صريح أو توريثه كما تم تمكين OPTIMIZE وسيتم استدعاء فراغ تلقائيا على الجدول كما يراه مناسبا من قبل Azure Databricks. لمزيد من التفاصيل، راجع: التحسين التنبؤي ل Delta Lake.
امثله
بالنسبة إلى Delta Lake، أضف القيود وأمثلة على الأعمدة البديلة، راجع
-- 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;