Temporäre Tabellen in Databricks SQL und Databricks Runtime

Gilt für:markiert als ja Databricks SQL markiert als ja Databricks Runtime 18.1 und höher

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.

Wann temporäre Tabellen verwendet werden sollen

Verwenden Sie temporäre Tabellen, wenn Sie Folgendes benötigen:

  • Speichern Sie kurzlebige Zwischendaten während der explorativen Analyse oder Workflowentwicklung.
  • Verwenden Sie Abfrageergebnisse für mehrere Vorgänge innerhalb derselben Sitzung wieder.
  • Verwenden Sie eine tabellenähnliche Schnittstelle, 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 Unity Catalog verwaltete Tabellen in Azure Databricks für Delta Lake und Apache Iceberg.

Erstellen oder Ersetzen 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.

Ersetzen Sie eine temporäre Tabelle mithilfe [CREATE OR] REPLACE TEMPORARY TABLE oder [CREATE OR] REPLACE TEMP TABLE. CREATE OR ist optional. Wenn angegeben, erstellt der Befehl eine neue temporäre Tabelle, wenn keine temporäre Tabelle mit demselben Namen vorhanden ist.

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

Hinweis

  • Geben Sie die USING Klausel beim Erstellen temporärer Tabellen nicht an. Temporäre Tabellen verwenden standardmäßig das Delta Lake-Format, und die explizite Angabe eines Formats verursacht einen Fehler.
  • Für REPLACE eine temporäre Tabelle muss das Schlüsselwort TEMPORARY oder TEMP angegeben werden. Ohne das TEMPORARY Schlüsselwort wird lediglich eine permanente Tabelle durch REPLACE ersetzt.

Temporäre Tabellen abfragen

Verweisen Sie bei temporären Tabellen nur auf den Tabellennamen. 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 mit nur dem Tabellennamen auf eine Tabelle verweisen, durchsucht Azure Databricks in der folgenden Reihenfolge:

  1. Temporäre Tabellen in der aktuellen Sitzung
  2. 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 Namen im Namespace auf drei Ebenen:

-- 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 unter Name resolution.

Ä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 für temporäre Tabellen werden nicht unterstützt. Verwenden Sie MERGE INTO stattdessen filterbedingungen, oder erstellen Sie die Tabelle mit gefilterten Daten neu.

Temporäre Tabellen ablegen

Azure Databricks löscht temporäre Tabellen automatisch, wenn Ihre Sitzung endet. Wenn Sie Ihre temporären Tabellen nicht mehr benötigen, können Sie sie explizit ablegen.

-- 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 innerhalb 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 den temporären Tabellenspeicher automatisch. Die Daten bleiben im Cloudspeicher erhalten, wobei der jeweilige Speicherort abhängig vom Arbeitsbereichstyp ist:

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. Azure Databricks gibt den Speicherplatz automatisch im Hintergrund frei. Dies schließt Fälle ein, in denen die Sitzung aufgrund des Verbindungsabbruchs oder unerwarteten Herunterfahrens des Clusters beendet wird. Die Bereinigung wird in der Regel innerhalb weniger Tage abgeschlossen.

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 auflöst, finden Sie unter Query temporary tables.

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 TABLE Vorgänge werden nicht unterstützt. Ersetzen Sie die Tabelle, um das Schema einer temporären Tabelle zu ändern.
  • 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 foreachBatch Vorgä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.
  • Dedizierte Cluster: Temporäre Tabellen werden in dedizierten Clustern (einzelner Benutzer) nicht unterstützt.
  • Azure Government Regions: Temporäre Tabellen werden in Azure Government Regionen nicht unterstützt.

Weitere Ressourcen