Delen via


Tijdelijke tabellen

Van toepassing op:aangevinkt als ja Databricks SQL

Belangrijk

Deze functie bevindt zich in openbare preview-versie.

Op deze pagina wordt beschreven hoe u tijdelijke tabellen gebruikt voor opslag en analyse van tussenliggende gegevens in sessiebereik op SQL Warehouse Compute.

In tijdelijke tabellen worden gegevens opgeslagen voor de duur van een Azure Databricks-sessie. Gebruik tijdelijke tabellen om tussenliggende resultaten te materialiseren voor verkennende analyse of SQL-gegevenspijplijnen zonder permanente tabellen in uw catalogus te maken.

Tijdelijke tabellen zijn alleen beschikbaar op SQL Warehouse Compute. Klassieke berekeningen en serverloze berekeningen worden nog niet ondersteund.

Wanneer tijdelijke tabellen gebruiken

Gebruik tijdelijke tabellen wanneer u kortstondige tussenliggende gegevens wilt opslaan tijdens verkennende analyse of werkstroomontwikkeling, queryresultaten hergebruiken voor meerdere bewerkingen binnen dezelfde sessie of werken met een tabelachtige interface zonder objecten toe te voegen aan uw catalogusnaamruimte.

Als uw gegevens buiten de huidige sessie moeten blijven bestaan of moeten worden gedeeld met andere gebruikers of taken, gebruikt u in plaats daarvan een permanente Unity Catalog-tabel. Zie Unity Catalog-beheerde tabellen in Azure Databricks voor Delta Lake en Apache Iceberg.

Een tijdelijke tabel maken

Maak een tijdelijke tabel met behulp van CREATE TEMPORARY TABLE of CREATE TEMP TABLE syntaxis. U kunt een lege tabel maken met een gedefinieerd schema of een tabel maken op basis van queryresultaten.

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

Opmerking

  • CREATE OR REPLACE TEMP TABLE syntaxis wordt nog niet ondersteund. Als u een tijdelijke tabel wilt vervangen, zet u deze eerst neer en maakt u deze opnieuw.
  • Specificeer de USING clausule niet bij het aanmaken van tijdelijke tabellen. Tijdelijke tabellen gebruiken standaard de Delta-indeling en het expliciet opgeven van een indeling veroorzaakt een fout.

Tijdelijke tabellen opvragen

Verwijs naar tijdelijke tabellen met een enkelvoudige naam. Geef geen catalogus of schema op.

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

Wanneer u naar een tabel met een enkele naam verwijst, zoekt Azure Databricks in de volgende volgorde:

  1. Tijdelijke tabellen in de huidige sessie
  2. Permanente tabellen in het huidige schema

Als u een tijdelijke tabel met dezelfde naam als een bestaande permanente tabel maakt, heeft de tijdelijke tabel voorrang binnen uw sessie. Als u expliciet wilt verwijzen naar een permanente tabel met dezelfde naam als een tijdelijke tabel, gebruikt u een volledig gekwalificeerde driedelige naam:

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

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

Zie Naamomzetting voor meer informatie over naamomzetting in Azure Databricks.

Tijdelijke tabellen wijzigen

U kunt gegevens invoegen, bijwerken en samenvoegen in tijdelijke tabellen met behulp van standaard DML-bewerkingen.

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

Opmerking

DELETE FROM bewerkingen worden nog niet ondersteund voor tijdelijke tabellen. Gebruik MERGE INTO in plaats daarvan met filtervoorwaarden of maak de tabel opnieuw met gefilterde gegevens.

Tijdelijke tabellen verwijderen

Azure Databricks verwijdert automatisch tijdelijke tabellen wanneer uw sessie afloopt, maar u kunt ze expliciet verwijderen als u ze niet meer nodig hebt.

-- Drop a temporary table
DROP TEMP TABLE temp_customers;

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

Levenscyclus- en tijdslimieten

Tijdelijke tabellen bestaan alleen in de Azure Databricks-sessie waar u ze maakt. De maximale levensduur is zeven dagen na het maken van een sessie. Tijdelijke tabellen worden ontoegankelijk wanneer de sessie eindigt of na zeven dagen, afhankelijk van wat het eerst voorkomt. Deze limieten zijn van toepassing op notebooks, SQL Editor, taken en JDBC-/ODBC-sessies.

Opslag en opruimen

Azure Databricks beheert automatisch tijdelijke tabelopslag. Gegevens blijven behouden in cloudopslag, vergelijkbaar met beheerde tabellen in Unity Catalog. Wanneer een tijdelijke tabel ontoegankelijk wordt (wanneer de sessie eindigt of de limiet van zeven dagen is bereikt), kunt u geen query's meer uitvoeren op de gegevens. Azure Databricks maakt automatisch opslag op de achtergrond vrij, meestal binnen een paar dagen. Opschonen gebeurt automatisch zelfs bij het verbreken van de verbinding of onverwacht afsluiten van het cluster.

Isolatie en bevoegdheden

Elke gebruiker kan tijdelijke tabellen maken. U hebt geen bevoegdheden nodig CREATE TABLE voor een catalogus of schema in Unity Catalog.

Tijdelijke tabellen bieden isolatie op sessieniveau. Elke tijdelijke tabel bestaat alleen binnen de sessie die deze heeft gemaakt. Geen andere gebruikers kunnen het bestaan van uw tijdelijke tabellen lezen, wijzigen of detecteren.

U kunt een tijdelijke tabel maken met dezelfde naam als een bestaande permanente tabel zonder conflicten. Zie Tijdelijke tabellen opvragen voor meer informatie over hoe Azure Databricks tabelnamen oplost.

Tijdelijke tabellen delen een naamruimte met tijdelijke weergaven. U kunt niet zowel een tijdelijke tabel als een tijdelijke weergave met dezelfde naam in dezelfde sessie maken.

Beperkingen

Tijdelijke tabellen hebben de volgende beperkingen:

  • Schemawijzigingen: ALTER TABLE bewerkingen worden niet ondersteund. Als u het schema van een tijdelijke tabel wilt wijzigen, verwijdert u de tabel en maakt u deze opnieuw.
  • Klonen: Oppervlakkige en diepe klonen worden niet ondersteund.
  • Tijdreisvragen worden niet ondersteund.
  • Streaming: U kunt geen tijdelijke tabellen gebruiken in streamingquery's (bijvoorbeeld in foreachBatch bewerkingen).
  • API-ondersteuning: alleen SQL-API's worden ondersteund. DataFrame-API's worden niet ondersteund.
  • Toegang tot notitieblok voor meerdere gebruikers: slechts één gebruiker kan communiceren met tijdelijke tabellen in een notebooksessie. Een tweede gebruiker kan in dezelfde sessie geen tijdelijke tabellen lezen, schrijven of maken.

Wat is de volgende stap?