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.

As tabelas temporárias armazenam dados durante 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. Ver tabelas geridas pelo Unity Catalog em Azure Databricks para Delta Lake e Apache Iceberg.

Criar ou substituir 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.

Substitua uma tabela temporária usando [CREATE OR] REPLACE TEMPORARY TABLE ou [CREATE OR] REPLACE TEMP TABLE. CREATE OR é opcional. Quando especificado, o comando cria uma nova tabela temporária se não existir uma tabela temporária com o mesmo nome.

-- Create an empty temporary table with a defined schema
CREATE TEMPORARY TABLE temp_customers (
  id INT,
  name STRING,
);

-- Replace the temporary table with a new defined schema
REPLACE TEMP TABLE temp_customers (
  id INT,
  name STRING,
  email STRING
);

-- Create or replace a temporary table from query results
CREATE OR REPLACE 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

  • 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.
  • Para REPLACE uma tabela temporária, deve ser especificada a palavra-chave TEMPORARY ou TEMP. Sem a TEMPORARY palavra-chave, REPLACE só substitui uma tabela permanente.

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 em Azure Databricks, veja 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 eliminá-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 do 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, com a localização específica dependendo do tipo de espaço de trabalho:

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. Isto inclui casos em que a sessão termina devido a desconexão ou desligamento inesperado do cluster. A limpeza normalmente termina em poucos dias.

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 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, substitua 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í