CREATE TABLE [USING]

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

İsteğe bağlı olarak bir veri kaynağı kullanarak yönetilen veya dış tablo tanımlar.

Sözdizimi

{ { [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 }

Parametreler

  • DEĞİŞTİRMEK

    Belirtildiyse, tablo ve zaten varsa içeriğinin yerini alır. Bu yan tümce yalnızca Delta Lake tabloları için desteklenir.

    REPLACEtablo geçmişini korur.

    Not

    Azure Databricks, Delta Lake tablolarını bırakmak ve yeniden oluşturmak yerine kullanılmasını REPLACE kesinlikle önerir.

  • DIŞ

    Belirtilirse, bir dış tablo oluşturur. Dış tablo oluştururken bir LOCATION yan tümce de sağlamanız gerekir. Dış tablo bırakıldığında konumundaki dosyalar LOCATION bırakılmaz.

  • YOKSA

    Belirtilirse ve aynı ada sahip bir tablo zaten varsa, deyimi yoksayılır.

    IF NOT EXISTS ile REPLACEbirlikte bulunamaz; bu da izin verilmeyen anlamına gelir CREATE OR REPLACE TABLE IF NOT EXISTS .

  • Table_name

    Oluşturulacak tablonun adı. Ad bir zamansal belirtim içermemelidir. Ad uygun değilse, tablo geçerli şemada oluşturulur.

    içinde hive_metastore oluşturulan tablolar yalnızca alfasayısal ASCII karakterleri ve alt çizgi (INVALID_SCHEMA_OR_RELATION_NAME) içerebilir.

  • table_specification

    Bu isteğe bağlı yan tümcesi sütunların listesini, türlerini, özelliklerini, açıklamalarını ve sütun kısıtlamalarını tanımlar.

    Sütun tanımlamazsanız tablo şemasını veya LOCATIONbelirtmeniz AS query gerekir.

    • column_identifier

      Sütun için benzersiz bir ad.

      Sütun eşleme özelliği ('delta.columnMapping.mode' = 'name') olmayan Delta Lake tablolarının sütun tanımlayıcıları ' ' (boşluk), ',', ';', '{', '}', '(', ')' karakterlerini içermemelidir. 'n', 't' ve '='.

      Tablonun sütun tanımlayıcıları AVRO '' veya Unicode harfi (ASCII olmayan harfler dahil) ile başlamalı ve ardından '', Unicode harfleri ve basamaklarının birleşimi bulunmalıdır.

    • column_type

      Sütunun veri türünü belirtir. Azure Databricks tarafından desteklenen tüm veri türleri tüm veri kaynakları tarafından desteklenmez.

    • NOT NULL

      Belirtilirse, sütun değerleri kabul NULL etmeyecektir. Bu yan tümce yalnızca Delta Lake tabloları için desteklenir.

    • GENERATED ALWAYS AS ( expr )

      Bu yan tümceyi belirttiğinizde, bu sütunun değeri belirtilen exprtarafından belirlenir.

      expr değişmez değerlerden, tablo içindeki sütun tanımlayıcılarından ve aşağıdakiler dışında belirleyici, yerleşik SQL işlevlerinden veya işleçlerinden oluşabilir:

      Ayrıca expr herhangi bir alt sorgu içermemelidir.

    • OLUŞTURULDU { ALWAYS | VARSAYıLAN OLARAK } AS IDENTITY [ ( [ START WITH start ] [ INCREMENT BY step ] ) ]

      Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 10.4 LTS ve üzeri

      Kimlik sütununu tanımlar. Tabloya yazdığınızda ve kimlik sütunu için değer sağlamadığınızda, otomatik olarak benzersiz ve istatistiksel olarak artan (veya negatifse step azalan) bir değer atanır. Bu yan tümce yalnızca Delta Lake tabloları için desteklenir. Bu yan tümce yalnızca BIGINT veri türüne sahip sütunlar için kullanılabilir.

      Otomatik olarak atanan değerler ile start başlar ve ile stepartar. Atanan değerler benzersizdir ancak bitişik olması garanti edilmemektedir. Her iki parametre de isteğe bağlıdır ve varsayılan değer 1'dir. step olamaz 0.

      Otomatik olarak atanan değerler kimlik sütun türü aralığının dışındaysa sorgu başarısız olur.

      Kullanıldığında ALWAYS , kimlik sütunu için kendi değerlerinizi sağlayamazsınız.

      Aşağıdaki işlemler desteklenmez:

      • PARTITIONED BY kimlik sütunu
      • UPDATE kimlik sütunu

      Not

      Delta tablosunda kimlik sütunu bildirilmesi eşzamanlı işlemleri devre dışı bırakır. Yalnızca hedef tabloya eşzamanlı yazmanın gerekli olmadığı kullanım durumlarında kimlik sütunlarını kullanın.

    • DEFAULT default_expression

      Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri

      üzerinde ve MERGE ... INSERT sütun belirtilmediğinde kullanılan UPDATEINSERTsütun için bir DEFAULT değer tanımlar.

      Belirtilmezse DEFAULT NULL , null atanabilir sütunlar için uygulanır.

      default_expression değişmez değerlerden ve aşağıdakiler dışında yerleşik SQL işlevlerinden veya işleçlerinden oluşabilir:

      Ayrıca default_expression herhangi bir alt sorgu içermemelidir.

      DEFAULT, JSON, PARQUETve ORC kaynakları için CSVdesteklenir.

    • COMMENT column_comment

      Sütunu açıklamak için bir dize değişmez değeri.

    • column_constraint

      Önemli

      Bu özellik Genel Önizlemededir.

      Delta Lake tablosundaki sütuna birincil anahtar veya yabancı anahtar kısıtlaması ekler.

      Kısıtlamalar katalogdaki hive_metastore tablolar için desteklenmez.

      Delta Lake tablosuna denetim kısıtlaması eklemek için ALTER TABLE kullanın.

    • MASK yan tümcesi

      Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Yalnızca Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 12.2 LTS ve üzeri onay işareti evet olarak işaretlenmiş Unity Kataloğu

      Önemli

      Bu özellik Genel Önizlemededir.

      Hassas verileri anonim hale getirmek için bir sütun maskesi işlevi ekler. Bu sütundan gelecek tüm sorgular, sütunun özgün değeri yerine bu işlevi sütun üzerinde değerlendirmenin sonucunu alır. Bu, işlevin, değeri yeniden işlemeye karar vermek için çağıran kullanıcının kimliğini ve/veya grup üyeliklerini incelediği ayrıntılı erişim denetimi amaçları için yararlı olabilir.

    • table_constraint

      Delta Lake tablosuna bir bilgilendirme birincil anahtarı veya bilgilendiren yabancı anahtar kısıtlamaları ekler.

      Katalogdaki hive_metastore tablolar için anahtar kısıtlamaları desteklenmez.

      Delta Lake tablosuna denetim kısıtlaması eklemek için ALTER TABLE kullanın.

  • data_source KULLANMA

    Tablo için kullanılacak dosya biçimi. data_source şulerden biri olmalıdır:

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

    Tablo için kullanılacak aşağıdaki ek dosya biçimleri Databricks Runtime'da desteklenir:

    • JDBC
    • LIBSVM
    • özel uygulamasının tam sınıf adı.org.apache.spark.sql.sources.DataSourceRegister

    Atlanırsa USING , varsayılan değer olur DELTA.

    Tablo kataloğu olmadığı sürece, dışında herhangi biri data_sourceDELTA için de belirtmelisinizLOCATION.hive_metastore

    Aşağıdakiler şunlar için geçerlidir: Databricks Runtime

    HIVE , Databricks Runtime'da Hive SerDe tablosu oluşturmak için desteklenir. Hive'a özgü file_format öğesini belirtebilir ve row_format büyük/küçük harfe duyarlı olmayan dize eşlemesi olan yan tümcesini kullanabilirsiniz OPTIONS . Şunlardır option_keys :

    • FILEFORMAT
    • INPUTFORMAT
    • OUTPUTFORMAT
    • SERDE
    • FIELDDELIM
    • ESCAPEDELIM
    • MAPKEYDELIM
    • LINEDELIM
  • table_clauses

    İsteğe bağlı olarak yeni tablo için konum, bölümleme, kümeleme, seçenekler, açıklamalar ve kullanıcı tanımlı özellikleri belirtin. Her alt yan tümce yalnızca bir kez belirtilebilir.

    • BÖLÜMLENDİ

      Tabloyu sütunların bir alt kümesine göre bölümlendirmek için isteğe bağlı bir yan tümce.

      Not

      Delta tablosu tanımlamazsanız, bölümleme sütunları sütun belirtiminde daha önce tanımlanmış olsalar bile tablonun sonuna yerleştirilir. Delta tabloları yerine PARTITIONED BY kullanmayı CLUSTER BY göz önünde bulundurun.

    • KÜMEYE GÖRE

      Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 13.3 ve üzeri

      Delta tablosunu sütunların bir alt kümesine göre kümelemesini sağlamak için isteğe bağlı bir yan tümce. Diğer tabloları kümeleyemek için kullanın clustered_by_clause.

      Delta Lake sıvı kümelemeyi ile PARTITIONED BYbirleştirilemez.

    • clustered_by_clause

      İsteğe bağlı olarak, sütunların bir alt kümesini kullanarak tabloyu veya her bölümü sabit sayıda karma demet halinde kümeleyin.

      Delta Lake tabloları için kümeleme desteklenmez.

      • KÜMELENDİ

        Her bölümün kümelendirildiği sütun kümesini veya bölümleme belirtilmemişse tabloyu belirtir.

        • cluster_column

          Tablodaki öğesine başvuran bir column_identifier tanımlayıcı. Birden fazla sütun belirtirseniz yineleme olmamalıdır. Kümeleme bölüm düzeyinde çalıştığından, bölüm sütununu küme sütunu olarak da adlandırmamalısınız.

      • SıRALAMA ÖLÇÜTÜ

        İsteğe bağlı olarak, demetteki satırlar için sıralama düzenini korur.

        • sort_column

          Demetin sıralanacağınız sütun. Sütun bölüm sütunu olmamalıdır. Sıralama sütunları benzersiz olmalıdır.

        • ASC veya DESC

          İsteğe bağlı olarak artan () veya azalan (ASCDESC) düzende sıralanıp sıralanmayacağını sort_column belirtir. Varsayılan değerler şeklindedir ASC.

      • NUM_BUCKETS DEMETLERE

        Her bölümün (veya bölümleme belirtilmemişse tablonun) bölündüğü demet sayısını belirten INTEGER değişmez değeri.

    • KONUM yolu [ WITH ( CREDENTIAL credential_name ) ]

      Tablo verilerinin depolandığı dizine yönelik isteğe bağlı bir yoldur ve dağıtılmış depolamadaki bir yol olabilir. path bir STRING değişmez değeri olmalıdır. Konum belirtmezseniz, tablo bir olarak kabul edilir managed table ve Azure Databricks varsayılan bir tablo konumu oluşturur.

      Konum belirtilmesi, tabloyu dış tablo yapar.

      Katalogda hive_metastore bulunmayan tablolar için geçerli bir depolama kimlik bilgisi belirtilmediği sürece tablonun path bir dış konum tarafından korunması gerekir.

      Yönetilen tabloların konumuyla çakışan konumlarda dış tablolar oluşturamazsınız.

      Delta Lake tablosu için tablo yapılandırması, veri varsa tablosundan LOCATION devralınır. Bu nedenle, Delta Lake tabloları için herhangi bir TBLPROPERTIES, table_specificationveya PARTITIONED BY yan tümcesi belirtilirse Delta Lake konum verileriyle tam olarak eşleşmelidir.

    • OPTIONS

      Kullanıcı tanımlı bir veya daha fazla tablo seçeneğini ayarlar veya sıfırlar.

    • COMMENT table_comment

      Tabloyu açıklamak için dize değişmez değeri.

    • TBLPROPERTIES

      İsteğe bağlı olarak bir veya daha fazla kullanıcı tanımlı özellik ayarlar.

    • WITH ROW FILTER yan tümcesi

      Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Yalnızca Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 12.2 LTS ve üzeri onay işareti evet olarak işaretlenmiş Unity Kataloğu

      Önemli

      Bu özellik Genel Önizlemededir.

      Tabloya bir satır filtresi işlevi ekler. Bu tablodan gelecek tüm sorgular, işlevin TRUE değerini değerlendirdiği satırlarının alt kümesini alır. Bu, işlevin belirli satırları filtreleyip filtrelememeye karar vermek için çağıran kullanıcının kimliğini ve/veya grup üyeliklerini incelediği ayrıntılı erişim denetimi amaçları için yararlı olabilir.

  • AS sorgusu

    Bu isteğe bağlı yan tümcesi, içindeki verileri querykullanarak tabloyu doldurur. Bir belirttiğinizde query , bir de belirtmemelisiniz table_specification. Tablo şeması sorgudan türetilir.

    Azure Databricks'in, oluşturulan tablonun giriş sorgusuyla tam olarak aynı verileri içerdiğinden emin olmak için temel alınan veri kaynağının üzerine giriş sorgusunun verilerini yazdığını unutmayın.

Örnekler

-- 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 '/mnt/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));