Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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 | { TEMP | TEMPORARY } ] 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 |
COLLATE collation_name |
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 |
DEFAULT COLLATION default_collation_name |
WITH { ROW FILTER clause } } [...]
clustered_by_clause
{ CLUSTERED BY ( cluster_column [, ...] )
[ SORTED BY ( { sort_column [ ASC | DESC ] } [, ...] ) ]
INTO num_buckets BUCKETS }
Databricks Runtime 16.1'den önce START WITH, INCREMENT BY'den önce gelmelidir.
Parametreler
DEĞİŞTİR
Belirtilirse, tablo ve içeriğini zaten mevcutsa yenisiyle değiştirir. Bu yan tümce yalnızca Delta ve Apache Iceberg tablolarında desteklenir.
REPLACEtablo geçmişini ve verilen ayrıcalıkları, satır filtrelerini ve sütun maskelerini korur.Not
Azure Databricks, tabloları bırakmak ve yeniden oluşturmak yerine
REPLACEkullanmasını kesinlikle önerir.DIŞ
Belirtilirse, bir dış tablo oluşturur. Dış tablo oluştururken bir
LOCATIONyan tümce de sağlamanız gerekir. Dış tablo bırakıldığındaLOCATIONkonumundaki dosyalar silinmeyecek.TEMP veya GEÇİCİ
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 17.3 ve üzeriÖnemli
Bu özellik Genel Önizleme aşamasındadır.
Belirtilirse, yalnızca geçerli oturumun erişebileceği geçici bir tablo oluşturur.
EĞER YOKSA
Belirtilirse ve aynı ada sahip bir tablo zaten varsa, ifade yoksayılır.
IF NOT EXISTSileREPLACEbirlikte bulunamaz; bu,CREATE OR REPLACE TABLE IF NOT EXISTS'nin izin verilmediği anlamına gelir.-
Oluşturulacak tablonun adı. Ad bir zamansal belirtim veya seçenek belirtimi içermemelidir. Tablo geçici bir tabloysa,
table_namesessionveyasystem.sessionile nitelendirilebilir. Aksi takdirde, ad belirlenmediyse tablo mevcut şemada oluşturulur.içinde
hive_metastoreoluşturulan tablolar yalnızca alfasayısal ASCII karakterleri ve alt çizgi (INVALID_SCHEMA_OR_RELATION_NAME) içerebilir.Buzdağı tabloları Unity Kataloğu'nda oluşturulmalıdır. Iceberg tabloları
hive_metastoreiçinde oluşturulması desteklenmez. tablo_özellikleri
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ütunları tablo şemasında tanımlamazsanız,
AS queryveyaLOCATIONbelirtmeniz gerekir.-
Sütun için benzersiz bir ad.
Sütun eşleme özelliği (
'delta.columnMapping.mode' = 'name') olmayan Delta tablolarının sütun tanımlayıcıları boşluk veya şu karakterleri içermemelidir:, ; { } ( ) \n \t =.Tabloların
AVROsütun tanımlayıcıları bir alt çizgi () veya Unicode harfiyle (_ASCII olmayan harfler dahil) başlamalı ve ardından Unicode harfleri, basamaklar ve alt çizgilerden oluşan bir bileşimle izlenmelidir.Tabloların
ICEBERGsütun tanımlayıcıları benzersiz, büyük/küçük harfe duyarlı olmamalıdır ve standart SQL tanımlayıcı kurallarına uymalıdır. Tüm sorgu altyapıları tarafından desteklenmeyebileceği için boşluk veya özel karakterler kullanmaktan kaçının. -
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
NULLdeğerlerini kabul etmez. Bu yan tümce yalnızca Delta ve Iceberg tablolarında desteklenir.HARMANLAMA collation_name
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 16.1 ve üzeriSTRINGcolumn_typeiçin, bu sütundaki karşılaştırma ve sıralama işlemleri için uygulanacak harmanlamayı isteğe bağlı olarak adlandırın. Varsayılan harmanlama tablosudefault_collation_name'dır.HER ZAMAN ÜRETİLİR AS ( expr )
Bu yan tümceyi belirttiğinizde, bu sütunun değeri belirtilen
exprtarafından belirlenir.Tablonun
DEFAULT COLLATION,UTF8_BINARYolmalıdır.exprdeğ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
-
UTF8_BINARYdışındaki sıralama düzeni içeren sütunlar
Ayrıca
exprherhangi bir alt sorgu içermemelidir.oluşturuldu { ALWAYS | ÖN TANIMLI } AS IDENTITY [ ( [ START WITH start ] [ INCREMENT BY step ] ) ]
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 10.4 LTS ve üzeriKimlik 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
stepazalan) bir değer atanır. Bu yan tümce yalnızca Delta 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
startile başlar vestepile arttırılır. 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.step0olamaz.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 BYkimlik sütunu -
UPDATEkimlik sütunu
Not
Bir tabloda kimlik sütununu bildirmek 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.
-
VARSAYILAN varsayılan_ifade
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeriBelirtilmediğinde
DEFAULT,INSERT,UPDATE, veMERGE ... INSERTüzerinde kullanılan sütun için bir değer tanımlar.Varsayılan belirtilmezse
DEFAULT NULL, atanabilir sütunlar için uygulanır.default_expressiondeğ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_expressionherhangi bir alt sorgu içermemelidir.DEFAULT,CSV,JSONvePARQUETkaynakları içinORCdesteklenir.YORUM sütun_yorumu
Sütunu tanımlayan bir dize sabiti.
-
Tablodaki sütuna birincil anahtar veya yabancı anahtar kısıtlaması ekler.
Kısıtlamalar katalogdaki
hive_metastoretablolar için desteklenmez.Tabloya denetim kısıtlaması eklemek için kullanın ALTER TABLE.
-
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri
Yalnızca Unity CatalogHassas 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 çağıran kullanıcının kimliğini veya grup üyeliklerini inceleyerek değeri redakte etmeye karar verdiği ayrıntılı erişim kontrolü amaçları için faydalı olabilir.
Bir tabloyu değiştiriyorsanız ve yeni tablo özgün tabloyla aynı sütun adlarını içeriyorsa, açıkça yeniden tanımlanmamış olsalar bile mevcut sütun maskeleri korunur. Bu, veri erişim ilkelerinin yanlışlıkla kaybını önler.
-
Tabloya bilgi amaçlı birincil anahtar veya bilgi amaçlı yabancı anahtar kısıtlaması ekler.
Katalogdaki
hive_metastoretablolar için anahtar kısıtlamaları desteklenmez.Tabloya denetim kısıtlaması eklemek için kullanın ALTER TABLE.
-
Veri kaynağının kullanımı
data_sourcedosya biçiminde veya federasyon JDBC veri kaynağı olabilir.Dosya biçimi aşağıdakilerden biri olmalıdır:
AVROBINARYFILECSVDELTAICEBERGJSONORCPARQUETTEXT
DELTAveyaICEBERGdışındaki herhangi bir dosya biçimi için, tablo kataloğuLOCATIONolmadığı sürece birhive_metastorede belirtmelisiniz.Aşağıdaki federasyon JDBC kaynakları desteklenir:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
Federasyon JDBC kaynağı belirtirken, gerekli bağlantı bilgileriyle birlikte
OPTIONSkoşulunu da belirtmeniz gerekir. Federasyon veri kaynaklarını sorgulama hakkında daha fazla bilgi için bkz . JDBC kullanarak veritabanlarını sorgulama.Tablo için kullanılacak aşağıdaki ek dosya biçimleri Databricks Runtime'da desteklenir:
JDBCLIBSVM- Özel bir uygulamanın tam nitelikli sınıf adı
org.apache.spark.sql.sources.DataSourceRegister.
Atlanırsa
USING, varsayılan değer olurDELTA.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_formatverow_formatöğesini, büyük/küçük harf duyarlılığı olmayan bir dize eşlemesi olanOPTIONSyan tümcesini kullanarak belirtebilirsiniz. Şunlardır:option_keysFILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
tablo_koşulları
İ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
Yönetilen Iceberg tablolarında Azure Databricks desteklemez
PARTITIONED BY. Bunun yerine veri düzenini iyileştirmek için sıvı kümeleme (CLUSTER BY) kullanın. Delta tablolarında, tablo tanımını atlarsanız Azure Databricks bölümleme sütunlarını sütun belirtiminde daha önce listeleseniz bile tablonun sonuna yerleştirir. -
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 13.3 ve üzeriDelta veya Iceberg tablosunu belirli sütunlara göre kümelendirmek için isteğe bağlı bir yan tümce. Bkz Tablolar için sıvı kümeleme kullanma. Diğer tabloları kümelemek için kullanın
clustered_by_clause.Iceberg tablolarında kullanırken silme vektörlerini ve satır kimliklerini açıkça devre dışı bırakmanız
CLUSTER BYgerekir.ile
CLUSTER BY AUTOotomatik sıvı kümelemeyi kullanın ve Databricks sorgu performansını iyileştirmek için kümeleme anahtarlarını akıllı bir şekilde seçer.ile
PARTITIONED BYsıvı kümelemlerini birleştiremezsiniz. kümeleme_kuralına_göre
İ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.
Bu yan tümce Delta veya Iceberg tablolarında desteklenmez. Bunun yerine
CLUSTER BYkullanın.GRUPLANDIRILDI
Her bölümün kümelendirildiği sütun kümesini veya bölümleme belirtilmemişse tabloyu belirtir.
-
Tablo içindeki bir
column_identifieröğesine başvuran 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.
-
SIRALANMA DURUMU
İsteğe bağlı olarak, kümedeki satırlar için bir sıralama düzeni korur.
sort_column
Demeği sıralamak için kullanılacak sütun. Sütun, bölümleme sütunu olarak kullanılmamalıdır. Sıralama sütunları benzersiz olmalıdır.
ASC veya DESC
İsteğe bağlı olarak,
sort_columnartan veyaASCazalan sırada sıralanıp sıralanmayacağınıDESCbelirtir. Varsayılan değerler şeklindedirASC.
NUM_BUCKETS KOVALARA
Her bir bölümün (veya bölümleme belirtilmemişse tablonun) ayrıldığı kova sayısını belirten bir tamsayı sabiti.
YER yolu [ İLE ( CREDENTIAL credential_name ) ]
Tablo verilerinin depolandığı dizine yönelik isteğe bağlı bir yoldur ve dağıtılmış depolamadaki bir yol olabilir.
pathbir METİN sabiti olmalıdır. Konum belirtmezseniz, tablo bir olarak kabul edilirmanaged tableve Azure Databricks varsayılan bir tablo konumu oluşturur.Konum belirtilmesi, tabloyu dış tablo yapar.
Katalogda yer almayan tablolar için, geçerli bir
hive_metastorebelirtilmedikçe, tablonunpathile korunması gerekir.Yönetilen tabloların konumuyla çakışan konumlarda dış tablolar oluşturamazsınız.
Delta tabloları için, eğer bu yolda zaten veri varsa, tablo yapılandırmasını
LOCATION'dan devralır. Sonuç olarak, belirtilenTBLPROPERTIES,table_specificationveyaPARTITIONED BYtümcelerinin Delta konumundaki mevcut verilerle tam olarak eşleşmesi gerekir.Iceberg tablolarında
LOCATIONyan tümcesi desteklenmez. Yabancı Buzdağı tabloları, bir yabancı katalog oluşturduğunuzda otomatik olarak kaydedilir; yönetilen Buzdağı tablolarını ise bir konum belirtmeden oluşturmanız gerekir.-
Kullanıcı tanımlı bir veya daha fazla tablo seçeneğini ayarlar veya sıfırlar.
YORUM tablo_yorumu
Tabloyu tanımlamak için bir dize sabiti.
-
İsteğe bağlı olarak bir veya daha fazla kullanıcı tanımlı özellik ayarlar.
VARSAYıLAN HARMANLAMA default_collation_name
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 16.3 ve üzeriAşağıdakiler için kullanılacak varsayılan harmanlamayı tanımlar:
- Tablodaki
STRINGsütunları ve alanları -
DEFAULTifadesi -
CREATE TABLE AS query'nin gövdesi
CHECKkısıtlamaları ve oluşturulan sütun ifadeleri için varsayılanUTF8_BINARYharmanlaması gerekir.Belirtilmezse, varsayılan harmanlama, tablonun oluşturulduğu şemadan türetilir.
- Tablodaki
-
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri
Yalnızca Unity CatalogTabloya 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.
Bir tabloyu değiştiriyorsanız, mevcut satır filtreleri açıkça yeniden tanımlanmasa bile korunur. Bu, veri erişim ilkelerinin yanlışlıkla kaybını önler.
-
AS sorgusu
Bu isteğe bağlı koşul,
query'dan gelen verileri kullanarak tabloyu doldurur.querybelirttiğinizde, birtable_specificationbelirtmemelisiniz. 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);
-- Creates a managed Iceberg table
> CREATE TABLE edu.enrollment.student (id INT, name STRING, age INT) USING ICEBERG;
-- 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 a table with a string column with a case-insensitive collation.
> CREATE TABLE names(name STRING COLLATE UNICODE_CI);
-- Create a table with a default collation and override for a specific column.
> CREATE TABLE names(name STRING, first_name STRING, id STRING COLLATE UTF8_BINARY) DEFAULT COLLATION UNICODE_CI;
-- 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;
> CREATE TEMP TABLE temp_1 (a INT);
> INSERT INTO temp_1 VALUES (1);
> SELECT * FROM temp_1;
1