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] 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.
REPLACE
, tablo geçmişi ve verilen ayrıcalıkları korur.Not
Azure Databricks, tabloları bırakmak ve yeniden oluşturmak yerine
REPLACE
kullanmasını 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ığındaLOCATION
konumundaki dosyalar silinmeyecek.EĞER YOKSA
Belirtilirse ve aynı ada sahip bir tablo zaten varsa, ifade yoksayılır.
IF NOT EXISTS
ileREPLACE
birlikte 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. 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.Buzdağı tabloları Unity Kataloğu'nda oluşturulmalıdır. Iceberg tabloları
hive_metastore
iç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 query
veyaLOCATION
belirtmeniz 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
AVRO
sü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
ICEBERG
sü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
NULL
değ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 üzeri
STRING
column_type
iç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
expr
tarafından belirlenir.Tablonun
DEFAULT COLLATION
,UTF8_BINARY
olmalıdır.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
-
UTF8_BINARY
dışındaki sıralama düzeni içeren sütunlar
Ayrıca
expr
herhangi 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 ü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 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
start
ile başlar vestep
ile 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.step
0
olamaz.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
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 üzeri
Belirtilmediğ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_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
,CSV
,JSON
vePARQUET
kaynakları içinORC
desteklenir.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_metastore
tablolar 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 Catalog
Ö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 ç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.
-
Tabloya bilgi amaçlı birincil anahtar veya bilgi amaçlı yabancı anahtar kısıtlaması ekler.
Katalogdaki
hive_metastore
tablolar 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_source
dosya biçiminde veya federasyon JDBC veri kaynağı olabilir.Dosya biçimi aşağıdakilerden biri olmalıdır:
AVRO
BINARYFILE
CSV
DELTA
ICEBERG
JSON
ORC
PARQUET
TEXT
DELTA
veyaICEBERG
dışındaki herhangi bir dosya biçimi için, tablo kataloğuLOCATION
olmadığı sürece birhive_metastore
de belirtmelisiniz.Aşağıdaki federasyon JDBC kaynakları desteklenir:
POSTGRESQL
SQLSERVER
MYSQL
BIGQUERY
NETSUITE
ORACLE
REDSHIFT
SNOWFLAKE
SQLDW
SYNAPSE
SALESFORCE
SALESFORCE_DATA_CLOUD
TERADATA
WORKDAY_RAAS
MONGODB
Federasyon JDBC kaynağı belirtirken, gerekli bağlantı bilgileriyle birlikte
OPTIONS
koş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:
JDBC
LIBSVM
- Ö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_format
verow_format
öğesini, büyük/küçük harf duyarlılığı olmayan bir dize eşlemesi olanOPTIONS
yan tümcesini kullanarak belirtebilirsiniz. Şunlardır:option_keys
FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
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 üzeri
Delta 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 BY
gerekir.
ile
PARTITIONED BY
sı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 BY
kullanı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_column
artan veyaASC
azalan sırada sıralanıp sıralanmayacağınıDESC
belirtir. 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.
path
bir METİN sabiti 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 yer almayan tablolar için, geçerli bir
hive_metastore
belirtilmedikçe, tablonunpath
ile 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_specification
veyaPARTITIONED BY
tümcelerinin Delta konumundaki mevcut verilerle tam olarak eşleşmesi gerekir.Iceberg tablolarında
LOCATION
yan 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 üzeri
Aşağıdakiler için kullanılacak varsayılan harmanlamayı tanımlar:
- Tablodaki
STRING
sütunları ve alanları -
DEFAULT
ifadesi -
CREATE TABLE AS query
'nin gövdesi
CHECK
kısıtlamaları ve oluşturulan sütun ifadeleri için varsayılanUTF8_BINARY
harmanlaması gerekir.Belirtilmezse, varsayılan sıralama düzeni
UTF8_BINARY
olarak ayarlanır.- Tablodaki
-
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri
Yalnızca Unity Catalog
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ı koşul,
query
'dan gelen verileri kullanarak tabloyu doldurur.query
belirttiğinizde, birtable_specification
belirtmemelisiniz. 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;