Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Importante
Esse recurso está em Visualização Pública.
Esta página descreve como usar tabelas temporárias para armazenamento e análise de dados intermediários com escopo de sessão na computação do SQL Warehouse.
Tabelas temporárias armazenam dados durante uma sessão do Azure Databricks. Use tabelas temporárias para materializar resultados intermediários para análise exploratória ou pipelines de dados SQL sem criar tabelas permanentes em seu catálogo.
As tabelas temporárias estão disponíveis somente na computação do SQL Warehouse. A computação clássica e a computação sem servidor ainda não têm suporte.
Quando usar tabelas temporárias
Use tabelas temporárias quando precisar armazenar dados intermediários de curta duração durante a análise exploratória ou o desenvolvimento de fluxo de trabalho, reutilizar os resultados da consulta em várias operações na mesma sessão ou trabalhar com uma interface semelhante a uma tabela sem adicionar objetos ao namespace do catálogo.
Se os dados precisarem persistir além da sessão atual ou precisarem ser compartilhados com outros usuários ou trabalhos, use uma tabela permanente do Catálogo do Unity. Consulte tabelas gerenciadas do Unity Catalog no Azure Databricks para Delta Lake e Apache Iceberg.
Criar uma tabela temporária
Crie uma tabela temporária usando CREATE TEMPORARY TABLE ou CREATE TEMP TABLE sintaxe. Você pode criar uma tabela vazia com um esquema definido ou criar uma tabela com base nos resultados da consulta.
-- 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);
Observação
-
CREATE OR REPLACE TEMP TABLEA sintaxe ainda não tem suporte. Para substituir uma tabela temporária, exclua-a primeiro e recrie-a. - Não especifique a
USINGcláusula ao criar tabelas temporárias. Tabelas temporárias usam o formato Delta por padrão e especificar explicitamente um formato causa um erro.
Consultar tabelas temporárias
Referencie tabelas temporárias usando um nome de parte única. Não especifique um catálogo ou esquema.
-- 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 você faz referência a uma tabela com um nome de parte única, o Azure Databricks pesquisa na seguinte ordem:
- Tabelas temporárias na sessão atual
- Tabelas permanentes no esquema atual
Se você criar uma tabela temporária com o mesmo nome de uma tabela permanente existente, a tabela temporária terá precedência dentro de sua sessão. Para referenciar explicitamente uma tabela permanente que tenha o mesmo nome de uma tabela temporária, use um nome de três partes totalmente qualificado:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Para obter mais informações sobre a resolução de nomes no Azure Databricks, consulte a resolução de nomes.
Modificar tabelas temporárias
Você pode inserir, atualizar e mesclar dados em tabelas temporárias usando operações DML padrão.
-- 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 *;
Observação
DELETE FROM operações ainda não são suportadas para tabelas temporárias. Use MERGE INTO com condições de filtragem ou recrie a tabela com dados filtrados.
Remover tabelas temporárias
O Azure Databricks descarta automaticamente as tabelas temporárias quando a sessão termina, mas você pode soltá-las explicitamente se não precisar mais delas.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Ciclo de vida e limites de tempo
As tabelas temporárias existem somente na sessão do Azure Databricks em que você as cria. O tempo de vida máximo é de sete dias a partir da criação da sessão. As tabelas temporárias ficam inacessíveis quando a sessão termina ou após sete dias, o que ocorrer primeiro. Esses limites se aplicam a notebooks, Editor de SQL, trabalhos e sessões JDBC/ODBC.
Armazenamento e limpeza
O Azure Databricks gerencia automaticamente o armazenamento temporário de tabelas. Os dados persistem no armazenamento em nuvem, semelhante às tabelas gerenciadas do Catálogo do Unity. Quando uma tabela temporária se torna inacessível (quando a sessão termina ou o limite de sete dias é atingido), você não pode mais consultar os dados. O Azure Databricks recupera automaticamente o armazenamento em segundo plano, geralmente em poucos dias. A limpeza ocorre automaticamente mesmo com a desconexão ou o desligamento inesperado do cluster.
Isolamento e privilégios
Qualquer usuário pode criar tabelas temporárias. Você não precisa de CREATE TABLE privilégios em um catálogo ou esquema no Unity Catalog.
As tabelas temporárias fornecem isolamento no nível da sessão. Cada tabela temporária existe somente dentro da sessão que a criou. Nenhum outro usuário pode ler, modificar ou detectar a existência de suas tabelas temporárias.
Você pode criar uma tabela temporária com o mesmo nome de uma tabela permanente existente sem colisão. Para obter detalhes sobre como o Azure Databricks resolve nomes de tabela, consulte tabelas temporárias de consulta.
Tabelas temporárias compartilham um namespace com exibições temporárias. Você não pode criar uma tabela temporária e uma exibição temporária com o mesmo nome na mesma sessão.
Limitações
As tabelas temporárias têm as seguintes limitações:
-
Modificações de esquema:
ALTER TABLEnão há suporte para operações. Para modificar o esquema de uma tabela temporária, remova e recrie a tabela. - Clonagem: não há suporte para clonagem superficial e profunda.
- Viagem no tempo: não há suporte para consultas de viagem no tempo.
-
Streaming: você não pode usar tabelas temporárias em consultas de streaming (por exemplo, em
foreachBatchoperações). - Suporte à API: há suporte apenas para APIs DO SQL. Não há suporte para APIs de DataFrame.
- Acesso a vários usuários do notebook: somente um usuário pode interagir com tabelas temporárias em uma sessão de notebook. Um segundo usuário não pode ler, gravar ou criar tabelas temporárias na mesma sessão.