Bagikan melalui


Tabel sementara

Berlaku untuk:centang ditandai ya Databricks SQL

Penting

Fitur ini ada di Pratinjau Umum.

Halaman ini menjelaskan cara menggunakan tabel sementara untuk penyimpanan dan analisis data menengah yang dilingkup sesi pada komputasi gudang SQL.

Tabel sementara menyimpan data selama durasi sesi Azure Databricks. Gunakan tabel sementara untuk mewujudkan hasil menengah untuk analisis eksploratif atau alur data SQL tanpa membuat tabel permanen di katalog Anda.

Tabel sementara hanya tersedia di komputasi gudang SQL. Komputasi klasik dan komputasi tanpa server belum didukung.

Kapan menggunakan tabel sementara

Gunakan tabel sementara saat Anda perlu menyimpan data perantara berumur pendek selama analisis eksplorasi atau pengembangan alur kerja, menggunakan kembali hasil kueri di beberapa operasi dalam sesi yang sama, atau bekerja dengan antarmuka seperti tabel tanpa menambahkan objek ke namespace katalog Anda.

Jika data Anda perlu bertahan di luar sesi saat ini atau harus dibagikan dengan pengguna atau pekerjaan lain, gunakan tabel Unity Catalog permanen sebagai gantinya. Lihat Tabel terkelola Unity Catalog di Azure Databricks untuk Delta Lake dan Apache Iceberg.

Membuat tabel sementara

Buat tabel sementara menggunakan CREATE TEMPORARY TABLE atau CREATE TEMP TABLE sintaks. Anda bisa membuat tabel kosong dengan skema yang ditentukan atau membuat tabel dari hasil kueri.

-- 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);

Nota

  • CREATE OR REPLACE TEMP TABLE sintaksnya belum didukung. Untuk mengganti tabel sementara, hapus terlebih dahulu lalu buat ulang.
  • Jangan tentukan USING klausa saat membuat tabel sementara. Tabel sementara menggunakan format Delta secara default, dan secara eksplisit menentukan format menyebabkan kesalahan.

Mengkueri tabel sementara

Mereferensikan tabel sementara menggunakan nama bagian tunggal. Jangan tentukan katalog atau skema.

-- 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;

Saat Anda mereferensikan tabel dengan nama bagian tunggal, Azure Databricks mencari dalam urutan berikut:

  1. Tabel sementara dalam sesi saat ini
  2. Tabel permanen dalam skema saat ini

Jika Anda membuat tabel sementara dengan nama yang sama dengan tabel permanen yang ada, tabel sementara lebih diutamakan dalam sesi Anda. Untuk secara eksplisit mereferensikan tabel permanen yang memiliki nama yang sama dengan tabel sementara, gunakan nama tiga bagian yang sepenuhnya memenuhi syarat:

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

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

Untuk informasi selengkapnya tentang resolusi nama di Azure Databricks, lihat Resolusi nama.

Mengubah tabel sementara

Anda dapat menyisipkan, memperbarui, dan menggabungkan data ke dalam tabel sementara menggunakan operasi DML standar.

-- 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 *;

Nota

Operasi DELETE FROM belum didukung untuk tabel sementara. Gunakan MERGE INTO dengan kondisi pemfilteran atau buat ulang tabel dengan data yang difilter sebagai gantinya.

Menghilangkan tabel sementara

Azure Databricks secara otomatis menghilangkan tabel sementara saat sesi Anda berakhir, tetapi Anda dapat secara eksplisit menghilangkannya jika Anda tidak lagi membutuhkannya.

-- Drop a temporary table
DROP TEMP TABLE temp_customers;

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

Siklus hidup dan batas waktu

Tabel sementara hanya ada dalam sesi Azure Databricks tempat Anda membuatnya. Masa pakai maksimum adalah tujuh hari dari pembuatan sesi. Tabel sementara menjadi tidak dapat diakses ketika sesi berakhir atau setelah tujuh hari, mana pun yang lebih dulu. Batas ini berlaku untuk notebook, Editor SQL, pekerjaan, dan sesi JDBC/ODBC.

Penyimpanan dan pembersihan

Azure Databricks secara otomatis mengelola penyimpanan tabel sementara. Data bertahan di penyimpanan cloud, mirip dengan tabel terkelola Unity Catalog. Ketika tabel sementara menjadi tidak dapat diakses (ketika sesi berakhir atau batas tujuh hari tercapai), Anda tidak dapat lagi mengkueri data. Azure Databricks secara otomatis mengklaim kembali penyimpanan di latar belakang, biasanya dalam beberapa hari. Pembersihan terjadi secara otomatis bahkan saat terputus atau dengan pemadaman kluster yang tidak terduga.

Isolasi dan hak istimewa

Setiap pengguna dapat membuat tabel sementara. Anda tidak memerlukan CREATE TABLE hak istimewa pada katalog atau skema di Katalog Unity.

Tabel sementara menyediakan isolasi tingkat sesi. Setiap tabel sementara hanya ada dalam sesi yang membuatnya. Tidak ada pengguna lain yang dapat membaca, memodifikasi, atau mendeteksi keberadaan tabel sementara Anda.

Anda dapat membuat tabel sementara dengan nama yang sama dengan tabel permanen yang ada tanpa tabrakan. Untuk detail tentang cara Azure Databricks mengatasi nama tabel, lihat Kueri tabel sementara.

Tabel sementara berbagi namespace dengan tampilan sementara. Anda tidak dapat membuat tabel sementara dan tampilan sementara dengan nama yang sama dalam sesi yang sama.

Keterbatasan

Tabel sementara memiliki batasan berikut:

  • Modifikasi skema: ALTER TABLE operasi tidak didukung. Untuk mengubah skema tabel sementara, letakkan dan buat ulang tabel.
  • Kloning: Kloning dangkal dan dalam tidak didukung.
  • Perjalanan waktu: Kueri perjalanan waktu tidak didukung.
  • Streaming: Anda tidak dapat menggunakan tabel sementara dalam kueri streaming (misalnya, dalam foreachBatch operasi).
  • Dukungan API: Hanya API SQL yang didukung. API DataFrame tidak didukung.
  • Akses multi-pengguna buku catatan: Hanya satu pengguna yang bisa berinteraksi dengan tabel sementara dalam sesi buku catatan. Pengguna kedua tidak dapat membaca, menulis, atau membuat tabel sementara dalam sesi yang sama.

Apa selanjutnya