إنشاء جدول [باستخدام]

ينطبق على: وضع علامة 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 أنه غير مسموح به.

  • table_name

    اسم الجدول الذي سيتم إنشاؤه. يجب ألا يتضمن الاسم مواصفات زمنية أو مواصفات خيارات. إذا لم يكن الاسم مؤهلا، يتم إنشاء الجدول في المخطط الحالي.

    يمكن أن تحتوي الجداول التي تم إنشاؤها في hive_metastore على أحرف ASCII أبجدية رقمية فقط وتسطير أسفل السطر (INVALID_SCHEMA_OR_RELATION_NAME).

  • table_specification

    تحدد هذه العبارة الاختيارية قائمة الأعمدة وأنواعها وخصائصها ووصفها وقيود الأعمدة.

    إذا لم تقم بتعريف الأعمدة، يجب تحديد مخطط الجدول إما AS query أو LOCATION.

    • column_identifier

      اسم فريد للعمود.

      يجب ألا تحتوي معرفات الأعمدة لجداول Delta Lake بدون خاصية تعيين العمود ('delta.columnMapping.mode' = 'name') على مسافات أو الأحرف التالية: , ; { } ( ) \n \t = .

      يجب أن تبدأ معرفات الأعمدة للجدول AVRO بتسطير سفلي (_) أو حرف Unicode (بما في ذلك أحرف غير ASCII) وأن يتبعها مزيج من أحرف Unicode والأرقام والتسطير السفلي.

    • column_type

      تحديد نوع بيانات العمود. لا تدعم جميع مصادر البيانات جميع أنواع البيانات التي يدعمها 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و و.ORC

    • column_comment التعليق

      سلسلة حرفية لوصف العمود.

    • column_constraint

      إضافة مفتاح أساسي أو قيد مفتاح خارجي إلى العمود في جدول Delta Lake.

      القيود غير معتمدة للجداول في الكتالوج hive_metastore .

      لإضافة قيد فحص إلى جدول Delta Lake، استخدم ALTER TABLE.

    • عبارة MASK

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

      هام

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

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

    • table_constraint

      إضافة مفتاح أساسي إعلامي أو قيود مفتاح خارجي إعلامية إلى جدول Delta Lake.

      القيود الرئيسية غير معتمدة للجداول في الكتالوج hive_metastore .

      لإضافة قيد فحص إلى جدول Delta Lake، استخدم ALTER TABLE.

  • استخدام data_source

    data_source يمكن أن يكون إما تنسيق ملف أو مصدر بيانات JDBC متحد.

    يجب أن يكون تنسيق الملف واحدا مما يلي:

    • AVRO
    • BINARYFILE
    • CSV
    • DELTA
    • JSON
    • ORC
    • PARQUET
    • TEXT

    بالنسبة لأي تنسيق ملف آخر غير DELTA ذلك، يجب عليك أيضا تحديد LOCATION ما لم يكن كتالوج الجدول هو hive_metastore.

    يتم دعم مصادر JDBC الموحدة التالية:

    • POSTGRESQL
    • SQLSERVER
    • MYSQL
    • BIGQUERY
    • NETSUITE
    • ORACLE
    • REDSHIFT
    • SNOWFLAKE
    • SQLDW
    • SYNAPSE
    • SALESFORCE
    • SALESFORCE_DATA_CLOUD
    • TERADATA
    • WORKDAY_RAAS
    • MONGODB

    عند تحديد مصدر JDBC متحد، يجب عليك أيضا تحديد العبارة OPTIONS بمعلومات الاتصال الضرورية. راجع قواعد بيانات الاستعلام باستخدام JDBC لمزيد من المعلومات حول الاستعلام عن مصادر البيانات الموحدة.

    يتم دعم تنسيقات الملفات الإضافية التالية لاستخدامها للجدول في Databricks Runtime:

    • JDBC
    • LIBSVM
    • اسم فئة مؤهل بالكامل لتنفيذ مخصص ل org.apache.spark.sql.sources.DataSourceRegister.

    إذا USING تم حذفه، يكون الافتراضي هو DELTA.

    ينطبق ما يلي على: Databricks Runtime

    HIVE معتمد لإنشاء جدول Hive SerDe في Databricks Runtime. يمكنك تحديد الخاص ب Hive file_format واستخدام row_format OPTIONS عبارة ، وهو مخطط سلسلة غير حساس لحالة الأحرف. وهي option_keys :

    • FILEFORMAT
    • INPUTFORMAT
    • OUTPUTFORMAT
    • SERDE
    • FIELDDELIM
    • ESCAPEDELIM
    • MAPKEYDELIM
    • LINEDELIM
  • 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.

      • متفاوت المسافات حسب

        تحديد مجموعة الأعمدة التي يتم من خلالها تجميع كل قسم، أو الجدول إذا لم يتم تحديد تقسيم.

        • cluster_column

          معرف يشير إلى 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 التعليق

      سلسلة حرفية لوصف الجدول.

    • TBLPROPERTIES

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

    • عبارة WITH ROW FILTER

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

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

  • استعلام AS

    تملأ هذه العبارة الاختيارية الجدول باستخدام البيانات من 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;