(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar uma tabela Delta Transient em Databricks: passo a passo

João Barros 08 de August de 2026 4 min de leitura

Este tutorial mostra como criar e usar uma tabela Delta Transient em Databricks para armazenar dados temporários ou intermédios, reduzindo custos de armazenamento e simplificando a limpeza automática. É útil quando precisa de persistir resultados esporádicos sem afectar retenção longa nem a performance.

Pré-requisitos

  • Conta Databricks com um workspace e cluster em execução.
  • Permissões para criar tabelas Delta e gravar num container/ADLS/DBFS.
  • Conhecimentos básicos de PySpark e Delta Lake.

Passo 1: Entender o que é uma tabela Delta Transient e quando usar

Uma tabela Delta Transient é uma tabela Delta criada com a propriedade delta.isTransient=true. Indica que os dados são temporais e que não será feita retenção longa de logs de transacção, o que reduz o custo de armazenamento. Use-a para staging, ETL intermédio ou dados derivados que possam ser reprocessados.

Passo 2: Criar um pequeno DataFrame de exemplo

Antes de criar a tabela, vamos construir um exemplo de DataFrame com PySpark. Este passo é útil para testar sem dados externos.

from pyspark.sql import SparkSession
from pyspark.sql.functions import current_timestamp

spark = SparkSession.builder.getOrCreate()

data = [(1, 'Alice'), (2, 'Bruno'), (3, 'Carla')]
df = spark.createDataFrame(data, ['id', 'name']).withColumn('created_at', current_timestamp())
df.show()

Passo 3: Escrever a tabela Delta Transient para DBFS ou caminho em ADLS

Escolha um caminho no DBFS ou um caminho em ADLS/Blob. Ao gravar com format('delta'), pode definir a propriedade de tabela delta.isTransient. Aqui há duas formas: gravar como tabela gerida (CREATE TABLE) ou como ficheiros Delta num caminho e registar como tabela.

# Exemplo A: escrever para um caminho (Delta files) e depois criar tabela
path = '/tmp/delta_transient_example'
df.write.format('delta').mode('overwrite').save(path)

# Registar como tabela e marcar como transient
spark.sql(f"CREATE TABLE IF NOT EXISTS transient_db.delta_stage USING DELTA LOCATION '{path}' TBLPROPERTIES ('delta.isTransient' = 'true')")

Passo 4: Criar a tabela Delta Transient directamente com SQL

Também pode criar a tabela Delta Transient directamente com SQL, economizando passos. Isto cria os ficheiros Delta na localização padrão do metastore.

spark.sql("""
CREATE TABLE IF NOT EXISTS transient_db.delta_transient_sql (
  id INT,
  name STRING,
  created_at TIMESTAMP
)
USING DELTA
TBLPROPERTIES ('delta.isTransient' = 'true')
""")

# Inserir dados
df.createOrReplaceTempView('tmp_df')
spark.sql('INSERT INTO transient_db.delta_transient_sql SELECT * FROM tmp_df')

Passo 5: Configurar retenção de logs e limpeza

Por padrão, tabelas transient não conservam longas versões, mas convém ajustar delta.logRetentionDuration e delta.deletedFileRetentionDuration se necessário. Para limpar, use VACUUM. Note que VACUUM tem limites de segurança incorporados.

# Ajustar propriedades da tabela
spark.sql("ALTER TABLE transient_db.delta_transient_sql SET TBLPROPERTIES (
  'delta.logRetentionDuration' = 'interval 1 day',
  'delta.deletedFileRetentionDuration' = 'interval 1 day'
)")

# Executar VACUUM para remover ficheiros antigos (exemplo 1 dia)
spark.sql("VACUUM transient_db.delta_transient_sql RETAIN 24 HOURS")

Passo 6: Boas práticas e erros comuns

Use tabelas transient apenas para dados que possam ser regenerados. Erros comuns: esquecer de definir delta.isTransient=true, usar uma retenção demasiado curta antes de VACUUM (pode apagar estados necessários) e permissões insuficientes no caminho de armazenamento. Teste em ambiente de desenvolvimento antes de produção.

Verificar o resultado

Para confirmar que a tabela está criada e marcada como transient, veja as propriedades da tabela e o conteúdo. Deve ver a propriedade delta.isTransient definida e os dados inseridos.

# Ver propriedades da tabela
spark.sql("DESCRIBE EXTENDED transient_db.delta_transient_sql").show(truncate=False)

# Ler os dados
spark.sql('SELECT * FROM transient_db.delta_transient_sql').show()

Conclusão

Criar uma tabela Delta Transient em Databricks é útil para staging e ETL temporário, reduzindo custos de armazenamento e simplificando a limpeza. Próximos passos: integrar esta tabela num pipeline Databricks Workflows, testar políticas de retenção ou migrar a lógica para uma tabela DLT se quiser automação. Dica: comece com retenção conservadora e encurte gradualmente à medida que ganha confiança — qual o cenário ETL que quer melhorar com uma tabela transient?