Como criar uma tabela Delta Transient em Databricks: passo a passo
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?