Databricks SQL ve Databricks Runtime'daki geçici tablolar

Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 18.1 ve üzeri

Geçici tablolar, Azure Databricks oturumu süresi boyunca verileri depolar. Geçici tabloları kullanarak kataloğunuzda kalıcı tablolar oluşturmadan keşif analizi veya SQL veri işlem hatları için ara sonuçları elde edin.

Geçici tablolar ne zaman kullanılır?

Aşağıdaki durumlarda geçici tabloları kullanın:

  • Keşif analizi veya iş akışı geliştirme sırasında kısa süreli ara verileri depolayın.
  • Sorgu sonuçlarını aynı oturumdaki birden çok işlemde yeniden kullanma.
  • Katalog ad alanınıza nesne eklemeden tablo benzeri bir arabirim kullanın.

Verilerinizin geçerli oturumun ötesinde kalıcı olması veya diğer kullanıcılar veya işlerle paylaşılması gerekiyorsa, bunun yerine kalıcı bir Unity Kataloğu tablosu kullanın. Bkz. Delta Lake ve Apache Iceberg için Unity Catalog tarafından yönetilen tablolar.

Geçici tablo oluşturma veya değiştirme

Geçici bir tablo oluşturun, CREATE TEMPORARY TABLE veya CREATE TEMP TABLE söz dizimini kullanarak. Tanımlı şemayla boş bir tablo oluşturabilir veya sorgu sonuçlarından bir tablo oluşturabilirsiniz.

Geçici bir tabloyu [CREATE OR] REPLACE TEMPORARY TABLE veya [CREATE OR] REPLACE TEMP TABLE kullanarak değiştirin. CREATE OR isteğe bağlıdır. Belirtildiğinde, aynı ada sahip geçici bir tablo yoksa komut yeni bir geçici tablo oluşturur.

-- Create an empty temporary table with a defined schema
CREATE TEMPORARY TABLE temp_customers (
  id INT,
  name STRING
);

-- Replace the temporary table with a new defined schema
REPLACE TEMP TABLE temp_customers (
  id INT,
  name STRING,
  email STRING
);

-- Create or replace a temporary table from query results
CREATE OR REPLACE TEMP TABLE temp_recent_orders AS
SELECT order_id, customer_id, order_date, amount
FROM prod.sales.orders
WHERE order_date >= current_date() - INTERVAL 30 DAYS;

-- Create a temporary table using VALUES clause
CREATE TEMP TABLE temp_test_data AS
VALUES
  (9001, 101, 50.00),
  (9002, 204, 75.00),
  (9003, 101, 25.00)
AS t(order_id, customer_id, amount);

Uyarı

  • Geçici tablolar oluştururken yan tümcesini USING belirtmeyin. Geçici tablolar varsayılan olarak Delta Lake biçimini kullanır ve açıkça biçim belirtilmesi hataya neden olur.
  • Geçici REPLACE bir tabloya TEMPORARY veya TEMP anahtar sözcük belirtilmelidir. TEMPORARY anahtar sözcüğü olmadan yalnızca REPLACE kalıcı bir tablonun yerini alır.

Geçici tabloları sorgulama

Yalnızca tablo adını kullanarak geçici tablolara başvurun. Katalog veya şema belirtmeyin.

-- Query a temporary table
SELECT * FROM temp_customers;

-- Join temporary tables with permanent tables
SELECT
  c.name,
  o.order_id,
  o.amount
FROM temp_customers c
INNER JOIN temp_recent_orders o
  ON c.id = o.customer_id;

Bir tabloya yalnızca tablo adını kullanarak başvurduğunda, Azure Databricks aşağıdaki sırayla arama yapar:

  1. Geçerli oturumdaki geçici tablolar
  2. Geçerli şemadaki kalıcı tablolar

Mevcut bir kalıcı tabloyla aynı ada sahip geçici bir tablo oluşturursanız, geçici tablo oturumunuzda önceliklidir. Geçici bir tabloyla aynı ada sahip kalıcı bir tabloya açıkça başvurmak için, üç düzeyli ad alanı içinde tam nitelikli adı kullanın:

-- References temporary table (if it exists)
SELECT * FROM customers;

-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;

Azure Databricks ad çözümlemesi hakkında daha fazla bilgi için bkz. Name resolution.

Geçici tabloları değiştirme

Standart DML işlemlerini kullanarak verileri geçici tablolara ekleyebilir, güncelleştirebilir ve birleştirebilirsiniz.

-- Insert data into a temporary table
INSERT INTO temp_customers VALUES (101, 'Jane Doe', 'jane@example.com');

-- Insert from a query
INSERT INTO temp_customers
SELECT id, name, email
FROM prod.customer.active_customers
WHERE region = 'US-WEST';

-- Update rows in a temporary table
UPDATE temp_recent_orders
SET amount = amount * 0.90
WHERE customer_id = 101;

-- Merge data into a temporary table
MERGE INTO temp_customers target
USING prod.customer.new_signups source
ON target.id = source.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;

Uyarı

DELETE FROM işlemler geçici tablolar için desteklenmez. Bunun yerine filtre koşullarıyla kullanın MERGE INTO veya tabloyu filtrelenmiş verilerle yeniden oluşturun.

Geçici tabloları bırakma

Azure Databricks oturumunuz sona erdiğinde geçici tabloları otomatik olarak bırakır. Geçici tablolarınıza artık ihtiyacınız yoksa, bunları açıkça bırakabilirsiniz.

-- Drop a temporary table
DROP TEMP TABLE temp_customers;

-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;

Yaşam döngüsü ve zaman sınırları

Geçici tablolar yalnızca oluşturduğunuz Azure Databricks oturumunda bulunur. Maksimum yaşam süresi, oturum oluşturulmasından itibaren yedi gündür. Oturum sona erdiğinde veya yedi gün sonra (hangisi önce gerçekleşirse) geçici tablolara erişilemez hale gelir. Bu sınırlar not defterleri, SQL Düzenleyicisi, işler ve JDBC/ODBC oturumları için geçerlidir.

Depolama ve temizleme

Azure Databricks geçici tablo depolamayı otomatik olarak yönetir. Veriler, çalışma alanınızın türüne bağlı olarak belirli bir depolama konumuyla bulut depolamada kalır:

  • Sunucusuz çalışma alanları: Geçici tablo verileri varsayılan depolama alanında depolanır. Yönetilen hizmetler için müşteri tarafından yönetilen bir anahtar yapılandırdıysanız, geçici tablo verileri bu anahtarı kullanır. Daha fazla bilgi için bkz . Şifreleme için müşteri tarafından yönetilen anahtarlar.

Geçici bir tabloya erişilemez duruma geldiğinde (oturum sona erdiğinde veya yedi günlük sınıra ulaşıldığında), verileri artık sorgulayamayabilirsiniz. Azure Databricks arka planda depolamayı otomatik olarak geri alır. Bu, bağlantı kesilmesi veya beklenmeyen küme kapatma nedeniyle oturumun sona erdiği durumları içerir. Temizleme işlemi genellikle birkaç gün içinde tamamlar.

Yalıtım ve ayrıcalıklar

Herhangi bir kullanıcı geçici tablolar oluşturabilir. Unity Kataloğu'ndaki bir katalog veya şemada ayrıcalıklara ihtiyacınız CREATE TABLE yoktur.

Geçici tablolar oturum düzeyinde yalıtım sağlar. Her geçici tablo yalnızca tabloyu oluşturan oturum içinde bulunur. Diğer kullanıcılar geçici tablolarınızı okuyamaz, değiştiremez veya varlığını algılayamaz.

Çakışma olmadan mevcut bir kalıcı tabloyla aynı ada sahip geçici bir tablo oluşturabilirsiniz. Azure Databricks tablo adlarını nasıl çözümlediğinin ayrıntıları için bkz. Query geçici tabloları.

Geçici tablolar, geçici görünümlere sahip bir ad alanını paylaşır. Aynı oturumda hem geçici bir tablo hem de aynı ada sahip geçici bir görünüm oluşturamazsınız.

Sınırlamalar

Geçici tablolarda aşağıdaki sınırlamalar vardır:

  • Şema değişiklikleri: ALTER TABLE işlemler desteklenmez. Geçici bir tablonun şemasını değiştirmek için tabloyu değiştirin.
  • Tablo özellikleri: Geçici tablolarda (sunucusuz işlem, Databricks Runtime 18.2 ve üzeri ve Databricks SQL 2026.15 ve üzeri) yalnızca SET TBLPROPERTIES ve UNSET TBLPROPERTIES yan tümceleri desteklenir.
  • Kopyalama: Sığ ve derin kopyalama desteklenmez.
  • Zaman yolculuğu: Zaman yolculuğu sorguları desteklenmez.
  • Akış: Akış sorgularında (örneğin, işlemlerde foreachBatch ) geçici tablolar kullanamazsınız.
  • API desteği: Yalnızca SQL API'leri desteklenir. DataFrame API'leri desteklenmez.
  • Not defteri çok kullanıcılı erişimi: Bir not defteri oturumunda yalnızca bir kullanıcı geçici tablolarla etkileşimde bulunabilir. İkinci bir kullanıcı aynı oturumda geçici tablolar okuyamaz, yazamaz veya oluşturamaz.
  • Ayrılmış kümeler: Geçici tablolar Ayrılmış (tek kullanıcı) kümelerde desteklenmez.
  • Azure Kamu bölgeleri: Geçici tablolar Azure Kamu bölgelerinde desteklenmemektedir.

Ek kaynaklar