إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime
تعريف جدول مدار أو خارجي، بشكل اختياري باستخدام مصدر بيانات.
بناء الجملة
{ { [CREATE OR] REPLACE TABLE | CREATE [EXTERNAL] TABLE [ IF NOT EXISTS ] }
table_name
[ table_specification ]
[ USING data_source ]
[ table_clauses ]
[ AS query ] }
table_specification
( { column_identifier column_type [ column_properties ] } [, ...]
[ , table_constraint ] [...] )
column_properties
{ NOT NULL |
GENERATED ALWAYS AS ( expr ) |
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( [ START WITH start ] [ INCREMENT BY step ] ) ] |
DEFAULT default_expression |
COMMENT column_comment |
column_constraint |
MASK clause } [ ... ]
table_clauses
{ OPTIONS clause |
PARTITIONED BY clause |
CLUSTER BY clause |
clustered_by_clause |
LOCATION path [ WITH ( CREDENTIAL credential_name ) ] |
COMMENT table_comment |
TBLPROPERTIES clause |
WITH { ROW FILTER clause } } [...]
clustered_by_clause
{ CLUSTERED BY ( cluster_column [, ...] )
[ SORTED BY ( { sort_column [ ASC | DESC ] } [, ...] ) ]
INTO num_buckets BUCKETS }
المعلمات
REPLACE
إذا تم تحديده، يستبدل الجدول ومحتواه إذا كان موجودا بالفعل. هذه العبارة معتمدة فقط لجداول Delta Lake.
REPLACEيحافظ على محفوظات الجدول.إشعار
توصي Azure Databricks بشدة باستخدام
REPLACEبدلا من إسقاط جداول Delta Lake وإعادة إنشائها.خارجي
إذا تم تحديده، ينشئ جدولا خارجيا. عند إنشاء جدول خارجي، يجب عليك أيضا توفير عبارة
LOCATION. عند إسقاط جدول خارجي، لن يتم إسقاط الملفات فيLOCATION.إذا لم يكن موجودا
إذا تم تحديده وجدول بنفس الاسم موجود بالفعل، يتم تجاهل العبارة .
IF NOT EXISTSلا يمكن أن يتعايش معREPLACE، مما يعنيCREATE OR REPLACE TABLE IF NOT EXISTSأنه غير مسموح به.-
اسم الجدول الذي سيتم إنشاؤه. يجب ألا يتضمن الاسم مواصفات زمنية أو مواصفات خيارات. إذا لم يكن الاسم مؤهلا، يتم إنشاء الجدول في المخطط الحالي.
يمكن أن تحتوي الجداول التي تم إنشاؤها في
hive_metastoreعلى أحرف ASCII أبجدية رقمية فقط وتسطير أسفل السطر (INVALID_SCHEMA_OR_RELATION_NAME). table_specification
تحدد هذه العبارة الاختيارية قائمة الأعمدة وأنواعها وخصائصها ووصفها وقيود الأعمدة.
إذا لم تقم بتعريف الأعمدة، يجب تحديد مخطط الجدول إما
AS queryأوLOCATION.-
اسم فريد للعمود.
يجب ألا تحتوي معرفات الأعمدة لجداول Delta Lake بدون خاصية تعيين العمود (
'delta.columnMapping.mode' = 'name') على مسافات أو الأحرف التالية:, ; { } ( ) \n \t =.يجب أن تبدأ معرفات الأعمدة للجدول
AVROبتسطير سفلي (_) أو حرف Unicode (بما في ذلك أحرف غير ASCII) وأن يتبعها مزيج من أحرف Unicode والأرقام والتسطير السفلي. -
تحديد نوع بيانات العمود. لا تدعم جميع مصادر البيانات جميع أنواع البيانات التي يدعمها Azure Databricks.
ليس فارغا
إذا تم تحديد العمود، فلن يقبل
NULLالقيم. هذه العبارة معتمدة فقط لجداول Delta Lake.تم إنشاؤه دائما ك ( expr )
عند تحديد هذه العبارة، يتم تحديد قيمة هذا العمود بواسطة المحدد
expr.exprقد تتكون من القيم الحرفية ومعرفات الأعمدة داخل الجدول ودالات SQL أو عوامل التشغيل الحتمية والمضمنة باستثناء:- دالات التجميع
- دوال النافذة التحليلية
- دالات نافذة تحديد المرتبة
- دالات مولد قيم الجدول
كما
exprيجب ألا يحتوي على أي استعلام فرعي.تم الإنشاء { دائما | افتراضيا } AS IDENTITY [ ( [ START WITH start ] [ INCREMENT BY step ] ] ]
ينطبق على:
Databricks SQL
Databricks Runtime 10.4 LTS وما فوقتعريف عمود هوية. عند الكتابة إلى الجدول، وعدم توفير قيم لعمود الهوية، سيتم تعيين قيمة فريدة ومتزايدة إحصائيا (أو تتناقص إذا كانت
stepسالبة). هذه العبارة معتمدة فقط لجداول Delta Lake. يمكن استخدام هذه العبارة فقط للأعمدة ذات نوع بيانات BIGINT.تبدأ القيم المعينة تلقائيا بزيادة
startبمقدارstep. القيم المعينة فريدة ولكنها غير مضمونة لتكون متقاربة. كلتا المعلمتين اختياريتين، والقيمة الافتراضية هي 1.stepلا يمكن أن يكون0.إذا كانت القيم المعينة تلقائيا خارج نطاق نوع عمود الهوية، فسيفشل الاستعلام.
عند
ALWAYSالاستخدام، لا يمكنك توفير القيم الخاصة بك لعمود الهوية.العمليات التالية غير مدعومة:
PARTITIONED BYعمود هويةUPDATEعمود هوية
إشعار
يؤدي الإعلان عن عمود هوية في جدول Delta إلى تعطيل المعاملات المتزامنة. استخدم أعمدة الهوية فقط في حالات الاستخدام حيث لا تكون عمليات الكتابة المتزامنة إلى الجدول الهدف مطلوبة.
default_expression الافتراضي
ينطبق على:
Databricks SQL
Databricks Runtime 11.3 LTS وما فوقDEFAULTتعريف قيمة للعمود الذي يتم استخدامه فيINSERT،UPDATEو، وعندماMERGE ... INSERTلا يتم تحديد العمود.إذا لم يتم
DEFAULT NULLتحديد أي افتراضي، يتم تطبيق للأعمدة التي تقبل القيم الخالية.default_expressionقد تتكون من القيم الحرفية، ووظائف SQL المضمنة أو عوامل التشغيل باستثناء:- دالات التجميع
- دوال النافذة التحليلية
- دالات نافذة تحديد المرتبة
- دالات مولد قيم الجدول
كما
default_expressionيجب ألا يحتوي على أي استعلام فرعي.DEFAULTمعتمد للمصادرCSVJSONPARQUETو و.ORCcolumn_comment التعليق
سلسلة حرفية لوصف العمود.
-
إضافة مفتاح أساسي أو قيد مفتاح خارجي إلى العمود في جدول Delta Lake.
القيود غير معتمدة للجداول في الكتالوج
hive_metastore.لإضافة قيد فحص إلى جدول Delta Lake، استخدم ALTER TABLE.
-
ينطبق على:
Databricks SQL
Databricks Runtime 12.2 LTS وما فوق
كتالوج Unity فقطإضافة دالة قناع عمود إلى إخفاء البيانات الحساسة. تتلقى جميع الاستعلامات اللاحقة من هذا العمود نتيجة تقييم تلك الدالة فوق العمود بدلا من القيمة الأصلية للعمود. يمكن أن يكون هذا مفيدا لأغراض التحكم في الوصول الدقيقة حيث يمكن للدالة فحص الهوية أو عضويات المجموعة للمستخدم الذي يستدعي لتحديد ما إذا كان سيتم تنقيح القيمة.
-
إضافة مفتاح أساسي إعلامي أو قيود مفتاح خارجي إعلامية إلى جدول Delta Lake.
القيود الرئيسية غير معتمدة للجداول في الكتالوج
hive_metastore.لإضافة قيد فحص إلى جدول Delta Lake، استخدم ALTER TABLE.
-
استخدام data_source
data_sourceيمكن أن يكون إما تنسيق ملف أو مصدر بيانات JDBC متحد.يجب أن يكون تنسيق الملف واحدا مما يلي:
AVROBINARYFILECSVDELTAJSONORCPARQUETTEXT
بالنسبة لأي تنسيق ملف آخر غير
DELTAذلك، يجب عليك أيضا تحديدLOCATIONما لم يكن كتالوج الجدول هوhive_metastore.يتم دعم مصادر JDBC الموحدة التالية:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
عند تحديد مصدر JDBC متحد، يجب عليك أيضا تحديد العبارة
OPTIONSبمعلومات الاتصال الضرورية. راجع قواعد بيانات الاستعلام باستخدام JDBC لمزيد من المعلومات حول الاستعلام عن مصادر البيانات الموحدة.يتم دعم تنسيقات الملفات الإضافية التالية لاستخدامها للجدول في Databricks Runtime:
JDBCLIBSVM- اسم فئة مؤهل بالكامل لتنفيذ مخصص ل
org.apache.spark.sql.sources.DataSourceRegister.
إذا
USINGتم حذفه، يكون الافتراضي هوDELTA.ينطبق ما يلي على: Databricks Runtime
HIVEمعتمد لإنشاء جدول Hive SerDe في Databricks Runtime. يمكنك تحديد الخاص ب Hivefile_formatواستخدامrow_formatOPTIONSعبارة ، وهو مخطط سلسلة غير حساس لحالة الأحرف. وهيoption_keys:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
table_clauses
تحديد الموقع والتقسيم وتكوين المجموعات والخيارات والتعليقات والخصائص المعرفة من قبل المستخدم للجدول الجديد اختياريا. يمكن تحديد كل عبارة فرعية مرة واحدة فقط.
-
عبارة اختيارية لتقسيم الجدول حسب مجموعة فرعية من الأعمدة.
إشعار
إذا لم تقم بتعريف جدول Delta، يتم وضع أعمدة التقسيم في نهاية الجدول، حتى إذا تم تعريفها مسبقا في مواصفات العمود. ضع في اعتبارك استخدام
CLUSTER BYبدلا منPARTITIONED BYلجداول Delta. -
ينطبق على:
Databricks SQL
Databricks Runtime 13.3 والإحدثعبارة اختيارية لمجموعة جدول Delta بواسطة مجموعة فرعية من الأعمدة. لمجموعة الجداول الأخرى، استخدم
clustered_by_clause.لا يمكن دمج تكوين أنظمة المجموعات السائلة في Delta Lake مع
PARTITIONED BY. clustered_by_clause
قم بشكل اختياري بتجميع الجدول أو كل قسم في عدد ثابت من مستودعات التجزئة باستخدام مجموعة فرعية من الأعمدة.
التجميع غير معتمد لجداول Delta Lake.
متفاوت المسافات حسب
تحديد مجموعة الأعمدة التي يتم من خلالها تجميع كل قسم، أو الجدول إذا لم يتم تحديد تقسيم.
-
معرف يشير إلى
column_identifierفي الجدول. إذا قمت بتحديد أكثر من عمود واحد، يجب ألا تكون هناك تكرارات. نظرا لأن التجميع يعمل على مستوى القسم، يجب عدم تسمية عمود القسم أيضا ك عمود نظام مجموعة.
-
تم الفرز حسب
يحافظ اختياريا على ترتيب فرز للصفوف في مستودع.
sort_column
عمود لفرز المستودع حسبه. يجب ألا يكون العمود عمود قسم. يجب أن تكون أعمدة الفرز فريدة.
ASC أو DESC
يحدد اختياريا ما إذا كان
sort_columnيتم فرزه بترتيب تصاعدي (ASC) أو تنازلي (DESC). القيم الافتراضية هيASC.
إلى مستودعات num_buckets
قيمة INTEGER الحرفية التي تحدد عدد المستودعات التي يتم فيها تقسيم كل قسم (أو الجدول إذا لم يتم تحديد تقسيم).
مسار الموقع [ مع ( بيانات الاعتماد credential_name ) ]
مسار اختياري إلى الدليل حيث يتم تخزين بيانات الجدول، والذي يمكن أن يكون مسارا على التخزين الموزع.
pathيجب أن تكون قيمة STRING حرفية. إذا لم تحدد أي موقع، اعتبارmanaged tableالجدول وAzure Databricks موقع جدول افتراضي.يؤدي تحديد موقع إلى جعل الجدول جدولا خارجيا.
بالنسبة للجداول غير الموجودة في الكتالوج
hive_metastore، يجب حماية الجدولpathبموقع خارجي ما لم يتم تحديد بيانات اعتماد تخزين صالحة.لا يمكنك إنشاء جداول خارجية في مواقع تتداخل مع موقع الجداول المدارة.
بالنسبة لجدول Delta Lake، يتم توريث تكوين الجدول من
LOCATIONإذا كانت البيانات موجودة. لذلك، إذا تم تحديد أيTBLPROPERTIESمن عباراتtable_specificationأو أوPARTITIONED BYلجداول Delta Lake، فيجب أن تتطابق تماما مع بيانات موقع Delta Lake.-
تعيين خيار جدول معرف من قبل مستخدم واحد أو أكثر أو إعادة تعيينه.
table_comment التعليق
سلسلة حرفية لوصف الجدول.
-
تعيين خاصية واحدة أو أكثر من الخصائص المعرفة من قبل المستخدم اختياريا.
عبارة WITH ROW FILTER
ينطبق على:
Databricks SQL
Databricks Runtime 12.2 LTS وما فوق
كتالوج Unity فقطإضافة دالة عامل تصفية صف إلى الجدول. ستتلقى جميع الاستعلامات اللاحقة من هذا الجدول مجموعة فرعية من الصفوف حيث يتم تقييم الدالة إلى TRUE منطقي. يمكن أن يكون هذا مفيدا لأغراض التحكم في الوصول الدقيقة حيث يمكن للدالة فحص الهوية أو عضويات المجموعة للمستخدم الذي يستدعي لتحديد ما إذا كان سيتم تصفية صفوف معينة.
-
-
تملأ هذه العبارة الاختيارية الجدول باستخدام البيانات من
query. عند تحديدqueryيجب عدم تحديدtable_specificationأيضا . مخطط الجدول مشتق من الاستعلام.لاحظ أن Azure Databricks يحل محل مصدر البيانات الأساسي ببيانات استعلام الإدخال، للتأكد من إنشاء الجدول يحتوي على نفس البيانات تماما مثل استعلام الإدخال.
امثله
-- Creates a Delta table
> CREATE TABLE student (id INT, name STRING, age INT);
-- Use data from another table
> CREATE TABLE student_copy AS SELECT * FROM student;
-- Creates a CSV table from an external directory
> CREATE TABLE student USING CSV LOCATION '/path/to/csv_files';
-- Specify table comment and properties
> CREATE TABLE student (id INT, name STRING, age INT)
COMMENT 'this is a comment'
TBLPROPERTIES ('foo'='bar');
-- Specify table comment and properties with different clauses order
> CREATE TABLE student (id INT, name STRING, age INT)
TBLPROPERTIES ('foo'='bar')
COMMENT 'this is a comment';
-- Create partitioned table
> CREATE TABLE student (id INT, name STRING, age INT)
PARTITIONED BY (age);
-- Create a table with a generated column
> CREATE TABLE rectangles(a INT, b INT,
area INT GENERATED ALWAYS AS (a * b));
-- Create an external table connected to Oracle
> CREATE TABLE IF NOT EXISTS ora_tab
USING ORACLE
OPTIONS (
url '<jdbc-url>',
dbtable '<table-name>',
user '<username>',
password '<password>'
);
> SELECT * FROM ora_tab;