CREATE TABLE [USING]
Şunlar için geçerlidir: Databricks SQL 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
Belirtilirse, tablo ve zaten varsa içeriğini değiştirir. Bu yan tümce yalnızca Delta Lake tabloları için desteklenir.
REPLACE
tablo 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 dosyalarLOCATION
bırakılmaz.YOKSA
Belirtilirse ve aynı ada sahip bir tablo zaten varsa, deyimi yoksayılır.
IF NOT EXISTS
ileREPLACE
birlikte bulunamaz; bu da izin verilmeyen anlamına gelirCREATE OR REPLACE TABLE IF NOT EXISTS
.-
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
LOCATION
belirtmenizAS query
gerekir.-
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 veya şu karakterleri içermemelidir:, ; { } ( ) \n \t =
.Tablonun sütun tanımlayıcıları
AVRO
bir alt çizgi () veya Unicode harfle (_
ASCII olmayan harfler dahil) başlamalı ve ardından Unicode harfleri, basamaklar ve alt çizgilerden oluşan bir bileşimle izlenmelidir. -
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
expr
tarafı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:- Toplama işlevleri
- Analitik pencere işlevleri
- Derecelendirme penceresi işlevleri
- Tablo değerli oluşturucu işlevleri
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: Databricks SQL 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 ilestep
artar. 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
olamaz0
.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ütunuUPDATE
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: Databricks SQL Databricks Runtime 11.3 LTS ve üzeri
üzerinde ve
MERGE ... INSERT
sütun belirtilmediğinde kullanılanUPDATE
INSERT
sütun için birDEFAULT
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:- Toplama işlevleri
- Analitik pencere işlevleri
- Derecelendirme penceresi işlevleri
- Tablo değerli oluşturucu işlevleri
Ayrıca
default_expression
herhangi bir alt sorgu içermemelidir.DEFAULT
,JSON
,PARQUET
veORC
kaynakları içinCSV
desteklenir.COMMENT column_comment
Sütunu açıklamak için bir dize değişmez değeri.
-
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.
-
Şunlar için geçerlidir: Yalnızca Databricks SQL Databricks Runtime 12.2 LTS ve üzeri Unity Kataloğu
Önemli
Bu özellik Genel Önizlemededir.
Hassas verileri anonim hale getirmek için bir sütun maskesi işlevi ekler. Bu sütundaki sonraki 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 kimlik veya grup üyeliklerini incelediği ayrıntılı erişim denetimi amaçları için yararlı olabilir.
-
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 olurDELTA
.Tablo kataloğu olmadığı sürece, dışında herhangi biri
data_source
DELTA
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 verow_format
büyük/küçük harfe duyarlı olmayan dize eşlemesi olan yan tümcesini kullanabilirsinizOPTIONS
. Şunlardıroption_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.
-
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. -
Şunlar için geçerlidir: Databricks SQL 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 BY
birleş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.
-
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 (
ASC
DESC
) düzende sıralanıp sıralanmayacağınısort_column
belirtir. Varsayılan değerler şeklindedirASC
.
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 edilirmanaged 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 tablonunpath
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 birTBLPROPERTIES
,table_specification
veyaPARTITIONED BY
yan tümcesi belirtilirse Delta Lake konum verileriyle tam olarak eşleşmelidir.-
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.
-
İsteğe bağlı olarak bir veya daha fazla kullanıcı tanımlı özellik ayarlar.
-
Şunlar için geçerlidir: Yalnızca Databricks SQL Databricks Runtime 12.2 LTS ve üzeri Unity Kataloğu
Tabloya bir satır filtresi işlevi ekler. Bu tablodan sonraki tüm sorgular, işlevin TRUE değerini değerlendirdiği satırların bir alt kümesini alır. Bu, işlevin belirli satırları filtreleyip filtrelememeye karar vermek için çağıran kullanıcının kimlik 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
query
kullanarak tabloyu doldurur. Bir belirttiğinizdequery
, bir de belirtmemelisiniztable_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 '/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));