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}

المعلمات

  • table_name

    يحدد الجدول الذي يتم تغييره. يجب ألا يتضمن الاسم مواصفات زمنية. إذا تعذر العثور على الجدول، فإن Azure Databricks يثير خطأ TABLE_OR_VIEW_NOT_FOUND .

  • RENAME TOto_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

      إذا لم تكن الميزة موجودة في الجدول فإن Azure Databricks يرفع DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • اقتطاع المحفوظات

      يسمح لك اختياريا ببدء المرحلة الثانية من إسقاط ميزة القارئ بالإضافة إلى الكاتب بعد 24 ساعة عن طريق اقتطاع محفوظات الجدول إلى وقت تنفيذ أمر استدعاء.

      يؤدي اقتطاع محفوظات الجدول إلى الحد من قدرتك على تنفيذ وصف المحفوظات وتنفيذ استعلامات السفر عبر الوقت.

  • إضافة قسم

    إضافة قسم واحد أو أكثر إلى الجدول.

  • إسقاط القسم

    إسقاط قسم واحد أو أكثر من الجدول.

  • قسم... تعيين الموقع

    تعيين موقع القسم.

  • إعادة تسمية القسم

    استبدال مفاتيح القسم.

  • استرداد الأقسام

    يرشد Azure Databricks إلى مسح موقع الجدول ضوئيا وإضافة أي ملفات إلى الجدول التي تمت إضافتها مباشرة إلى نظام الملفات.

  • SETعبارة ROW FILTER

    ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime 12.2 LTS وما فوق وضع علامة كتالوج Unity فقط

    هام

    هذه الميزة في المعاينة العامة.

    إضافة دالة عامل تصفية صف إلى الجدول. ستتلقى جميع الاستعلامات المستقبلية من هذا الجدول مجموعة فرعية من صفوفها التي تقيم الدالة من أجلها القيمة المنطقية TRUE. يمكن أن يكون هذا مفيدا لأغراض التحكم في الوصول الدقيقة حيث يمكن للدالة فحص الهوية و/أو عضويات المجموعة للمستخدم الذي يستدعي من أجل تحديد ما إذا كان سيتم تصفية صفوف معينة أم لا.

  • DROP ROW FILTER

    ينطبق على:وضع علامة كتالوج Unity فقط

    هام

    هذه الميزة في المعاينة العامة.

    إسقاط عامل تصفية الصف من الجدول، إن وجد. سترجع الاستعلامات المستقبلية جميع الصفوف من الجدول دون أي تصفية تلقائية.

  • تعيين ТБ LPROPERTIES

    تعيين أو إعادة تعيين خاصية واحدة أو أكثر معرفة من قبل المستخدم.

  • إلغاء تعيين ТБ LPROPERTIES

    إزالة خاصية واحدة أو أكثر من الخصائص المعرفة من قبل المستخدم.

  • 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 يجب أن يكون فريدا داخل الجدول أو العمود.

  • عبارة CLUSTER BY

    ينطبق على:وضع علامة 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;