Partilhar via


Tabelas temporárias

Aplica-se a:sim marcado Databricks SQL

Importante

Este recurso está no Public Preview.

Esta página descreve como usar tabelas temporárias para armazenamento e análise intermédia de dados com âmbito de sessão na computação SQL warehouse.

Tabelas temporárias armazenam dados durante toda a duração de uma sessão Azure Databricks. Use tabelas temporárias para materializar resultados intermédios para análises exploratórias ou pipelines de dados SQL sem criar tabelas permanentes no seu catálogo.

As tabelas temporárias estão disponíveis apenas no SQL warehouse compute. A computação clássica e a computação serverless ainda não são suportadas.

Quando usar tabelas temporárias

Use tabelas temporárias quando precisar de armazenar dados intermédios de curta duração durante análises exploratórias ou desenvolvimento de fluxos de trabalho, reutilizar resultados de consultas em múltiplas operações dentro da mesma sessão, ou trabalhar com uma interface semelhante a uma tabela sem adicionar objetos ao namespace do seu catálogo.

Se os seus dados precisarem de persistir para além da sessão atual ou tiverem de ser partilhados com outros utilizadores ou trabalhos, use em vez disso uma tabela permanente do Catálogo Unity. Consulte Tabelas gerenciadas do Catálogo Unity no Azure 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. Pode criar uma tabela vazia com um esquema definido ou criar uma tabela a partir dos 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 TABLE A sintaxe ainda não é suportada. Para substituir uma mesa temporária, retira-a primeiro e depois recria-a.
  • Não especifique a USING cláusula ao criar tabelas temporárias. Tabelas temporárias usam o formato Delta por defeito, e especificar explicitamente um formato causa um erro.

Consultar tabelas temporárias

Referenciar tabelas temporárias usando um nome de uma única parte. Não especifiquem 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 faz referência a uma tabela com um nome de uma única parte, o Azure Databricks pesquisa pela seguinte ordem:

  1. Tabelas temporárias na sessão atual
  2. Tabelas permanentes no esquema atual

Se criar uma tabela temporária com o mesmo nome de uma tabela permanente existente, a tabela temporária tem precedência dentro da sua sessão. Para referenciar explicitamente uma tabela permanente que tenha o mesmo nome que uma tabela temporária, use um nome totalmente qualificado em três partes:

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

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

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

Modificar tabelas temporárias

Pode inserir, atualizar e fundir 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 As 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 em vez disso.

Eliminar tabelas temporárias

O Azure Databricks elimina automaticamente tabelas temporárias quando a tua sessão termina, mas podes retirá-las explicitamente se já não precisares 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 apenas dentro da sessão Azure Databricks onde as crias. A duração máxima é de sete dias desde a criação da sessão. As tabelas temporárias tornam-se inacessíveis quando a sessão termina ou após sete dias, o que acontecer primeiro. Estes limites aplicam-se a notebooks, SQL Editor, jobs e sessões JDBC/ODBC.

Armazenamento e limpeza

O Azure Databricks gere automaticamente o armazenamento temporário de tabelas. Os dados persistem no armazenamento na cloud, semelhante às tabelas geridas pelo Unity Catalog. Quando uma tabela temporária se torna inacessível (quando a sessão termina ou se atinge o limite de sete dias), já não pode consultar os dados. O Azure Databricks recupera automaticamente o armazenamento em segundo plano, normalmente em poucos dias. A limpeza acontece automaticamente mesmo com desconexão ou desligamento inesperado do cluster.

Isolamento e privilégios

Qualquer utilizador pode criar tabelas temporárias. Não precisas de ter privilégios num catálogo ou esquema no Unity Catalog.

As tabelas temporárias proporcionam isolamento ao nível da sessão. Cada tabela temporária existe apenas dentro da sessão que a criou. Nenhum outro utilizador pode ler, modificar ou detetar a existência das suas tabelas temporárias.

Pode criar uma tabela temporária com o mesmo nome de uma tabela permanente existente sem colisão. Para detalhes sobre como o Azure Databricks resolve nomes de tabelas, veja Consultar tabelas temporárias.

As tabelas temporárias partilham um namespace com vistas temporárias. Não podes criar uma tabela temporária e uma vista 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 TABLE operações não são suportadas. Para modificar o esquema de uma tabela temporária, descarte e recrie a tabela.
  • Clonagem: Clonagem superficial e profunda não são suportadas.
  • Viagem no tempo: Consultas de viagem no tempo não são suportadas.
  • Streaming: Não pode usar tabelas temporárias em consultas de streaming (em operações, por exemplo, foreachBatch).
  • Suporte a API: Apenas APIs SQL são suportadas. As APIs DataFrame não são suportadas.
  • Acesso multiutilizador do caderno: Apenas um utilizador pode interagir com tabelas temporárias numa sessão do caderno. Um segundo utilizador não pode ler, escrever ou criar tabelas temporárias na mesma sessão.

O que vem por aí