Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Importante
Questa funzionalità è in Anteprima Pubblica.
Questa pagina descrive come usare tabelle temporanee per l'archiviazione e l'analisi dei dati intermedi con ambito sessione nel calcolo di SQL Warehouse.
Le tabelle temporanee archiviano i dati per la durata di una sessione di Azure Databricks. Usare tabelle temporanee per materializzare i risultati intermedi per l'analisi esplorativa o le pipeline di dati SQL senza creare tabelle permanenti nel catalogo.
Le tabelle temporanee sono disponibili solo nel calcolo di SQL Warehouse. Le risorse di calcolo classiche e le risorse di calcolo serverless non sono ancora supportate.
Quando usare tabelle temporanee
Usare tabelle temporanee quando è necessario archiviare dati intermedi di breve durata durante l'analisi esplorativa o lo sviluppo del flusso di lavoro, riutilizzare i risultati delle query tra più operazioni nella stessa sessione o usare un'interfaccia simile a una tabella senza aggiungere oggetti allo spazio dei nomi del catalogo.
Se i dati devono rimanere persistenti oltre la sessione corrente o devono essere condivisi con altri utenti o processi, usare invece una tabella del catalogo Unity permanente. Vedere Tabelle gestite di Unity Catalog in Azure Databricks per Delta Lake e Apache Iceberg.
Creare una tabella temporanea
Creare una tabella temporanea utilizzando la sintassi CREATE TEMPORARY TABLE o CREATE TEMP TABLE. È possibile creare una tabella vuota con uno schema definito o creare una tabella dai risultati della query.
-- 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);
Annotazioni
-
CREATE OR REPLACE TEMP TABLEla sintassi non è ancora supportata. Per sostituire una tabella temporanea, eliminarla prima e quindi ricrearla. - Non specificare la clausola
USINGdurante la creazione di tabelle temporanee. Le tabelle temporanee usano il formato Delta per impostazione predefinita e specificando in modo esplicito un formato genera un errore.
Query tabelle temporanee
Fare riferimento a tabelle temporanee usando un nome a parte singola. Non specificare un catalogo o uno 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;
Quando si fa riferimento a una tabella con un nome a parte singola, Azure Databricks cerca nell'ordine seguente:
- Tabelle temporanee nella sessione corrente
- Tabelle permanenti nello schema corrente
Se si crea una tabella temporanea con lo stesso nome di una tabella permanente esistente, la tabella temporanea ha la precedenza all'interno della sessione. Per fare riferimento in modo esplicito a una tabella permanente con lo stesso nome di una tabella temporanea, usare un nome completo in tre parti:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Per altre informazioni sulla risoluzione dei nomi in Azure Databricks, vedere Risoluzione dei nomi.
Modificare le tabelle temporanee
È possibile inserire, aggiornare e unire dati in tabelle temporanee usando operazioni DML standard.
-- 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 *;
Annotazioni
DELETE FROM le operazioni non sono ancora supportate per le tabelle temporanee. Usare MERGE INTO con condizioni di filtro o ricreare la tabella con dati filtrati.
Eliminare tabelle temporanee
Azure Databricks elimina automaticamente le tabelle temporanee al termine della sessione, ma è possibile eliminarle in modo esplicito se non sono più necessarie.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Limiti relativi al ciclo di vita e al tempo
Le tabelle temporanee esistono solo all'interno della sessione di Azure Databricks in cui vengono create. La durata massima è di sette giorni dalla creazione della sessione. Le tabelle temporanee diventano inaccessibili quando la sessione termina o dopo sette giorni. Questi limiti si applicano a notebook, editor SQL, processi e sessioni JDBC/ODBC.
Archiviazione e pulizia
Azure Databricks gestisce automaticamente l'archiviazione tabelle temporanee. I dati vengono mantenuti nell'archiviazione cloud, in modo analogo alle tabelle gestite di Unity Catalog. Quando una tabella temporanea diventa inaccessibile (quando la sessione termina o viene raggiunto il limite di sette giorni), non è più possibile eseguire query sui dati. Azure Databricks recupera automaticamente l'archiviazione in background, in genere entro pochi giorni. La pulizia viene eseguita automaticamente anche con la disconnessione o l'arresto imprevisto del cluster.
Isolamento e privilegi
Qualsiasi utente può creare tabelle temporanee. Non sono necessari CREATE TABLE privilegi per un catalogo o uno schema in Unity Catalog.
Le tabelle temporanee forniscono l'isolamento a livello di sessione. Ogni tabella temporanea esiste solo all'interno della sessione che l'ha creata. Nessun altro utente può leggere, modificare o rilevare l'esistenza delle tabelle temporanee.
È possibile creare una tabella temporanea con lo stesso nome di una tabella permanente esistente senza conflitti. Per informazioni dettagliate su come Azure Databricks risolve i nomi delle tabelle, vedere Eseguire query sulle tabelle temporanee.
Le tabelle temporanee condividono uno spazio dei nomi con viste temporanee. Non è possibile creare sia una tabella temporanea che una visualizzazione temporanea con lo stesso nome nella stessa sessione.
Limitazioni
Le tabelle temporanee presentano le limitazioni seguenti:
-
Modifiche dello schema:
ALTER TABLEle operazioni non sono supportate. Per modificare lo schema di una tabella temporanea, eliminare e ricreare la tabella. - Clonazione: la clonazione superficiale e profonda non è supportata.
- Tempo di viaggio: le query di spostamento del tempo non sono supportate.
-
Streaming: non è possibile usare tabelle temporanee nelle query di streaming, ad esempio nelle
foreachBatchoperazioni. - Supporto API: sono supportate solo le API SQL. Le API del dataframe non sono supportate.
- Accesso multiutente notebook: solo un utente può interagire con le tabelle temporanee in una sessione del notebook. Un secondo utente non può leggere, scrivere o creare tabelle temporanee nella stessa sessione.