Ana içeriğe geç

Databricks'te CREATE TABLE: Tabloları Oluşturma ve Yönetmeye Yönelik Kapsamlı Rehber

Databricks'te CREATE TABLE komutunu kullanarak nasıl tablo oluşturacağınızı keşfedin. Farklı senaryolar için farklı yöntemleri öğrenin; mevcut verilerden tablo oluşturma ve CREATE TABLE AS SELECT kullanımı dahil.
· 10 dk. oku

Yapay Zeka ile Keşfedin

Databricks tabloları, geniş ölçekli veri depolama ve işlemeyi yönetmek üzere tasarlanmış Databricks Lakehouse platformunun temel bir bileşenidir. Bu tablolar, yapılandırılmış ve yapılandırılmamış verileri birleştirerek ve analitik iş yüklerini destekleyerek ekipler arasında iş birliğine olanak tanır.

Bu yazıda, farklı kullanım senaryolarına uyum sağlamak için çeşitli sözdizimi varyasyonlarıyla CREATE TABLE komutunu kullanarak Databricks'te tablo oluşturmanın farklı tekniklerini adım adım göstereceğim. Ayrıca, Databricks'te tabloları verimli ve güvenilir biçimde oluşturup yönetirken benimseyebileceğiniz en iyi uygulamalara dair ipuçları sunacağım.

Başlarken, Databricks'in temel özelliklerini ve kullanım alanlarını anlamanıza ve öğrenmeye yapılı bir yol ile başlamanıza yardımcı olmak için DataCamp’in Databricks Nasıl Öğrenilir: Birleşik Veri Platformuna Yeni Başlayanlar İçin Rehber blog yazısını okumanızı şiddetle öneririm. Ayrıca Introduction to Databricks kursumuzu da almanızı tavsiye ederim. SQL konusunda deneyiminiz olsa bile, Databricks Lakehouse platformunda bazı şeylerin farklı görünebildiğini göreceksiniz. Kursumuzdaki etkileşimli alıştırmalar, hem SQL sorgularında hem de platform özellikleri ve harici sistem bağlantılarında size yol gösterecektir.

Databricks Tablolarına Giriş

Öncelikle şunu söyleyelim: Databricks tabloları, Databricks Lakehouse ortamında veri organizasyonunu ve erişimini kolaylaştıran yapılandırılmış veri kümeleridir. İki tür vardır:

  • Yönetilen Tablolar: Bu tablolar Databricks tarafından tamamen kontrol edilir; hem depolama hem de meta veriler Databricks tarafından yönetilir. Yönetilen bir tablo oluşturulduğunda Databricks alttaki veri dosyalarıyla ilgilenir ve tablo silinirse, ilgili veriler de kaldırılır. 
  • Harici Tablolar: Harici tablolar, genellikle AWS S3 veya Azure Blob Storage gibi bulut depolama sistemlerinde, Databricks dışında bulunan verilere referans verir. Databricks bu tabloların meta verilerini yönetirken, tablo düşürülse (drop) bile gerçek veriler yerinde kalır. Bunlar yönetilmeyen tablolar olarak da bilinir.

Databricks'teki tablolar, gelişmiş özellikleri ve optimizasyonları nedeniyle sıklıkla varsayılan olarak Delta Lake’i kullanır. Delta Lake, ACID işlemleri, ölçeklenebilirlik, önbellekleme ve indeksleme gibi performans iyileştirmeleri ve toplu ve akış verisi işlemede birliktelik sağlar.

Not olarak, Azure Databricks’in erken sürümleri eski “Hive formatı” tabloları kullanıyordu; modern Delta tablolar bu yapıyı değiştirmiştir. Genel olarak modern Delta tablolar, güvenilirlik ve performans açısından eski Hive tablolardan üstündür ve Databricks iş akışları için varsayılan tercih haline gelmiştir.

Aşağıdaki özet, ikisi arasındaki farkı görmenize yardımcı olabilir:

ÖzellikHive formatlı tabloDelta tablosu
Veri formatıApache Hive (CSV, Parquet, ORC, vb.)Delta Lake (Parquet tabanlı, meta verilerle)
İşlemlerACID desteği yok (sonunda tutarlılık)Tam ACID işlemleri
Şema yönetimiSınırlı zorlayıcılıkSıkı şema zorlaması
Performans optimizasyonuManuel ayar gerekirDahili optimizasyonlar (önbellekleme, sıkıştırma)
Zaman yolculuğuGeçmiş sorguları için yerleşik destek yokVerinin önceki sürümlerini sorgulamak için zaman yolculuğunu destekler
EşzamanlılıkGüncelleme veya silmelerde çakışmalara yatkınEşzamanlı işlemleri verimli biçimde yönetir

CREATE TABLE Sözdizimi Varyasyonları

Databricks'teki CREATE TABLE komutu, farklı durumları karşılamak üzere çoklu varyasyonları destekler. Her varyasyonun dosya konumu, klonlama ve meta veri yönetimi gibi hedefe yönelik seçenekleriyle belirli bir amacı vardır. Databricks SQL bilginizi tazelemeniz gerekiyorsa, bir Databricks SQL ambarında Notebook kullanımını da içeren konuları öğrenmek için Databricks SQL eğitimimizi okumanızı öneririm.

Aşağıda başlıca sözdizimi biçimleri, örneklerle ve açıklamalarla verilmiştir.

CREATE TABLE [USING]

Bu sözdizimi, belirli bir şema ve veri formatıyla yeni bir tablo oluşturur. Aşağıdaki sorgu, belirli bir konumda saklanan Parquet dosyalarından veri okuyarak sales_data adlı bir tablo oluşturur.

-- Create a table from files in a specific format
CREATE TABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales';

CREATE TABLE (Hive formatı)

Bu eski sözdizimi, harici dosyalara referans vermeye gerek kalmadan meta verileri Databricks tarafından yönetilen bir tablo tanımlarken kullanılan standart SQL CREATE TABLE komutuna benzer. Aşağıdaki sorgu, önceden tanımlı bir şema ve ek meta veri özellikleriyle hive_table adlı Hive tarzı bir tablo oluşturur.

-- Hive-style table creation with schema definition
CREATE TABLE hive_table (
    id INT,
    name STRING
)
COMMENT 'Hive format example'
TBLPROPERTIES ('created_by' = 'databricks');

Yukarıdaki sorguda COMMENT ifadesi açıklayıcı meta veriler eklerken, TBLPROPERTIES tabloya ilişkin özel özellikleri saklar.

CREATE TABLE LIKE

Bu komut, mevcut bir tablonun şema ve özelliklerini kullanarak yeni bir tablo oluşturur. Bir tablonun yapısını, verilerini kopyalamadan çoğaltmak istediğinizde bu sözdizimini kullanmalısınız. Test veya geliştirme amaçları için kullanışlıdır.

-- Create a table with the same schema as another table
CREATE TABLE new_table LIKE existing_table;

CREATE TABLE CLONE

Bu sözdizimi, mevcut bir Delta Lake tablosunu derin ya da sığ klonlayarak yeni bir tablo oluşturmanıza olanak tanır. Bu nedenle, bir tablonun veri ve meta verilerinin bağımsız bir kopyasına (derin klon) ya da yalnızca meta verilere, veriyi aslına referanslayarak (sığ klon) ihtiyacınız olduğunda CREATE TABLE CLONE sözdizimini kullanmalısınız. Sürümleme veya yedekleme oluşturma için düşünebilirsiniz.

Aşağıdaki örnek, Databricks'te derin ve sığ klon tabloları oluşturma sorgularını gösterir.

 -- Deep clone by default
CREATE TABLE cloned_table CLONE original_table;

-- Shallow clone
CREATE TABLE shallow_clone_table SHALLOW CLONE original_table;  

CREATE OR REPLACE TABLE

Bu birleşik komut, aynı tablo adını koruyarak mevcut bir tabloyu tek bir işlemde yenisiyle değiştirir. Bir tablonun adını korurken içeriğini tamamen üzerine yazmak istediğinizde bu sözdizimini kullanmalısınız. Özellikle bir tabloyu önce drop etmeye gerek kalmadan yapısını veya verisini güncellemek için kullanışlıdır.

Aşağıdaki örnek sorgu, sales tablosunu yeni bir şemayla oluşturur veya değiştirir.

-- Create or replace a sales table with a new schema
CREATE OR REPLACE TABLE sales (
    sale_id INT,
    amount FLOAT
)
USING DELTA
LOCATION '/mnt/delta/sales';

Databricks'teki CREATE TABLE sözdizimiyle birlikte, tablolarınızı belirli gereksinimlere göre yönetmek için kullanabileceğiniz başka ilgili ifadeler de vardır. Aşağıda bu ifadelerin her birinin kullanımına dair bir özet bulunmaktadır. Bunların bazılarını örneklerde kullandım, ancak hepsini değil.

  • IF NOT EXISTS: Tablo zaten varsa oluşturmayı atlayarak hataları önler.

  • USING: Dosya formatını belirtir (ör. Delta, Parquet, CSV).

  • EXTERNAL: Verilerin Databricks'in yönetilen depolaması dışında bulunduğu tabloyu tanımlar.

  • PARTITIONED BY: Büyük veri kümelerini optimize etmek için bölümleri tanımlar.

  • LOCATION: Tablo verilerinin bulunduğu dizini işaret eder.

  • TBLPROPERTIES: Özel tablo yapılandırmaları ve optimizasyonları için meta veriler ekler.

Adım Adım Gösterimler

Bu bölümde, kısa örnekler ve önemli ifadelerin açıklamalarıyla Databricks'te tablo oluşturmanın ve yönetmenin farklı yollarını göstereceğim. Databricks platformunda SQL komutları çalıştırmayı öğrenmek için Databricks Eğitimi: Her Veri Uzmanının Bilmesi Gereken 7 Kavram yazımıza göz atmanızı öneririm.

Boş bir tablo nasıl oluşturulur

Boş bir Delta tablosu oluşturmak için tablo şemasını sütun adları ve veri tipleriyle tanımlayın. Tablo formatını tanımlamak için USING DELTA ifadesini ve açıklayıcı meta veriler eklemek için COMMENT ifadesini kullanın.

Bu sorgu, id, name, department ve hire_date sütunlarını içeren, önceden tanımlı şemaya sahip employees adlı boş bir Delta tablosu oluşturur. 

-- Create an empty Delta table with a defined schema
CREATE TABLE employees (
    id BIGINT,
    name STRING,
    department STRING,
    hire_date DATE
)
USING DELTA
COMMENT 'Table to store employee information';

Mevcut verilerden tablo nasıl oluşturulur

Mevcut verilerden tablo oluşturmak için tabloyu CSV, Parquet veya JSON gibi formatlardaki harici veri dosyalarına bağlayın. Dosya yolunu belirtmek için LOCATION ifadesini ve veri formatını belirtmek için USING ifadesini kullanabilirsiniz.

Örneğin, aşağıdaki sorgu /mnt/data/sales_data/ konumunda saklanan Parquet dosyalarına referans vererek sales_data adlı bir tablo oluşturur.

-- Create a table from Parquet files in a specified location
CREATE TABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales_data/';

SELECT ile tablo nasıl oluşturulur (CTAS)

Bir sorgu çalıştırıp sonucunu saklayarak da tablo oluşturabilirsiniz. Bu senaryoda AS SELECT ifadesi, tabloyu sorgu sonucuyla doldurur.

Örneğin, aşağıdaki sorgu mevcut sales_data tablosundan veri seçip dönüştürerek high_value_sales adlı yeni bir tablo oluşturur. total_amount değeri 1000’den büyük olan satırları filtreler ve yalnızca sale_id, customer_id ve total_amount sütunlarını tutar. 

-- Create a table by selecting and transforming data from another table
CREATE TABLE high_value_sales AS
SELECT
    sale_id,
    customer_id,
    total_amount
FROM sales_data
WHERE total_amount > 1000;

Harici tablo nasıl oluşturulur

Harici tablo oluşturmak, Databricks'in yönetilen depolaması dışında saklanan verilere referans vermeyi içerir. Harici veri konumunu belirtmek için LOCATION ifadesini kullanmalısınız.

Aşağıdaki sorgu, /mnt/external_storage/external_table/ konumunda saklanan verilere referans vererek external_table adlı harici bir Delta tablosu oluşturur.

-- Create an external table referencing data outside Databricks storage
CREATE TABLE external_table
USING DELTA
LOCATION '/mnt/external_storage/external_table/';

LIKE ile tablo nasıl oluşturulur

Bir tabloyu LIKE ile oluşturmak için, mevcut bir tablonun şemasını verileri kopyalamadan çoğaltın. Aşağıdaki örnekte, sorgu mevcut sales tablosuyla aynı şemaya sahip sales_backup adlı yeni bir tablo oluşturur.

-- Create a new sales table with the same schema as an existing table
CREATE TABLE sales_backup LIKE sales;

TABLE CLONE nasıl oluşturulur

Yedekleme veya test için bir Delta tablosunun sığ ya da derin kopyasını oluşturmak üzere CLONE ifadesini kullanarak tablo klonu oluşturabilirsiniz.

Aşağıdaki örnekteki sorgu, yalnızca meta verileri (şema ve tablo özellikleri) kopyalayarak sales_shallow_clone adlı yeni bir tablo oluşturur.

-- Shallow clone: Copies only metadata (references original data)
CREATE TABLE sales_shallow_clone CLONE sales_data;

Aşağıdaki örnek, hem meta verileri hem de gerçek verileri kopyalayarak sales_deep_clone adlı yeni bir tablo oluşturur.

-- Deep clone: Copies both metadata and actual data
CREATE TABLE sales_deep_clone CLONE sales_data DEEP;

Geçici tablo (temp table) nasıl oluşturulur

Geçici tablolar oluştururken, tablonun oturuma özgü olmasını sağlamak için TEMPORARY ifadesini kullanın.

Aşağıdaki sorgu, yalnızca geçerli oturum süresince var olan temp_table adlı bir geçici tablo oluşturur. sales_data tablosundan id, name ve sales_amount seçer ve region = 'US' olan satırları filtreler.

-- Create a temporary table that exists only in the session
CREATE TEMPORARY TABLE temp_table AS
SELECT
    id,
    name,
    sales_amount
FROM sales_data
WHERE region = 'US';

Bir tablo nasıl değiştirilir (replace)

Tablo tanımını ve içeriğini değiştirmek için CREATE OR REPLACE ifadesini kullanabilirsiniz. Aşağıdaki sorgu, mevcut updated_table tablosunu yeni bir şema ve verilerle değiştirir. Tabloyu üç sütunla (id, name, total_sales) tanımlar.

-- Replace an existing table with a new schema or data
CREATE OR REPLACE TABLE updated_table (
    id BIGINT,
    name STRING,
    total_sales DOUBLE
)
USING DELTA
LOCATION '/mnt/delta/updated_table/';

İleri Düzey Konular

Bu bölümde, işlevsellik, performans ve güvenliği artıran gelişmiş Databricks tablo özelliklerini ele alacağım.

Oluşturulan sütunlar ve kimlik (identity) sütunları

Databricks, her yeni satır için otomatik olarak benzersiz değerler üreten identity sütunlarını destekler. Bu özellik, veri ambarlarında vekil anahtarlar (surrogate key) oluşturmak için kullanışlıdır.

Aşağıdaki sorgu, id, name ve department olmak üzere üç sütunlu bir employees tablosu oluşturur. id sütunu, her yeni satırla artan bir identity sütunudur.

-- Identity column: auto-incremented value
CREATE TABLE employees (
    id BIGINT GENERATED ALWAYS AS IDENTITY, -- Auto-incremented column
    name STRING,
    department STRING
);

Bir diğer sorgu, sale_id, sale_date ve sale_year olmak üzere üç sütunlu bir sales tablosu oluşturur. sale_year sütunu, YEAR(sale_date) fonksiyonu kullanılarak sale_date sütununa göre otomatik olarak hesaplanan oluşturulmuş (generated) bir sütundur.

-- Generated column: derived from other columns
CREATE TABLE sales (
    sale_id BIGINT,
    sale_date DATE,
    sale_year INT GENERATED ALWAYS AS (YEAR(sale_date)) -- Derived column
);

Bölümleme (partitioning) ve kümeleme (clustering)

Bölümleme, veriyi daha küçük parçalara ayırarak sorgu performansını artırırken; kümeleme, daha hızlı okuma için bölümler içinde veriyi düzenler.

Örneğin aşağıdaki sorgu, region sütununa göre veriyi parçalara ayıran bölümlenmiş bir tablo oluşturur; bölgeye göre filtreleme yaparken sorgu performansını artırır.

-- Partitioned table
CREATE TABLE partitioned_table (
    id BIGINT,
    region STRING,
    sales_amount DOUBLE
)
USING DELTA
PARTITIONED BY (region); -- Querying by region will be faster

Aşağıdaki sorgu, sales_amount sütununa göre her bölüm içinde veriyi kümeyerek bölümlenmiş tabloyu optimize eder. Veri yerleşimini iyileştirerek sales_amount üzerindeki sorguları hızlandırır. ZORDER BY ifadesi, okuma performansını iyileştirmek için veriyi bölümler içinde kümeler; bölümler arasında değil.

-- Clustered table
OPTIMIZE partitioned_table
ZORDER BY (sales_amount); -- Clusters data within partitions for efficient reads

Sütun maskeleme ve satır filtreleri

Sütun maskeleme ve satır filtreleri, hassas bilgileri koruyarak kullanıcı rollerine veya koşullara göre veri görünürlüğünü sınırlar.

Örneğin aşağıdaki sorgu, employees tablosuna dayalı masked_table adlı maskelenmiş bir görünüm oluşturur. salary sütunu, manager rolüne sahip kullanıcılar dışında sansürlenir (REDACTED ile değiştirilir). CASE ifadesi, yalnızca yöneticilerin gerçek maaşı görebilmesini, diğerlerinin maskelenmiş veriyi görmesini sağlar

-- Column masking: Redact sensitive data
CREATE MASKED VIEW masked_table AS
SELECT
    id,
    name,
    CASE
        WHEN current_user() = 'manager' THEN salary
        ELSE 'REDACTED'
    END AS salary
FROM employees;

Benzer şekilde, aşağıdaki sorgu sales tablosuna dayalı filtered_table adlı bir görünüm oluşturur veya değiştirir. Görünüm, yalnızca region = 'US' olan verileri içerecek şekilde satırları filtreler ve erişimi yalnızca ABD satış verileriyle sınırlar.

-- Row filters: Fine-grained access control
CREATE OR REPLACE VIEW filtered_table AS
SELECT *
FROM sales
WHERE region = 'US'; -- Limit data visibility to a specific region

Şema evrimi

Databricks, CREATE OR REPLACE TABLE ve tablo değişiklikleri (alter) ile şema evrimini destekler. Şemayı ve veriyi üzerine yazmak için CREATE OR REPLACE TABLE ifadesini; veriyi etkilemeden şemayı artımlı olarak değiştirmek için ALTER TABLE ifadesini kullanmalısınız.

Aşağıdaki sorgu, mevcut employees tablosunu yeni bir şemayla değiştirir; Delta formatında depolamayı sürdürürken yeni bir hire_date sütunu ekler.

-- Schema evolution with CREATE OR REPLACE TABLE
CREATE OR REPLACE TABLE employees (
    id BIGINT,
    name STRING,
    department STRING,
    hire_date DATE -- New column added
)
USING DELTA;

Diğer bir sorgu, mevcut şemaya yeni bir salary sütunu ekleyerek employees tablosunu değiştirir.

-- Altering a table schema
ALTER TABLE employees ADD COLUMNS (salary DOUBLE);

Performans ayarlama

Geniş ölçekli tabloların performansını optimize etmek için otomatik optimizasyon ve Z-ordering gibi çeşitli tablo özellikleri ve tekniklerden yararlanabilirsiniz.

Aşağıdaki örnekte, küçük dosyaları otomatik olarak sıkıştırmak ve yazma sırasında dosyaları birleştirmek için özellikler ayarlanarak delta_table üzerinde otomatik optimizasyon etkinleştirilir; bu da depolama verimliliğini artırır.

-- Enable automatic optimizations
ALTER TABLE delta_table
SET TBLPROPERTIES (
    'delta.autoOptimize.optimizeWrite' = 'true', -- Automatically compact small files
    'delta.autoOptimize.autoCompact' = 'true'   -- Automatically merge files
);

Benzer şekilde, aşağıdaki sorgu delta_table tablosunu region ve sales_date sütunlarına göre kümleyerek optimize eder; özellikle bu sütunlardaki filtreler için sorgu performansını artırır.

-- Perform clustering for faster query performance
OPTIMIZE delta_table
ZORDER BY (region, sales_date); -- Improves query efficiency for frequent filters

En iyi uygulamalar ve dikkat edilmesi gerekenler

Databricks'te tablo oluştururken doğru şekilde ilerlemek için göz önünde bulundurmanız gereken bazı noktalar şunlardır:

  • Tablo adlandırma kuralları: Keşfedilebilirliği artırmak ve hataları azaltmak için her zaman açık ve tutarlı adlar kullanın. Uyumluluk sorunlarını önlemek için özel karakterlerden veya aşırı uzun adlardan kaçının.
  • Güvenlik ve izinler: Tüm veri varlıkları arasında merkezi erişim denetimi için Unity Catalog'u kullanın. Kimin veriyi görüntüleyebileceğini veya değiştirebileceğini sınırlamak için Erişim Kontrol Listeleri (ACL) uygulayın. Ayrıca hassas verileri sütun maskeleme veya satır filtreleriyle maskeleyin.
  • Yedekleme ve kurtarma: Kolay kurtarma ve zaman yolculuğu için Delta Lake'in sürüm geçmişine güvenin. Depolama maliyetleri ile kurtarma ihtiyaçlarını dengelemek için geçmiş sürümlerin saklama süresini düzenli olarak izleyin ve yönetin.
  • Yönetilen vs. harici tablolar: Yönetilen ve harici tabloları anlamak da önemlidir. Yönetilen tablolarda Databricks hem meta verileri hem de verileri yönetir. Bu, veri yaşam döngüsü yönetimini tamamen kontrol etmek istediğiniz senaryolar için idealdir. Harici tablolarda ise referans verilen veriler Databricks dışında saklanır. Bu, farklı platformlar veya sistemler arasında paylaşılabilecek veriler üzerinde kontrolü sürdürmek için kullanışlıdır.

Yaygın Hatalar ve Sorun Giderme

Artık Databricks'te tabloları yönetmeye yönelik en iyi uygulamaları ele aldığımıza göre, Databricks tablolarında sık karşılaşabileceğiniz sorunları, tipik hata mesajlarını ve çözümlerini anlatayım.

CREATE ve CREATE OR REPLACE kullanırken boş olmayan konum hataları

Belirtilen bir konumla (LOCATION ifadesi) CREATE TABLE kullanırken, dizin boş değilse şu tür bir hatayla karşılaşabilirsiniz:

Error: Cannot create table because the location is not empty.

Bu hata, CREATE TABLE komutunun belirtilen konum için boş bir dizin beklemesinden, ancak mevcut dosyaların veya meta verilerin bu gereksinimle çakışmasından kaynaklanır. 

Bu hatayı çözmek için, mevcut veri ve meta verileri üzerine yazmak üzere CREATE OR REPLACE TABLE ifadesini kullanın. Ya da CREATE TABLE ifadesini kullanmadan önce dizini manuel olarak temizleyin.

CREATE OR REPLACE TABLE delta_table
USING DELTA
LOCATION '/mnt/data/delta_table'; -- Overwrites table and files

Şema uyuşmazlığı veya belirli veri tipleriyle ilgili sorunlar

Veri ekleme veya sorgulama, şu tür şema uyuşmazlığı hatalarıyla sonuçlanabilir:

Error: Schema mismatch: Expected column type STRING, but found INT.

Hata, tablo şeması ile gelen veri tipleri arasındaki uyumsuzluktan kaynaklanabilir. Ayrıca desteklenmeyen veya belirsiz veri tipi dönüştürmeleri (ör. karmaşık iç içe tipler) de şema uyuşmazlığına yol açabilir. Bu hatayı çözmek için, tablo oluşturma sırasında şemayı doğrulayarak şema eşleşmesini zorlayın veya Delta tablolarda şema zorlamasını kullanın.

-- Enforce schema matching during table creation
CREATE TABLE schema_table (
    id INT,
    name STRING
)
USING DELTA
TBLPROPERTIES ('delta.schema.enforce' = 'true'); -- Enforces strict schema

Ayrıca, yeni sütunlar eklerken veya veri tiplerini değiştirirken şema evrimine izin vermelisiniz.

ALTER TABLE schema_table ADD COLUMNS (new_column DOUBLE);

Veri eklerken açık tip dönüşümü kullanmak da bu tür hataların giderilmesine yardımcı olur.

INSERT INTO schema_table SELECT CAST(id AS INT), CAST(name AS STRING) FROM source_table;

Identity sütunlarıyla eşzamanlı işlem sınırlamaları

Identity sütunları kullanırken, şu tür eşzamanlı işlem sorunlarıyla karşılaşabilirsiniz:

Error: Concurrent transactions detected on identity column table

Identity sütunları durumsaldır ve birden fazla işlem aynı anda veri eklemeye çalıştığında çakışmalarla karşılaşabilir. Bu hatayı gidermek için, uuid() veya monotonically_increasing_id() gibi fonksiyonlarla üretilen belirleyici vekil anahtarlar kullanarak identity sütunlarının yerine vekil anahtarlar kullanın.

CREATE TABLE better_table AS
SELECT
    monotonically_increasing_id() AS id, -- Replaces identity column
    name, department
FROM source_data;

Ayrıca, identity sütunlarına güvenmeden karmaşık ekleme ve güncelleme iş akışları için Delta Lake’in MERGE özelliğini kullanabilirsiniz.

MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;

Sonuç

Databricks'te CREATE TABLE komutu; veri yapıları tanımlamak, harici verilere bağlanmak ve sorgularla yeni veri kümeleri türetmek için çok yönlü bir araçtır. İhtiyaçlarınıza göre Databricks'te tablo oluşturma ve yönetmenin farklı sözdizimlerini anlamak önemlidir. Gördüğünüz gibi, seçebileceğiniz birkaç farklı tablo oluşturma yöntemi vardır.

Databricks’in temel kavramlarını keşfetmek isterseniz, Databricks’i İş Zekâsı (BI) için bir veri ambarı çözümü olarak öğrenmek üzere DataCamp’in Introduction to Databricks kursunu almanızı önemle tavsiye ederim. Ayrıca, Databricks sertifikalarını nasıl alabileceğinizi, kariyer faydalarını ve kariyer hedefleriniz için doğru sertifikayı nasıl seçeceğinizi öğrenmek için 2025’te Databricks Sertifikaları blog yazımıza da göz atmanızı öneririm.

Allan Ouko

Yazar

Allan Ouko

Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

Databricks CREATE TABLE SSS

Databricks'te CREATE TABLE komutunun amacı nedir?

Databricks'te CREATE TABLE komutu, kullanıcıların tablonun şemasını, veri formatını ve depolama konumunu belirtmesine olanak tanıyarak yeni bir tablo tanımlamak için kullanılır.

Yönetilen ve harici tablolar arasındaki fark nedir?

Yönetilen tablolar hem meta verileri hem de verileri Databricks içinde saklarken, harici tablolar yalnızca meta verileri saklar; veriler harici bir konumda kalır.

Harici tablo, yönetilmeyen tabloyla aynı şey midir?

Evet, harici tablolar ve yönetilmeyen tablolar Databricks'te aynı kavramı ifade eder. Meta verileri Databricks'te tutar, ancak gerçek veriler harici bir konumda kalır; böylece veri yaşam döngüsünü bağımsız olarak yönetebilirsiniz.

Sığ klon ile derin klon arasındaki fark nedir?

Sığ (shallow) klon yalnızca meta verileri kopyalar; derin (deep) klon ise hem verileri hem de meta verileri kopyalar.

Geçici tablolar nedir?

Geçici tablolar yalnızca geçerli oturum süresince var olur ve oturum sona erdiğinde otomatik olarak silinir.

Databricks'te şema evrimi nedir?

Şema evrimi, mevcut bir tablonun şemasını (ör. sütun ekleme veya değiştirme) tüm tabloyu yeniden oluşturmadan değiştirmenize olanak tanır; Delta tablolar için özellikle faydalıdır.

Konular

İlgili