Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Von Bedeutung
Dieses Feature befindet sich in der Public Preview.
Auf dieser Seite wird beschrieben, wie temporäre Tabellen für sitzungsbezogene Zwischendatenspeicherung und -analyse für die SQL Warehouse-Berechnung verwendet werden.
Temporäre Tabellen speichern Daten für die Dauer einer Azure Databricks-Sitzung. Verwenden Sie temporäre Tabellen, um Zwischenergebnisse für explorative Analysen oder SQL-Datenpipelinen zu materialisieren, ohne permanente Tabellen in Ihrem Katalog zu erstellen.
Temporäre Tabellen sind nur auf SQL Warehouse Compute verfügbar. Die klassische und serverlose Rechenleistung wird noch nicht unterstützt.
Wann temporäre Tabellen verwendet werden sollen
Verwenden Sie temporäre Tabellen, wenn Sie kurzlebige Zwischendaten während der explorativen Analyse oder Workflowentwicklung speichern müssen, Abfrageergebnisse in mehreren Vorgängen innerhalb derselben Sitzung wiederverwenden oder mit einer tabellenähnlichen Schnittstelle arbeiten müssen, ohne dem Katalognamespace Objekte hinzuzufügen.
Wenn Ihre Daten über die aktuelle Sitzung hinaus bestehen müssen oder für andere Benutzer oder Aufträge freigegeben werden müssen, verwenden Sie stattdessen eine permanente Unity-Katalogtabelle. Siehe verwaltete Tabellen im Unity-Katalog in Azure Databricks für Delta Lake und Apache Iceberg.
Erstellen einer temporären Tabelle
Erstellen Sie eine temporäre Tabelle mithilfe CREATE TEMPORARY TABLE oder CREATE TEMP TABLE Syntax. Sie können eine leere Tabelle mit einem definierten Schema erstellen oder eine Tabelle aus Abfrageergebnissen erstellen.
-- 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);
Hinweis
- Die Syntax von
CREATE OR REPLACE TEMP TABLEwird derzeit nicht unterstützt. Wenn Sie eine temporäre Tabelle ersetzen möchten, legen Sie sie zuerst ab, und erstellen Sie sie dann neu. - Geben Sie die
USINGKlausel beim Erstellen temporärer Tabellen nicht an. Temporäre Tabellen verwenden standardmäßig das Delta-Format, und die explizite Angabe eines Formats verursacht einen Fehler.
Temporäre Tabellen abfragen
Verweisen Sie mithilfe eines einteiligen Namens auf temporäre Tabellen. Geben Sie keinen Katalog oder ein Schema an.
-- 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;
Wenn Sie auf eine Tabelle mit einem einzelteiligen Namen verweisen, sucht Azure Databricks in der folgenden Reihenfolge:
- Temporäre Tabellen in der aktuellen Sitzung
- Permanente Tabellen im aktuellen Schema
Wenn Sie eine temporäre Tabelle mit demselben Namen wie eine vorhandene permanente Tabelle erstellen, hat die temporäre Tabelle Vorrang innerhalb Ihrer Sitzung. Wenn Sie explizit auf eine permanente Tabelle verweisen möchten, die denselben Namen wie eine temporäre Tabelle hat, verwenden Sie einen vollqualifizierten dreiteiligen Namen:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Weitere Informationen zur Namensauflösung in Azure Databricks finden Sie in der Namensauflösung.
Ändern temporärer Tabellen
Sie können Daten mithilfe standardmäßiger DML-Vorgänge in temporäre Tabellen einfügen, aktualisieren und zusammenführen.
-- 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 *;
Hinweis
DELETE FROM Operationen werden für temporäre Tabellen noch nicht unterstützt. Verwenden Sie MERGE INTO stattdessen filterbedingungen, oder erstellen Sie die Tabelle mit gefilterten Daten neu.
Temporäre Tabellen ablegen
Azure Databricks legt temporäre Tabellen automatisch ab, wenn Ihre Sitzung endet, aber Sie können sie explizit ablegen, wenn Sie sie nicht mehr benötigen.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Lebenszyklus- und Zeitlimits
Temporäre Tabellen sind nur in der Azure Databricks-Sitzung vorhanden, in der Sie sie erstellen. Die maximale Lebensdauer beträgt sieben Tage ab der Sitzungserstellung. Auf temporäre Tabellen kann nicht zugegriffen werden, wenn die Sitzung endet oder nach sieben Tagen, je nachdem, was zuerst kommt. Diese Grenzwerte gelten für Notizbücher, SQL-Editor, Aufträge und ODBC-Sitzungen.
Speicher und Bereinigung
Azure Databricks verwaltet automatisch temporären Tabellenspeicher. Daten bleiben im Cloudspeicher erhalten, ähnlich wie verwaltete Tabellen im Unity-Katalog. Wenn auf eine temporäre Tabelle nicht zugegriffen werden kann (wenn die Sitzung endet oder das Sieben-Tage-Limit erreicht ist), können Sie die Daten nicht mehr abfragen. In der Regel innerhalb weniger Tage wird Speicherplatz im Hintergrund von Azure Databricks automatisch zurückgewonnen. Die Bereinigung erfolgt automatisch auch bei getrennter Verbindung oder unerwartetem Herunterfahren des Clusters.
Isolation und Berechtigungen
Jeder Benutzer kann temporäre Tabellen erstellen. Sie benötigen keine CREATE TABLE Berechtigungen für einen Katalog oder ein Schema im Unity Catalog.
Temporäre Tabellen bieten eine Isolation auf Sitzungsebene. Jede temporäre Tabelle ist nur innerhalb der Sitzung vorhanden, die sie erstellt hat. Keine anderen Benutzer können das Vorhandensein ihrer temporären Tabellen lesen, ändern oder erkennen.
Sie können eine temporäre Tabelle mit demselben Namen wie eine vorhandene permanente Tabelle ohne Kollision erstellen. Ausführliche Informationen dazu, wie Azure Databricks Tabellennamen aufgelöst, finden Sie unter Temporäre Abfragetabellen.
Temporäre Tabellen teilen einen Namespace mit temporären Ansichten. Sie können nicht sowohl eine temporäre Tabelle als auch eine temporäre Ansicht mit demselben Namen in derselben Sitzung erstellen.
Einschränkungen
Temporäre Tabellen weisen die folgenden Einschränkungen auf:
-
Schemaänderungen:
ALTER TABLEVorgänge werden nicht unterstützt. Wenn Sie das Schema einer temporären Tabelle ändern möchten, legen Sie die Tabelle ab, und erstellen Sie sie neu. - Klonen: Flaches und tiefes Klonen werden nicht unterstützt.
- Zeitreise: Zeitreiseabfragen werden nicht unterstützt.
-
Streaming: Temporäre Tabellen können in Streamingabfragen (z. B. in
foreachBatchVorgängen) nicht verwendet werden. - API-Unterstützung: Es werden nur SQL-APIs unterstützt. DataFrame-APIs werden nicht unterstützt.
- Notizbuchzugriff mit mehreren Benutzern: Nur ein Benutzer kann mit temporären Tabellen in einer Notizbuchsitzung interagieren. Ein zweiter Benutzer kann in derselben Sitzung keine temporären Tabellen lesen, schreiben oder erstellen.