ينطبق على:
Databricks SQL
Databricks Runtime
يتكون القسم من مجموعة فرعية من الصفوف في جدول تشترك في نفس القيمة لمجموعة فرعية معرفة مسبقا من الأعمدة تسمى أعمدة التقسيم.
يمكن أن يؤدي استخدام الأقسام إلى تسريع الاستعلامات مقابل الجدول بالإضافة إلى معالجة البيانات.
لاستخدام الأقسام، يمكنك تعريف مجموعة عمود التقسيم عند إنشاء جدول عن طريق تضمين عبارة PARTITIONED BY .
عند إدراج صفوف أو معالجتها في جدول يقوم Azure Databricks تلقائيا بإرسال الصفوف إلى الأقسام المناسبة.
يمكنك أيضا تحديد القسم مباشرة باستخدام عبارة PARTITION .
يتوفر بناء الجملة هذا أيضا للجداول التي لا تستخدم تنسيق Delta Lake أو إلى DROP
أو ADD
RENAME
الأقسام بسرعة باستخدام عبارة ALTER TABLE .
PARTITIONED BY
حددت العبارة قائمة من الأعمدة التي يتم تقسيم الجدول الجديد على طولها.
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
partition_column
قد يشير المعرف إلى column_identifier
في الجدول. إذا قمت بتحديد أكثر من عمود واحد، يجب ألا تكون هناك تكرارات.
إذا قمت بالإشارة إلى كافة الأعمدة في الجدول column_specification
، يتم رفع الخطأ.
column_type
ما لم partition_column
يشير إلى column_identifier
في الجدول column_specification
، column_type
يحدد نوع partition_column
بيانات .
لا تدعم جميع مصادر البيانات جميع أنواع البيانات التي يدعمها Databricks SQL.
ما لم تقم بتعريف أعمدة تقسيم جدول Delta Lake التي تشير إلى الأعمدة في مواصفات العمود، يتم دائما نقلها إلى نهاية الجدول.
يمكنك استخدام PARTITION
عبارة لتحديد قسم للاستعلامات أو معالجته.
يتم تعريف القسم عن طريق تسمية جميع أعمدةه وربط كل منها بقيمة.
لا تحتاج إلى تحديدها بترتيب معين.
ما لم تقم بإضافة قسم جديد إلى جدول موجود، يمكنك حذف الأعمدة أو القيم للإشارة إلى أن العملية تنطبق على جميع الأقسام المتطابقة التي تطابق المجموعة الفرعية للأعمدة.
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
partition_column
عمود يسمى عمود قسم للجدول.
لا يجوز لك تحديد العمود نفسه مرتين.
= partition_value
قيمة حرفية لنوع بيانات يطابق نوع عمود القسم.
إذا حذفت قيمة قسم، فستتطابق المواصفات مع جميع القيم لعمود القسم هذا.
LIKE pattern
يسمح بهذا النموذج فقط في ALTER SHARE ADD TABLE.
يطابق تمثيل partition_column
سلسلة إلى pattern
.
pattern
يجب أن تكون سلسلة حرفية كما هو مستخدم في LIKE.
-- Use the PARTTIONED BY clause in a table definition
> CREATE TABLE student(university STRING,
major STRING,
name STRING)
PARTITIONED BY(university, major)
> CREATE TABLE professor(name STRING)
PARTITIONED BY(university STRING,
department STRING);
-- Use the PARTITION specification to INSERT into a table
> INSERT INTO student
PARTITION(university= 'TU Kaiserslautern') (major, name)
SELECT major, name FROM freshmen;
-- Use the partition specification to add and drop a partition
> CREATE TABLE log(date DATE, id INT, event STRING)
USING CSV
PARTITIONED BY (date);
> ALTER TABLE log ADD PARTITION(date = DATE'2021-09-10');
> ALTER TABLE log DROP PARTITION(date = DATE'2021-09-10');
-- Drop all partitions from the named university, independent of the major.
> ALTER TABLE student DROP PARTITION(university = 'TU Kaiserslautern');