Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:
Databricks SQL
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Den här sidan beskriver hur du använder tillfälliga tabeller för sessionsomfattande mellanliggande datalagring och analys av SQL-lagerberäkning.
Temporära tabeller lagrar data under en Azure Databricks-session. Använd tillfälliga tabeller för att materialisera mellanliggande resultat för undersökande analys eller SQL-datapipelines utan att skapa permanenta tabeller i katalogen.
Tillfälliga tabeller är endast tillgängliga för SQL Warehouse-beräkning. Klassisk beräkning och serverlös beräkning stöds ännu inte.
När du ska använda temporära tabeller
Använd tillfälliga tabeller när du behöver lagra kortlivade mellanliggande data under undersökande analys eller arbetsflödesutveckling, återanvända frågeresultat i flera åtgärder inom samma session eller arbeta med ett tabellliknande gränssnitt utan att lägga till objekt i katalognamnområdet.
Om dina data behöver sparas utanför den aktuella sessionen eller måste delas med andra användare eller jobb använder du en permanent Unity Catalog-tabell i stället. Se Unity Catalog-hanterade tabeller i Azure Databricks för Delta Lake och Apache Iceberg.
Skapa en tillfällig tabell
Skapa en tillfällig tabell med hjälp av CREATE TEMPORARY TABLE eller CREATE TEMP TABLE syntax. Du kan skapa en tom tabell med ett definierat schema eller skapa en tabell från frågeresultat.
-- 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);
Anmärkning
-
CREATE OR REPLACE TEMP TABLEsyntax stöds inte ännu. Om du vill ersätta en tillfällig tabell släpper du den först och återskapar den sedan. - Ange inte
USING-satsen när du skapar temporära tabeller. Temporära tabeller använder Delta-formatet som standard och att uttryckligen ange ett format orsakar ett fel.
Fråga temporära tabeller
Referera till temporära tabeller med ett endelsnamn. Ange inte en katalog eller ett schema.
-- 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;
När du refererar till en tabell med ett endelsnamn söker Azure Databricks i följande ordning:
- Temporära tabeller i den aktuella sessionen
- Permanenta tabeller i det aktuella schemat
Om du skapar en tillfällig tabell med samma namn som en befintlig permanent tabell har den tillfälliga tabellen företräde i sessionen. Om du uttryckligen vill referera till en permanent tabell som har samma namn som en tillfällig tabell använder du ett fullständigt kvalificerat namn i tre delar:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Mer information om namnmatchning i Azure Databricks finns i Namnmatchning.
Ändra temporära tabeller
Du kan infoga, uppdatera och sammanfoga data i temporära tabeller med hjälp av standardåtgärder för DML.
-- 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 *;
Anmärkning
DELETE FROM operationer stöds ännu inte för temporära tabeller. Använd MERGE INTO med filtreringsvillkor eller återskapa tabellen med filtrerade data i stället.
Ta bort temporära tabeller
Azure Databricks släpper automatiskt tillfälliga tabeller när sessionen avslutas, men du kan uttryckligen släppa dem om du inte längre behöver dem.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Livscykel och tidsgränser
Tillfälliga tabeller finns bara i Azure Databricks-sessionen där du skapar dem. Den maximala livslängden är sju dagar från det att sessionen skapades. Tillfälliga tabeller blir otillgängliga när sessionen avslutas eller efter sju dagar, beroende på vilket som inträffar först. Dessa gränser gäller för notebook-filer, SQL-redigerare, jobb och JDBC/ODBC-sessioner.
Lagring och rensning
Azure Databricks hanterar automatiskt tillfällig tabelllagring. Data bevaras i molnlagring, ungefär som Unity Catalog-hanterade tabeller. När en tillfällig tabell blir otillgänglig (när sessionen slutar eller sjudagarsgränsen nås) kan du inte längre fråga efter data. Azure Databricks återtar automatiskt lagringen i bakgrunden, vanligtvis inom några dagar. Rensning sker automatiskt även vid frånkoppling eller oväntad klusteravstängning.
Isolering och behörigheter
Alla användare kan skapa temporära tabeller. Du behöver CREATE TABLE inte behörigheter för en katalog eller ett schema i Unity Catalog.
Temporära tabeller tillhandahåller isolering på sessionsnivå. Varje tillfällig tabell finns bara i den session som skapade den. Inga andra användare kan läsa, ändra eller identifiera förekomsten av dina temporära tabeller.
Du kan skapa en tillfällig tabell med samma namn som en befintlig permanent tabell utan kollision. Mer information om hur Azure Databricks löser tabellnamn finns i Fråga temporära tabeller.
Temporära tabeller delar ett namnområde med temporära vyer. Du kan inte skapa både en tillfällig tabell och en tillfällig vy med samma namn i samma session.
Begränsningar
Temporära tabeller har följande begränsningar:
-
Schemaändringar:
ALTER TABLEoperationer stöds inte. Om du vill ändra en tillfällig tabells schema släpper du och återskapar tabellen. - Kloning: Ytlig och djup kloning stöds inte.
- Tidsresor: Frågor om tidsresor stöds inte.
-
Direktuppspelning: Du kan inte använda tillfälliga tabeller i strömmande frågor (till exempel i
foreachBatchåtgärder). - API-stöd: Endast SQL-API:er stöds. DataFrame-API:er stöds inte.
- Notebook-åtkomst för flera användare: Endast en användare kan interagera med temporära tabeller i en notebook-session. En andra användare kan inte läsa, skriva eller skapa temporära tabeller i samma session.