Migrar uma plataforma consolidada como o SAS para o Databricks pode ser desafiador, mas quando seguimos uma receita de bolo bem estruturada, tudo fica mais simples e eficiente. Nesta receita, vamos dividir o processo em duas etapas principais: migração de tabelas e migração de projetos SAS. E, como gran finale, tem um presente especial ao final para facilitar ainda mais sua jornada!
🍰 Ingredientes da nossa receita de migração:
Entendimento do ambiente atual:
- Levante todas as tabelas, processos e projetos no SAS que precisam ser migrados.
- Identifique as dependências entre tabelas e projetos.
Ferramentas certas:
- Databricks (com suporte ao formato Delta Lake).
- Conectores para os bancos de dados utilizados.
- O Databricks Assistant (vai ser nosso assistente nessa cozinha!).
Equipe preparada:
- Arquiteto de Soluções.
- Engenheiros de Dados.
- Cientistas de Dados.
👩🍳 Modo de preparo: Etapa 1 - Migração de tabelas
Assim como na preparação de um bolo, começamos pelos ingredientes básicos: as tabelas. Nesta etapa, o objetivo é migrar as tabelas do SAS para o Databricks utilizando o formato Delta, garantindo um armazenamento escalável e eficiente.
Passos:
Levante todas as tabelas que serão migradas:
Liste as tabelas existentes no SAS e identifique suas características (esquema, volume de dados, periodicidade de atualização).
Utilize o notebook parametrizado:
Para facilitar a migração, preparei um notebook especial que realiza a migração automática das tabelas do SAS para o formato Delta no Databricks.
Este notebook está totalmente parametrizado e permite configurar facilmente as conexões, nomes de tabelas e diretórios de destino.
Valide a migração:
Compare os dados migrados com os dados originais no SAS para garantir consistência e integridade.
👩🍳 Modo de preparo: Etapa 2 - Migração de projetos SAS
Agora que as tabelas estão prontas, é hora de migrar os projetos SAS. Esse passo é como adicionar a cobertura ao bolo: é aqui que os processos de ETL e os códigos SAS serão convertidos e adaptados para o Databricks.
Passos:
Liste os projetos SAS:
Identifique todos os processos e códigos SAS que precisam ser migrados. Priorize os mais críticos.
Use o Databricks Assistant para converter o código:
Pegue os códigos SAS já prontos e insira-os no Databricks Assistant.
Solicite ao Assistant que converta os códigos para SQL ou PySpark, dependendo da necessidade.
Essa funcionalidade permite transformar rapidamente o código SAS em um formato que o Databricks compreenda, reduzindo drasticamente o tempo de migração.
Implemente e teste os projetos migrados:
Execute os códigos convertidos e valide os resultados.
Certifique-se de que os novos processos estão produzindo os mesmos resultados esperados no SAS.
🎂 Gran Finale: Presente especial!
Para ajudar ainda mais nessa jornada de migração, preparei um notebook pronto e totalmente parametrizado para migrar as tabelas do SAS para o formato Delta. Esse notebook permite:
- Configurar rapidamente a fonte de dados SAS e o destino no Databricks.
- Executar a migração de forma automática e eficiente.
- Garantir que todas as tabelas estejam no formato Delta, prontas para serem utilizadas nos novos projetos.
Quer o notebook? Basta copiar esse código python abaixo !
Se você preferir faça o download do notebook.
# Cell 1: Criar widgets de comando para os parâmetros de entrada
dbutils.widgets.text("sas_file_dir", "/caminho/para/seu/diretorio", "SAS File Directory")
dbutils.widgets.text("sas_file_name", "", "SAS File Name (optional)")
dbutils.widgets.text("catalog", "seu_catalogo", "Catalog")
dbutils.widgets.text("schema", "seu_schema", "Schema")
dbutils.widgets.text("table_name", "", "Table Name (optional)")
# Cell 2: Obter os valores dos widgets
sas_file_dir = dbutils.widgets.get("sas_file_dir")
sas_file_name = dbutils.widgets.get("sas_file_name")
catalog = dbutils.widgets.get("catalog")
schema = dbutils.widgets.get("schema")
table_name = dbutils.widgets.get("table_name")
# Função para carregar e salvar um arquivo SAS como tabela Delta
def load_and_save_sas_file(sas_file_path, catalog, schema, table_name):
# Carregar o arquivo SAS em um DataFrame
df = spark.read.format("com.github.saurfang.sas.spark") \
.load(sas_file_path)
# Exibir o DataFrame carregado
display(df)
# Especificar o caminho Delta
delta_path = f"/mnt/delta/{catalog}/{schema}/{table_name}"
# Escrever o DataFrame como uma tabela Delta
df.write.format("delta") \
.mode("overwrite") \
.save(delta_path)
# Criar a tabela Delta no catálogo especificado
spark.sql(f"""
CREATE TABLE {catalog}.{schema}.{table_name}
USING DELTA
LOCATION '{delta_path}'
""")
# Verificar se um nome de arquivo específico foi fornecido
if sas_file_name:
# Construir o caminho completo do arquivo SAS
sas_file_path = f"{sas_file_dir}/{sas_file_name}"
# Usar o nome da tabela fornecido ou derivar do nome do arquivo
table_name = table_name if table_name else sas_file_name.split(".")[0]
# Carregar e salvar o arquivo SAS
load_and_save_sas_file(sas_file_path, catalog, schema, table_name)
else:
# Listar todos os arquivos SAS no diretório
files = dbutils.fs.ls(sas_file_dir)
sas_files = [f.path for f in files if f.path.endswith(".sas7bdat")]
# Carregar e salvar cada arquivo SAS
for sas_file_path in sas_files:
# Derivar o nome da tabela do nome do arquivo
table_name = sas_file_path.split("/")[-1].split(".")[0]
load_and_save_sas_file(sas_file_path, catalog, schema, table_name)
Conclusão
Seguindo essa receita de bolo, você terá uma migração tranquila e eficiente, com uma plataforma moderna e escalável pronta para atender às novas demandas do seu negócio. Lembre-se: o segredo de uma boa migração está em planejar bem cada etapa e contar com as ferramentas certas.
E você, já participou de uma migração como essa? Quais foram os principais desafios? Compartilhe nos comentários! Vamos trocar experiências!



