Pular para o conteúdo principal

Mesas temporárias

Aplica-se a: Sim, marcado como certo Databricks SQL

info

Visualização

Este recurso está em Pré-visualização Pública. Você pode confirmar a inscrição na pré-visualização na página de Pré-visualizações . Veja as prévias do Gerenciador Databricks.

Esta página descreve como usar tabelas temporárias para armazenamento e análise de dados intermediários com escopo de sessão no SQL warehouse compute.

As tabelas temporárias armazenam dados durante a duração de uma sessão do Databricks. Utilize tabelas temporárias para materializar resultados intermediários para análise exploratória ou pipeline de dados SQL sem criar tabelas permanentes em seu catálogo.

As tabelas temporárias estão disponíveis apenas no compute SQL warehouse . Os compute clássica e compute serverless ainda não são suportados.

Quando usar tabelas temporárias

Utilize tabelas temporárias quando precisar armazenar dados intermediários de curta duração durante análises exploratórias ou desenvolvimento de fluxo de trabalho, reutilizar resultados de consultas em várias operações dentro da mesma sessão ou trabalhar com uma interface semelhante a uma tabela sem adicionar objetos ao seu espaço de nomes de catálogo.

Se os seus dados precisarem persistir além da sessão atual ou precisarem ser compartilhados com outros usuários ou trabalhos, use uma tabela permanente Unity Catalog . Consulte Unity Catalog para gerenciar tabelas no Databricks para Delta Lake e Apache Iceberg.

Criar uma tabela temporária

Crie uma tabela temporária usando a sintaxe CREATE TEMPORARY TABLE ou CREATE TEMP TABLE . Você pode criar uma tabela vazia com um esquema definido ou criar uma tabela a partir dos resultados de uma consulta.

SQL
-- 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);
nota
  • CREATE OR REPLACE TEMP TABLE A sintaxe ainda não é suportada. Para substituir uma tabela temporária, primeiro exclua-a e depois recrie-a.
  • Não especifique a cláusula USING ao criar tabelas temporárias. As tabelas temporárias usam o formato Delta por default, e especificar explicitamente um formato causa um erro.

Consultar tabelas temporárias

Faça referência a tabelas temporárias usando um nome de parte única. Não especifique um catálogo ou esquema.

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

Ao referenciar uma tabela com um nome de uma única parte, o Databricks realiza a pesquisa na seguinte ordem:

  1. Mesas temporárias na sessão atual
  2. 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 na sua sessão. Para referenciar explicitamente uma tabela permanente que tenha o mesmo nome que uma tabela temporária, use um nome totalmente qualificado de três partes:

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

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

Para obter mais informações sobre resolução de nomes no Databricks, consulte Resolução de nomes.

Modificar tabelas temporárias

Você pode inserir, atualizar e merge dados em tabelas temporárias usando operações DML padrão.

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

DELETE FROM As operações em tabelas temporárias ainda não são suportadas. Use MERGE INTO com condições de filtragem ou recrie a tabela com os dados filtrados.

Mesas temporárias de desmontagem

O Databricks exclui automaticamente as tabelas temporárias quando sua sessão termina, mas você pode excluí-las explicitamente se não precisar mais delas.

SQL
-- 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 apenas dentro da sessão do Databricks onde você as cria. A duração máxima é de sete dias a partir da criação da sessão. As mesas temporárias tornam-se inacessíveis quando a sessão termina ou após sete dias, o que ocorrer primeiro. Esses limites se aplicam a sessões de Notebook, Editor SQL , Job e JDBC/ODBC .

Armazenamento e limpeza

Databricks gerencia automaticamente o armazenamento temporário de tabelas. Os dados são armazenados na cloud , de forma semelhante às tabelas gerenciadas Unity Catalog . Quando uma tabela temporária se torna inacessível (quando a sessão termina ou o limite de sete dias é atingido), você não poderá mais consultar os dados. O Databricks recupera automaticamente o espaço de armazenamento em segundo plano, geralmente dentro de alguns dias. A limpeza ocorre automaticamente mesmo em caso de desconexão ou desligamento inesperado do cluster.

Isolamento e privilégios

Qualquer usuário pode criar tabelas temporárias. Você não precisa de privilégios CREATE TABLE em um catálogo ou esquema no Unity Catalog.

Tabelas temporárias proporcionam isolamento em nível de sessão. Cada tabela temporária existe apenas 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 que haja conflito. Para obter detalhes sobre como o Databricks resolve os nomes das tabelas, consulte Consultar tabelas temporárias.

As tabelas temporárias compartilham o mesmo espaço de nomes que as visualizações temporárias. Não é possível criar uma tabela temporária e uma view 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 : operações ALTER TABLE não são suportadas. Para modificar o esquema de uma tabela temporária, exclua e recrie a tabela.
  • Clonagem : A clonagem superficial e profunda não são suportadas.
  • viagem do tempo : consultas de viagem do tempo não são suportadas.
  • transmissão : Você não pode usar tabelas temporárias em consultas de transmissão (por exemplo, em foreachBatch operações).
  • Suporte à API : Somente APIs SQL são suportadas. APIs DataFrame não são suportadas.
  • Acesso multiusuárioNotebook : Apenas um usuário pode interagir com tabelas temporárias em uma sessão do Notebook. Um segundo usuário não pode ler, escrever ou criar tabelas temporárias na mesma sessão.

O que vem a seguir?