Aracılığıyla paylaş


Geçici tablolar

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL

Önemli

Bu özellik Genel Önizleme aşamasındadır.

Bu sayfada, sql ambarı işlemlerinde oturum kapsamlı ara veri depolama ve analiz için geçici tabloların nasıl kullanılacağı açıklanmaktadır.

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 yalnızca SQL ambarı işlemlerinde kullanılabilir. Klasik işlem ve sunucusuz işlem henüz desteklenmiyor.

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

Keşif analizi veya iş akışı geliştirme sırasında kısa süreli ara verileri depolamanız, aynı oturumdaki birden çok işlemde sorgu sonuçlarını yeniden kullanmanız veya katalog ad alanınıza nesne eklemeden tablo benzeri bir arabirimle çalışmanız gerektiğinde geçici tabloları 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. Azure Databricks'te Delta Lake ve Apache Iceberg için Unity Kataloğu tarafından yönetilen tablolar.

Geçici tablo oluşturma

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.

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

-- Create a temporary table from query results
CREATE 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ı

  • CREATE OR REPLACE TEMP TABLE söz dizimi henüz desteklenmiyor. Geçici bir tabloyu değiştirmek için önce silin ve sonra yeniden oluşturun.
  • Geçici tablolar oluştururken yan tümcesini USING belirtmeyin. Geçici tablolar varsayılan olarak Delta biçimini kullanır ve açıkça biçim belirtilmesi hataya neden olur.

Geçici tabloları sorgulama

Tek parçalı bir ad 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;

Tek parçalı bir adla bir tabloya referans verdiğinizde, 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 tabloyla aynı ada sahip kalıcı bir tabloya açıkça başvurmak için tam üç parçalı bir ad kullanın:

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

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

Azure Databricks'te ad çözümleme hakkında daha fazla bilgi için bkz. Ad çözümleme.

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 henüz geçici tablolar için desteklenmiyor. 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, ancak 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, Unity Kataloğu yönetilen tablolarına benzer şekilde bulut depolamada kalır. 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 genellikle birkaç gün içinde arka planda depolamayı otomatik olarak geri alır. Temizleme, bağlantı kesilmesi veya beklenmeyen küme kapatma işlemleriyle bile otomatik olarak gerçekleşir.

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'in tablo adlarını nasıl çözümlediğinin ayrıntıları için bkz. Geçici tabloları sorgulama.

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 bırakın ve yeniden oluşturun.
  • 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.

Sırada ne var?