إعادة تسمية الأعمدة وإفلاتها باستخدام تعيين عمود Delta Lake

هام

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

يدعم Azure Databricks تعيين الأعمدة لجداول Delta Lake، والتي تمكن تغييرات بيانات التعريف فقط من وضع علامة على الأعمدة على أنها محذوفة أو تمت إعادة تسميتها دون إعادة كتابة ملفات البيانات. كما يسمح للمستخدمين بتسمية أعمدة جدول Delta باستخدام أحرف غير مسموح بها بواسطة Parquet، مثل المسافات، بحيث يمكن للمستخدمين استيعاب بيانات CSV أو JSON مباشرة في Delta دون الحاجة إلى إعادة تسمية الأعمدة بسبب قيود الأحرف السابقة.

هام

يؤدي تمكين تعيين العمود أيضا إلى تمكين بادئات الملفات العشوائية، ما يزيل القدرة على استكشاف البيانات باستخدام تقسيم نمط Hive. راجع هل تقوم Delta Lake وParquet بمشاركة استراتيجيات التقسيم؟.

قد يؤدي تمكين تعيين العمود على الجداول إلى تقسيم عمليات انتقال البيانات من الخادم التي تعتمد على موجز بيانات تغيير دلتا. راجع تغيير قيود موجز البيانات للجداول مع تمكين تعيين العمود.

قد يؤدي تمكين تعيين العمود على الجداول إلى فصل القراءة المتدفقة من جدول Delta كمصدر، بما في ذلك في Delta Live Tables. راجع البث مع تعيين العمود وتغييرات المخطط.

كيفية تمكين تعيين عمود Delta Lake

هام

يؤدي تمكين تعيين العمود لجدول إلى ترقية إصدار جدول Delta. ترقية البروتوكول هذه لا رجعة فيها. يمكن قراءة الجداول التي تم تمكين تعيين الأعمدة فيها فقط في Databricks Runtime 10.4 LTS وما فوق.

يتطلب تعيين العمود بروتوكولات دلتا التالية:

  • إصدار القارئ 2 أو أعلى.
  • إصدار الكاتب 5 أو أعلى.

بالنسبة لجدول Delta مع إصدارات البروتوكول المطلوبة، يمكنك تمكين تعيين العمود عن طريق تعيين delta.columnMapping.mode إلى name.

يمكنك استخدام الأمر التالي لترقية إصدار الجدول وتمكين تعيين العمود:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.minReaderVersion' = '2',
    'delta.minWriterVersion' = '5',
    'delta.columnMapping.mode' = 'name'
  )

إشعار

لا يمكنك إيقاف تشغيل تعيين العمود بعد تمكينه. إذا حاولت تعيين 'delta.columnMapping.mode' = 'none'، فستحصل على خطأ.

إعادة تسمية عمود

إشعار

متوفر في Databricks Runtime 10.4 LTS وما فوق.

عند تمكين تعيين العمود لجدول Delta، يمكنك إعادة تسمية عمود:

ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

لمزيد من الأمثلة، راجع تحديث مخطط جدول Delta Lake.

إسقاط الأعمدة

إشعار

متوفر في Databricks Runtime 11.3 LTS وما فوق.

عند تمكين تعيين العمود لجدول Delta، يمكنك إسقاط عمود واحد أو أكثر:

ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

لمزيد من التفاصيل، راجع تحديث مخطط جدول Delta Lake.

الأحرف المعتمدة في أسماء الأعمدة

عند تمكين تعيين العمود لجدول Delta، يمكنك تضمين مسافات وأي من هذه الأحرف في أسماء أعمدة الجدول: ,;{}()\n\t=.

الدفق مع تعيين الأعمدة وتغييرات المخطط

هام

هذه الميزة موجودة في المعاينة العامة في Databricks Runtime 13.3 LTS وما فوق.

يمكنك توفير موقع تعقب مخطط لتمكين الدفق من جداول Delta مع تمكين تعيين العمود. يؤدي هذا إلى التغلب على مشكلة قد تؤدي فيها تغييرات المخطط غير المضافة إلى تدفقات مقطوعة.

يجب أن يكون لكل قراءة دفق مقابل مصدر بيانات خاص بها schemaTrackingLocation . يجب أن يكون المحدد schemaTrackingLocation مضمنا في الدليل المحدد للجدول checkpointLocation الهدف للكتابة المتدفقة.

إشعار

بالنسبة لأحمال العمل المتدفقة التي تجمع البيانات من جداول دلتا متعددة المصدر، تحتاج إلى تحديد دلائل فريدة داخل checkpointLocation لكل جدول مصدر.

يتم استخدام الخيار schemaTrackingLocation لتحديد مسار تتبع المخطط، كما هو موضح في مثال التعليمات البرمجية التالي:

checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
  .option("schemaTrackingLocation", checkpoint_path)
  .table("delta_source_table")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .toTable("output_table")
)