Translate

Mostrar mensagens com a etiqueta Engenharia de Dados. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Engenharia de Dados. Mostrar todas as mensagens

sexta-feira, 20 de fevereiro de 2026

🔥 “Pandas: O ‘SORT’ do Python que Vai Fazer Você Repensar Tudo que Sabe sobre Arquivos Sequenciais”

 

Bellacosa Mainframe apresenta Pandas a Biblioteca poderosa do Python

🔥 “Pandas: O ‘SORT’ do Python que Vai Fazer Você Repensar Tudo que Sabe sobre Arquivos Sequenciais”


Se você vem do mundo COBOL, prepare-se: este não é apenas mais um artigo sobre Python.

É um choque de paradigma.

É como sair do SORT FIELDS=(...) no JCL e descobrir que você pode fazer tudo isso… e mais… em uma única linha de código.

Hoje vamos falar da biblioteca pandas — mas no estilo Bellacosa Mainframe: com história, bastidores, comparações práticas com COBOL, exemplos reais e até alguns easter eggs que vão te surpreender.


☕ 1. A Origem do Pandas — Não, Não Tem Nada a Ver com o Animal 🐼

O nome pandas vem de:

PANel DAta Structure

Criada em 2008 por Wes McKinney, a biblioteca nasceu dentro de um problema real:

👉 manipular dados financeiros de forma eficiente (algo que qualquer sistema em COBOL faz há décadas).

Ou seja…

💡 Pandas nasceu resolvendo problemas que você já resolve no mainframe.

A diferença?

👉 Ele fez isso com uma abordagem muito mais dinâmica e interativa.


🧠 2. O “choque cultural” para quem vem do COBOL

Se você trabalha com:

  • Arquivos VSAM
  • Sequential files
  • SORT / ICETOOL
  • DFSORT
  • DB2 queries

Então o pandas vai parecer… estranho no começo.

Mas depois:

🔥 viciante

Veja essa comparação:

COBOL / JCLPandas
SORT FIELDSsort_values()
READ FILEread_csv()
WRITE FILEto_csv()
IF / EVALUATEfiltros (query / loc)
FILE LAYOUTDataFrame

👉 O DataFrame é o seu novo “registro + tabela + dataset + tudo junto”


📊 3. O coração do Pandas: DataFrame

Imagine isso:

01 CLIENTE.
05 ID PIC 9(05).
05 NOME PIC X(30).
05 SALDO PIC 9(10)V99.

Agora pense nisso como uma tabela inteira carregada na memória.

👉 Isso é um DataFrame

Exemplo em Python:

import pandas as pd

dados = {
"ID": [1, 2, 3],
"NOME": ["ANA", "JOAO", "CARLA"],
"SALDO": [1500.50, 230.00, 9999.99]
}

df = pd.DataFrame(dados)

print(df)

Resultado:

ID NOME SALDO
0 1 ANA 1500.50
1 2 JOAO 230.00
2 3 CARLA 9999.99

💡 Pense assim:

👉 Você carregou um arquivo inteiro na WORKING-STORAGE… mas com superpoderes.


⚡ 4. Filtrando dados — o “IF” mais poderoso que você já viu

COBOL:

IF SALDO > 1000
DISPLAY CLIENTE
END-IF

Pandas:

df[df["SALDO"] > 1000]

Sim.

Só isso.

🔥 Sem loop. Sem READ. Sem controle manual.


🔀 5. Ordenação — adeus SORT JCL?

JCL:

SORT FIELDS=(SALDO, D)

Pandas:

df.sort_values(by="SALDO", ascending=False)

👉 Em memória
👉 Instantâneo
👉 Encadeável com outras operações


🧩 6. JOIN (sim, tipo DB2)

COBOL tradicional sofre aqui…

Mas pandas:

df1.merge(df2, on="ID", how="inner")

💡 É como um:

SELECT *
FROM A, B
WHERE A.ID = B.ID

🧠 7. Agrupamento (o famoso SUM + BREAK logic)

COBOL:

  • Sort
  • Control break
  • Acumuladores
  • Mil linhas de código 😅

Pandas:

df.groupby("NOME")["SALDO"].sum()

🔥 Isso substitui um programa inteiro de batch.


🥚 8. Easter Eggs do Pandas (sim, existem!)

🐼 1. Representação visual amigável

O pandas automaticamente formata tabelas no estilo “relatório bonito”.

👉 Parece um mini-ISPF tabular 😄


🧪 2. Você pode encadear tudo

df[df["SALDO"] > 1000] \
.sort_values(by="SALDO") \
.head(2)

💡 Isso seria:

  • filtro
  • sort
  • limitar registros

👉 tudo em pipeline


🧙 3. Pandas aceita dados de tudo

  • CSV (sequencial)
  • Excel
  • JSON
  • SQL
  • APIs

👉 É como se o COBOL lesse qualquer formato… sem FD.


🏛️ 9. Curiosidade histórica (nível mainframe)

Enquanto o mundo distribuído evoluía…

👉 o mainframe já fazia:

  • processamento massivo
  • batch
  • ETL
  • consistência

O pandas basicamente trouxe essa filosofia para o mundo Python.

💡 Em outras palavras:

Pandas é o “mini-mainframe” do desenvolvedor moderno


🚀 10. Onde isso muda sua carreira

Se você domina COBOL e aprende pandas:

🔥 você vira um profissional híbrido raríssimo

Você passa a atuar em:

  • Engenharia de dados
  • Data analytics
  • Integração legado + moderno
  • Automação de processos batch fora do mainframe

👉 E o melhor:

Você não joga fora seu conhecimento COBOL.

Você expande ele.


🧠 11. Mentalidade nova (o pulo do gato)

COBOL:

👉 Processamento linha a linha

Pandas:

👉 Processamento em conjunto (vetorizado)

Esse é o maior shift.


☕ Conclusão no estilo Bellacosa

Se o COBOL te ensinou disciplina…

Se o JCL te ensinou controle…

Se o SORT te ensinou performance…

Então o pandas vai te ensinar:

🔥 liberdade

Mas cuidado…

Depois que você fizer um groupby().sum() em uma linha…

👉 você nunca mais vai olhar um control-break da mesma forma.

domingo, 25 de agosto de 2024

☕💣 O DIA EM QUE O ESTAGIÁRIO DESCOBRIU QUE IA NÃO É MÁGICA — E QUE 90% DOS PROJETOS DE DADOS MORREM ANTES DE CHEGAR À PRODUÇÃO

 

Bellacosa Mainframe e desafio de analisar dados com Python e Pandas

☕💣 O DIA EM QUE O ESTAGIÁRIO DESCOBRIU QUE IA NÃO É MÁGICA — E QUE 90% DOS PROJETOS DE DADOS MORREM ANTES DE CHEGAR À PRODUÇÃO

Existe uma lenda moderna circulando pelos corredores das empresas.

Ela diz que basta instalar Python, importar Pandas, rodar meia dúzia de notebooks, colocar um gráfico colorido no Power BI e, de repente, a organização inteira se transforma em uma potência orientada por dados.

É uma história bonita.

Mas também é uma das maiores mentiras tecnológicas do século XXI.

Se você trabalhou alguns anos em Mainframe, sabe exatamente do que estou falando.

No mundo z/OS, ninguém acreditava que um programa COBOL estava pronto apenas porque compilou.

No entanto, na era dos notebooks e dashboards, muita gente acredita que um projeto está concluído apenas porque o gráfico ficou bonito.

E é exatamente aí que começam os problemas.

O nascimento do caos

Todo projeto de dados começa da mesma forma.

Alguém chega com uma frase aparentemente simples:

"Precisamos analisar nossos dados."

Parece inofensivo.

Então surgem os CSVs.

Planilhas.

Arquivos Excel.

Dados extraídos de APIs.

Tabelas SQL.

Arquivos JSON.

E, inevitavelmente, aquela planilha mantida por alguém do financeiro que ninguém sabe exatamente como foi construída.

Nesse momento, o profissional de dados descobre uma verdade brutal:

Os dados do mundo real são muito mais bagunçados do que qualquer exemplo de curso.

Muito mais.

O primeiro choque: os dados estão errados

A primeira lição de qualquer analista é simples.

Nunca confie nos dados.

Jamais.

Antes de qualquer gráfico, modelo ou dashboard, existe uma etapa fundamental:

Validação.

Em Python, isso normalmente começa com:

  • head()

  • info()

  • describe()

  • isnull().sum()

Esses comandos parecem simples.

Mas eles revelam coisas assustadoras.

Colunas vazias.

Valores negativos impossíveis.

Datas inválidas.

Campos misturando texto e números.

Duplicidades.

Informações faltando.

Em outras palavras:

A realidade.

No Mainframe, chamávamos isso de saneamento de entrada.

No mundo moderno, chamam de Data Quality.

Mudou o nome.

Não mudou o problema.

O terror dos valores ausentes

Todo iniciante aprende rapidamente o significado de NaN.

E descobre que ele aparece em todos os lugares.

A coluna AGE do Titanic?

Vazia para centenas de passageiros.

A coluna CABIN?

Mais vazia que sala de reunião numa sexta-feira às 18h.

É aí que surge uma das decisões mais importantes de qualquer projeto:

O que fazer com os valores ausentes?

Ignorar?

Excluir?

Preencher?

Usar média?

Mediana?

Modelos preditivos?

Não existe resposta universal.

Existe apenas análise crítica.

Quem acredita que existe uma receita mágica para limpeza de dados provavelmente nunca colocou um modelo em produção.

O dia em que o gráfico enganou todo mundo

Depois da limpeza surge a visualização.

E aqui acontece outro fenômeno interessante.

As pessoas começam a acreditar mais no gráfico do que nos dados.

Um gráfico bonito possui um poder quase hipnótico.

Mas gráficos também mentem.

Ou melhor:

Pessoas podem usá-los para mentir.

Um eixo mal configurado.

Uma escala inadequada.

Uma agregação incorreta.

E pronto.

Uma decisão milionária pode ser tomada baseada em uma interpretação equivocada.

Por isso o profissional sério aprende rapidamente:

Visualização não substitui análise.

Ela apenas ajuda a comunicar análise.

Histograma, Boxplot e a arte de enxergar padrões

Quando começamos a explorar dados, algumas ferramentas tornam-se indispensáveis.

O histograma mostra distribuição.

O boxplot revela dispersão.

O gráfico de dispersão mostra correlações.

Parece simples.

Mas esses gráficos respondem perguntas fundamentais:

  • Onde estão os valores mais frequentes?

  • Existem outliers?

  • Existe relação entre variáveis?

  • Há comportamento anormal?

No Mainframe fazíamos isso analisando relatórios gigantescos.

Hoje fazemos isso visualmente.

Mas o objetivo continua exatamente o mesmo.

Descobrir o que os dados estão tentando nos dizer.

Python não é só Pandas

Existe outro mito muito popular.

O de que Python se resume a Pandas.

Não.

Python é um ecossistema inteiro.

Pandas organiza os dados.

Matplotlib cria gráficos.

Plotly adiciona interatividade.

Requests conversa com APIs.

SQLite armazena informações.

Pytest valida comportamentos.

Logging registra eventos.

Time mede desempenho.

Cada biblioteca resolve um problema específico.

E quando utilizadas juntas criam algo poderoso.

Uma plataforma completa de automação e análise.

O inimigo invisível chamado exceção

Se existe algo que o Mainframe ensinou bem foi respeito pelo erro.

Quem já viu um ABEND em produção entende isso.

No Python o equivalente aparece em forma de exceções.

ZeroDivisionError.

ValueError.

TypeError.

FileNotFoundError.

E muitos outros.

A diferença entre um profissional experiente e um aventureiro normalmente aparece aqui.

O aventureiro ignora erros.

O profissional os trata.

Porque sabe que sistemas reais falham.

Arquivos desaparecem.

APIs ficam indisponíveis.

Usuários digitam valores absurdos.

E o software precisa sobreviver a tudo isso.

Logs: o diário secreto da aplicação

Outro hábito herdado do Mainframe é registrar eventos.

Durante décadas operadores analisaram logs.

Hoje continuamos fazendo exatamente a mesma coisa.

Apenas mudaram as ferramentas.

Logs ajudam a responder perguntas importantes:

  • O que aconteceu?

  • Quando aconteceu?

  • Quem executou?

  • Qual foi o erro?

Sem logs, investigar falhas é praticamente arqueologia digital.

Com logs, torna-se uma análise técnica.

Por isso aplicações profissionais usam logging.

Não print.

Testes: a diferença entre coragem e imprudência

Muitos programadores confundem confiança com sorte.

"Eu executei uma vez e funcionou."

Excelente.

Mas isso não significa nada.

É por isso que testes existem.

Pytest tornou essa tarefa extremamente simples.

Uma função.

Um assert.

Uma expectativa.

Se o comportamento mudar inesperadamente, o teste acusa.

Parece básico.

Mas salva projetos inteiros.

Toda alteração relevante deveria ser seguida por nova execução dos testes.

Sempre.

Sem exceções.

Clean Code não é frescura

Existe uma resistência curiosa ao conceito de código limpo.

Algumas pessoas acreditam que o importante é funcionar.

Errado.

Código é escrito uma vez.

Mas lido centenas de vezes.

Por isso nomes descritivos importam.

Funções pequenas importam.

Modularização importa.

Organização importa.

Código confuso custa dinheiro.

Muito dinheiro.

Especialmente quando o autor original já não trabalha mais na empresa.

O poder da modularização

Projetos pequenos sobrevivem ao caos.

Projetos grandes não.

Quando o sistema cresce, modularização deixa de ser luxo.

Passa a ser necessidade.

Cada função deve possuir responsabilidade clara.

Cada módulo deve resolver um problema específico.

Cada componente deve ser reutilizável.

Isso reduz complexidade.

Facilita manutenção.

E melhora a qualidade geral do software.

Performance: a verdade aparece no cronômetro

Existe uma frase clássica:

"Premature optimization is the root of all evil."

Mas ignorar performance também é perigoso.

É por isso que medir importa.

O módulo time permite descobrir exatamente quanto tempo uma operação leva.

Sem medições, toda otimização vira chute.

Com medições, ela vira engenharia.

E engenharia sempre vence opinião.

Escalabilidade: o momento da verdade

Todo código funciona com cem registros.

O desafio começa com cem milhões.

É aí que surge a palavra escalabilidade.

Um sistema escalável consegue crescer sem colapsar.

Consegue lidar com aumento de carga.

Com aumento de volume.

Com aumento de usuários.

Projetos que ignoram escalabilidade costumam funcionar perfeitamente.

Até o dia em que deixam de funcionar.

Machine Learning não é adivinhação

Chegamos então ao assunto favorito do mercado.

Machine Learning.

Aqui surgem métricas importantes.

Precision.

Recall.

RMSE.

MAPE.

WSS.

Cada uma responde perguntas diferentes.

Precision pergunta:

"Quando o modelo disse que era positivo, quantas vezes acertou?"

Recall pergunta:

"Quantos positivos reais o modelo encontrou?"

RMSE mede erro na unidade original.

MAPE mede erro percentual.

WSS avalia dispersão em clustering.

Sem métricas, modelos são apenas opiniões sofisticadas.

Com métricas, tornam-se sistemas mensuráveis.

Storytelling: a habilidade esquecida

Existe um erro comum.

Acreditar que análise termina quando o modelo termina.

Não termina.

Na verdade, ali começa a parte mais difícil.

Comunicar resultados.

Storytelling com dados significa transformar números em narrativa.

Explicar contexto.

Mostrar padrões.

Interpretar resultados.

Demonstrar relevância.

Porque uma análise perfeita que ninguém entende possui valor próximo de zero.

Dashboards: o cockpit da empresa

Finalmente chegamos aos dashboards.

Eles não existem para serem bonitos.

Existem para acelerar decisões.

Um dashboard bem construído responde perguntas rapidamente.

Mostra indicadores críticos.

Destaca anomalias.

Facilita ações.

Quando bem feito, torna-se o painel de controle da organização.

Quando mal feito, vira apenas decoração corporativa.

A grande lição

Depois de tudo isso surge uma conclusão interessante.

A tecnologia mudou.

As ferramentas mudaram.

Os nomes mudaram.

Mas os princípios continuam os mesmos.

Validação.

Controle.

Monitoramento.

Teste.

Documentação.

Performance.

Organização.

Disciplina.

Os profissionais de Mainframe aprenderam essas lições há décadas.

E agora a nova geração de cientistas de dados está redescobrindo exatamente os mesmos conceitos.

A diferença é que hoje usamos Python.

Ontem usávamos COBOL.

Mas a verdade permanece.

Dados ruins geram decisões ruins.

Código ruim gera sistemas ruins.

Processos ruins geram resultados ruins.

E nenhuma quantidade de Inteligência Artificial consegue corrigir isso.

Porque, no final das contas, a tecnologia mais importante de qualquer projeto continua sendo a mesma desde os tempos dos cartões perfurados:

O cérebro de quem está operando a máquina.

☕💣

 


quarta-feira, 4 de maio de 2022

Engenharia de Dados para um Programador COBOL Padawan

 

Bellacosa Mainframe e a engenharia de dados

☕ Um Café no Bellacosa Mainframe

Engenharia de Dados para um Programador COBOL Padawan

Você Não Está Mudando de Profissão. Está Descobrindo que Sempre Trabalhou com Dados.

"Toda geração acredita que inventou a Engenharia de Dados. Quem passou décadas desenvolvendo em COBOL sabe que mover, transformar, validar e proteger dados sempre foi o coração do Mainframe."


Se existe uma palavra que domina o mercado de tecnologia atualmente, ela é Dados.

Data Engineer.

Data Lake.

Data Warehouse.

Data Mesh.

Data Fabric.

Big Data.

Analytics.

Machine Learning.

Inteligência Artificial.

Para quem acompanha as vagas do LinkedIn, parece que surgiu uma profissão completamente nova.

Mas será que surgiu mesmo?

Se você é um Programador COBOL Padawan, talvez esteja olhando para esse universo pensando:

"Isso não é para mim."

Ou talvez pior.

"Vou precisar esquecer tudo o que aprendi nos últimos anos."

Nada poderia estar mais distante da realidade.

Na verdade, existe uma notícia excelente.

Boa parte da Engenharia de Dados nasceu exatamente nos ambientes onde o COBOL reina há mais de sessenta anos.

Hoje vamos tomar um café e descobrir por que um programador COBOL possui muito mais vantagens para aprender Engenharia de Dados do que imagina.


O maior equívoco sobre Engenharia de Dados

Quando alguém fala "Data Engineer", muitas pessoas imaginam imediatamente alguém escrevendo Python.

Outros imaginam Spark.

Outros imaginam nuvem.

Outros imaginam Inteligência Artificial.

Tudo isso faz parte da profissão.

Mas nada disso explica sua essência.

A verdadeira Engenharia de Dados pode ser resumida em uma única pergunta:

Como garantir que a informação certa chegue ao lugar certo, no momento certo, com qualidade e segurança?

Perceba.

Não estamos falando de linguagem.

Não estamos falando de banco de dados.

Não estamos falando de cloud.

Estamos falando de engenharia.

E engenharia sempre existiu.


O COBOL sempre foi uma linguagem de dados

Vamos imaginar um programa extremamente simples.

READ CLIENTE

IF STATUS = "A"

   COMPUTE LIMITE = SALARIO * 3

   WRITE CLIENTE-APROVADO

END-IF

O que esse programa faz?

Não desenha telas.

Não cria animações.

Não faz gráficos.

Ele faz algo muito mais importante.

Transforma dados.

Exatamente o trabalho de um pipeline moderno.

Hoje essa transformação poderia estar escrita em:

Python.

Spark.

SQL.

Scala.

Mas o conceito permanece exatamente o mesmo.

Entrada.

Transformação.

Saída.


Um pipeline moderno não é muito diferente de um Job Batch

Vamos comparar.

No Mainframe

Arquivo VSAM

↓

Programa COBOL

↓

SORT

↓

IDCAMS

↓

DB2

↓

Relatório

Agora veja um ambiente moderno.

API

↓

Python

↓

Spark

↓

Data Lake

↓

Data Warehouse

↓

Dashboard

Mudaram as ferramentas.

O fluxo continua praticamente idêntico.

Receber.

Transformar.

Validar.

Persistir.

Consumir.

É por isso que muitos profissionais de Mainframe aprendem Engenharia de Dados com enorme facilidade.

Eles já entendem o processo.

Só precisam aprender novos nomes.


Nível 1 — SQL e Linux

Toda jornada começa aqui.

Algumas pessoas desprezam SQL.

Grave isto.

Quem domina SQL domina dados.

SQL continua sendo a língua universal da informação.

Não importa se você usa:

Oracle

SQL Server

PostgreSQL

MySQL

Db2

Snowflake

BigQuery

Databricks

Spark SQL

Todos conversam através de SQL.


No Linux acontece algo parecido.

Quem trabalha com z/OS talvez ache curioso.

Mas muitos comandos Linux lembram bastante utilitários clássicos do Mainframe.

Por exemplo.

Localizar informações.

Linux

grep CPF clientes.txt

Mainframe

SORT INCLUDE

Contar registros.

Linux

wc -l arquivo.txt

Mainframe

ICETOOL COUNT.

Filtrar.

Ordenar.

Mesclar.

Tudo isso já fazia parte do universo Batch décadas antes do Big Data existir.


Nível 2 — Programação

Aqui normalmente aparece Python.

Mas poderia ser Java.

Scala.

Go.

Até mesmo COBOL.

Sim.

COBOL continua sendo usado em pipelines modernos.

Principalmente quando o dado nasce no Mainframe.

O objetivo agora não é consultar dados.

É automatizar processos.

Imagine.

Você precisa:

baixar arquivos

consumir APIs

descompactar

validar

gerar logs

carregar banco

enviar e-mail

Tudo isso exige programação.

Não importa a linguagem.

O importante é pensar em automação.


O primeiro choque: APIs

Muitos programadores COBOL perguntam:

"O que é uma API?"

A resposta mais simples é:

Uma API é um programa conversando com outro programa.

Só isso.

Você já fazia isso.

CICS fazia isso.

MQ fazia isso.

IMS fazia isso.

A diferença é que hoje a conversa normalmente acontece usando:

HTTP

JSON

REST

GraphQL

gRPC

O conceito continua exatamente igual.


Nível 3 — Spark

Aqui começa a diversão.

Imagine que seu programa COBOL processa:

5 milhões de registros.

Funciona muito bem.

Agora imagine:

5 bilhões.

Não existe CPU suficiente.

Surge então o processamento distribuído.

Em vez de uma máquina.

Cem máquinas.

Ou mil.

Cada uma processando uma pequena parte.

Esse é o Spark.

Ele divide o problema.

Depois reúne os resultados.

É como um enorme SORT distribuído.


Spark não substitui SQL

Esse é outro mito.

Na prática.

Boa parte do Spark moderno utiliza SQL.

Ou Spark SQL.

Ou DataFrames.

Ou seja.

O conhecimento adquirido anteriormente continua sendo utilizado.

Nada é perdido.

Tudo evolui.


Nível 4 — Cloud

Aqui muita gente se assusta.

Parece outro universo.

Na verdade, não é.

Cloud é apenas um novo datacenter.

Só que alugado.

Imagine um CPD gigantesco.

Você liga um servidor.

Usa.

Desliga.

Paga apenas pelo tempo utilizado.

É isso.

Claro.

Existem centenas de serviços.

Mas a ideia continua simples.

Infraestrutura sob demanda.


O que muda para o Engenheiro de Dados?

Antes.

Você tinha um servidor.

Agora possui dezenas.

Centenas.

Tudo automatizado.

Surge então uma nova preocupação.

Escalabilidade.

Monitoramento.

Custos.

Segurança.


Nível 5 — Inteligência Artificial

Chegamos ao assunto da moda.

Todo mundo quer trabalhar com IA.

Mas poucos entendem uma verdade simples.

A IA depende completamente da Engenharia de Dados.

Imagine um modelo treinado com:

CPFs inválidos.

Datas erradas.

Valores duplicados.

Clientes repetidos.

O resultado será desastroso.

Existe uma frase muito antiga.

Garbage In.

Garbage Out.

Entrou lixo.

Sai lixo.


Por isso.

Antes da Inteligência Artificial.

Existe um profissional invisível.

O Engenheiro de Dados.

Ele garante que os dados sejam:

limpos

organizados

consistentes

históricos

auditáveis

confiáveis

Sem isso.

Nenhum ChatGPT.

Nenhum Copilot.

Nenhum modelo funciona adequadamente.


Mas existe algo ainda mais importante...

A imagem que inspirou este artigo mostra uma sequência de tecnologias.

Ela está correta.

Mas incompleta.

Porque existem conhecimentos que nunca saem de moda.


Modelagem de Dados

Se existe um superpoder do programador COBOL, é este.

Quem desenvolveu sistemas bancários conhece:

Cliente.

Conta.

Agência.

Contrato.

Movimentação.

Parcela.

Histórico.

Relacionamentos.

Tudo isso é modelagem.

Sem um bom modelo.

Nem Spark salva.

Nem IA resolve.

Nem Cloud ajuda.


Qualidade dos Dados

Imagine um cadastro onde o mesmo cliente aparece quinze vezes.

Ou um saldo negativo impossível.

Ou datas inexistentes.

Quem resolve?

Não é a IA.

É engenharia.

Validação.

Regras.

Auditoria.

Consistência.

Exatamente como fazemos há décadas em sistemas críticos.


Observabilidade

No Mainframe existe SDSF.

SMF.

RMF.

Logs.

Mensagens JES.

Abends.

Tudo isso existe para observar o ambiente.

Hoje fazemos exatamente a mesma coisa.

Só mudaram as ferramentas.

Monitoramos:

pipelines

latência

falhas

volumes

distribuição

anomalias

A filosofia continua igual.

Nunca confiar.

Sempre medir.


Governança

Poucos assuntos cresceram tanto.

Hoje toda empresa pergunta:

Quem alterou esse dado?

Quem acessou?

Quem apagou?

Quando?

Por quê?

No Mainframe isso sempre foi levado muito a sério.

RACF.

Auditoria.

Perfis.

Permissões.

Hoje apenas ampliamos esse conceito.


Versionamento

Você conhece Endevor?

ISPW?

ChangeMan?

Parabéns.

Você já trabalhou com gestão de versões antes mesmo do Git existir.

Hoje usamos GitHub.

GitLab.

Bitbucket.

Mas o princípio permanece.

Nunca alterar produção diretamente.

Sempre controlar mudanças.


DataOps

Assim como surgiu DevOps.

Hoje existe DataOps.

Automatizar testes.

Validar qualidade.

Executar pipelines.

Fazer deploy.

Documentar.

Monitorar.

Tudo automaticamente.

Isso reduz erros humanos.

Aumenta confiabilidade.

E acelera entregas.


O conhecimento mais importante continua sendo o negócio

Imagine dois profissionais.

O primeiro conhece:

Spark.

Kafka.

Snowflake.

Airflow.

Terraform.

Kubernetes.

Python.

Databricks.

O segundo conhece apenas SQL.

Mas entende perfeitamente:

crédito

seguros

contabilidade

tributação

previdência

Qual deles gera mais valor?

Na maioria das empresas.

O segundo.

Porque tecnologia resolve problemas.

Mas somente quem entende o negócio consegue resolver o problema correto.


O programador COBOL já possui metade da jornada concluída

Esse talvez seja o maior segredo da Engenharia de Dados.

Profissionais de Mainframe normalmente já dominam:

✔ Processamento Batch

✔ Integridade transacional

✔ Bancos relacionais

✔ Modelagem

✔ Performance

✔ Grandes volumes

✔ Segurança

✔ Auditoria

✔ Sistemas críticos

✔ Dados corporativos

O que falta aprender?

As ferramentas modernas.

E ferramentas podem ser aprendidas.

Princípios levam anos para serem construídos.


A verdadeira evolução

Muitos imaginam a carreira assim.

COBOL

↓

Python

↓

Spark

↓

Cloud

↓

IA

Na realidade.

Ela é muito mais parecida com isto.

                 Negócio
                     │
      ┌──────────────┼──────────────┐
      │              │              │
 Modelagem     Engenharia      Arquitetura
      │              │              │
      ├──────────────┼──────────────┤
      │              │              │
    SQL         Programação      Segurança
      │              │              │
      ├──────────────┼──────────────┤
      │              │              │
 Spark        Cloud         Observabilidade
      │              │              │
      └──────────────┼──────────────┘
                     │
                 DataOps
                     │
               Inteligência Artificial

Observe que a IA aparece quase no final.

Isso não é coincidência.

Ela depende de tudo o que veio antes.


Um café antes de voltar ao código...

Existe uma frase muito comum nas redes sociais:

"Aprenda IA."

Eu faria uma pequena correção.

Aprenda Engenharia.

Porque tecnologias mudam.

Spark um dia será substituído.

Novos bancos aparecerão.

Novas linguagens surgirão.

Novos frameworks nascerão.

Assim como Clipper deu lugar a outras soluções, e como muitas ferramentas de ETL evoluíram ao longo das décadas, o ecossistema continuará mudando.

Mas alguns princípios permanecem praticamente imutáveis desde os primeiros sistemas corporativos:

  • Dados precisam ser confiáveis.

  • Processos precisam ser previsíveis.

  • Sistemas precisam ser auditáveis.

  • Arquiteturas precisam ser sustentáveis.

  • Segurança nunca é opcional.

  • O negócio deve orientar a tecnologia, e não o contrário.

É exatamente por isso que um Programador COBOL não está começando do zero ao olhar para a Engenharia de Dados. Pelo contrário: ele já carrega uma bagagem construída em ambientes onde disponibilidade, consistência e integridade sempre foram requisitos inegociáveis.

No fim das contas, a maior transformação não é aprender Python, Spark ou Cloud. É perceber que o trabalho sempre foi o mesmo: transformar dados em informação confiável para apoiar decisões.

As ferramentas evoluem.

Os nomes mudam.

As interfaces ficam mais modernas.

Mas a boa engenharia continua sendo reconhecida pelos mesmos atributos de décadas atrás: simplicidade, clareza, desempenho, confiabilidade e foco no problema de negócio.

Então, Padawan, da próxima vez que ouvir alguém dizer que Engenharia de Dados é "uma profissão completamente nova", sorria, tome mais um gole do seu café e lembre-se: os mainframes já movimentavam bilhões de registros por dia quando muitos dos conceitos modernos ainda nem tinham nome.

quarta-feira, 29 de julho de 2020

ETL Clássico vs. ELT Moderno sem Mistérios

 

Bellacosa Mainframe e o ETL Sem misterios conheca o classico versus o moderno


☕ Um Café no Bellacosa Mainframe

ETL Clássico vs. ELT Moderno sem Mistérios

Da fita magnética ao Data Lakehouse: o guia definitivo do programador COBOL Padawan para entender como os dados aprenderam a viajar no tempo

Imagine a seguinte cena.

São duas horas da manhã em um grande centro de processamento de dados. As luzes da sala estão apagadas, mas centenas de pequenos indicadores piscam silenciosamente. No console do operador, uma fila de jobs atravessa o JES2. Um programa COBOL lê milhões de registros de um arquivo VSAM, consulta tabelas no Db2, gera um arquivo sequencial e o entrega para outro processo.

Depois, um job de transformação organiza os dados.

Outro job elimina duplicidades.

Outro converte datas.

Outro calcula totais.

Finalmente, já perto do amanhecer, as informações chegam ao Data Warehouse, prontas para alimentar os relatórios que os gestores abrirão durante o café da manhã.

Essa cena resume muito bem a era do ETL clássico.

Agora avance algumas décadas.

Os dados continuam vindo do mainframe, do ERP, do CRM, das APIs, das planilhas e de dezenas de sistemas. Porém, em vez de esperar uma longa janela batch noturna, as alterações podem ser capturadas quase em tempo real. Os dados brutos são carregados em uma plataforma de nuvem ou em um Lakehouse e somente depois são organizados, testados e modelados.

Essa segunda cena representa o ELT moderno.

À primeira vista, a diferença parece pequena. Afinal, ETL e ELT possuem as mesmas três letras:

  • E de Extract, extração;

  • T de Transform, transformação;

  • L de Load, carga.

O que muda é a ordem.

Mas, como diria o Sr. Spock ao examinar um fluxo de dados corporativo:

“Uma pequena alteração na sequência pode produzir consequências altamente ilógicas em todo o sistema.”

Trocar a posição do T e do L não é apenas reorganizar três letras. É alterar toda a filosofia da arquitetura de dados.

Prepare o café, ajuste o terminal 3270 e embarque conosco. Nesta missão, o programador COBOL Padawan descobrirá como os dados saíram dos arquivos sequenciais, atravessaram Data Warehouses gigantescos e chegaram aos modernos Data Lakes, Lakehouses, pipelines de CDC, dbt, dashboards e modelos de inteligência artificial.


1. Antes de tudo: o que é um pipeline de dados?

Um pipeline de dados é uma sequência organizada de etapas responsável por transportar informações de um lugar para outro.

Podemos compará-lo a uma linha de produção.

A matéria-prima chega, passa por máquinas, é inspecionada, transformada, embalada e enviada ao destino final.

No mundo dos dados, a matéria-prima pode ser:

  • uma tabela Db2;

  • um arquivo VSAM;

  • um banco Oracle;

  • uma aplicação SAP;

  • um arquivo CSV;

  • uma planilha;

  • uma mensagem MQ;

  • uma API;

  • um tópico Kafka;

  • um log de servidor;

  • uma transação CICS;

  • um registro IMS;

  • um arquivo gerado por um programa COBOL.

O pipeline captura essas informações, movimenta os registros, corrige formatos, aplica regras de negócio e entrega os dados para relatórios, análises, auditorias ou inteligência artificial.

Um pipeline simplificado pode ser representado assim:

Sistema de origem
       ↓
Extração
       ↓
Transformação
       ↓
Carga
       ↓
Banco analítico
       ↓
Relatórios e dashboards

No modelo moderno, a ordem normalmente muda:

Sistema de origem
       ↓
Extração
       ↓
Carga dos dados brutos
       ↓
Transformação dentro da plataforma
       ↓
Modelos analíticos
       ↓
Relatórios, ciência de dados e IA

É exatamente aí que começa a diferença entre ETL e ELT.


2. O nascimento do ETL clássico

O ETL tornou-se extremamente popular durante os anos 1990 e 2000.

Naquela época, os recursos computacionais eram muito mais caros e limitados.

Armazenamento custava caro.

Memória custava caro.

Processamento custava caro.

Licenças de bancos de dados custavam caro.

Manter grandes volumes de dados sem uso aparente era visto como desperdício.

A filosofia dominante era:

“Não carregue tudo. Carregue somente o que estiver limpo, organizado e pronto para ser usado.”

Assim surgiu o processo clássico:

Extract → Transform → Load

Ou seja:

  1. extrair os dados da origem;

  2. transformar os dados fora do Data Warehouse;

  3. carregar apenas os dados prontos.

Essa abordagem combinava muito bem com a cultura dos grandes ambientes corporativos, especialmente aqueles baseados em processamento batch.


3. ETL explicado para um programador COBOL iniciante

Vamos imaginar um cenário bancário.

Um programa COBOL processa diariamente um arquivo de movimentos financeiros.

O arquivo contém informações como:

NUMERO-CONTA
DATA-MOVIMENTO
TIPO-MOVIMENTO
VALOR-MOVIMENTO
CODIGO-AGENCIA

Esses dados precisam alimentar um Data Warehouse para que a área de negócios analise o total de depósitos, saques e transferências.

No ETL clássico, o fluxo seria parecido com este:

Db2 / VSAM / Arquivo
        ↓
Extração
        ↓
Área de staging
        ↓
Transformação
        ↓
Carga no Data Warehouse

Vamos analisar cada etapa.


4. Etapa 1 — Extract: extraindo os dados

A extração é o momento em que os dados são retirados do sistema de origem.

No mainframe, isso pode acontecer por meio de:

  • programas COBOL batch;

  • unload do Db2;

  • IDCAMS REPRO;

  • DFSORT;

  • utilitários de IMS;

  • arquivos sequenciais;

  • mensagens MQ;

  • APIs do z/OS Connect;

  • ferramentas de replicação;

  • soluções de Change Data Capture.

Um programa COBOL poderia, por exemplo, ler uma tabela Db2 e gravar um arquivo sequencial:

SELECT
    ACCOUNT_ID,
    CUSTOMER_ID,
    BALANCE,
    LAST_UPDATE
FROM ACCOUNT
WHERE LAST_UPDATE >= :DATA-ANTERIOR

O resultado seria gravado em um arquivo como:

HLQ.EXTRACAO.CONTAS.D20260716

Esse arquivo seria então enviado para a plataforma de ETL.

O ponto importante é que a extração não deveria aplicar regras complexas. Sua principal função seria capturar os dados da origem.

Contudo, na prática, muitos ambientes antigos misturavam extração e transformação no mesmo programa.

O COBOL lia a tabela, validava registros, convertia datas, alterava códigos e gravava o resultado final.

Funcionava, mas criava forte acoplamento.


5. Etapa 2 — Staging: a sala de espera dos dados

Depois da extração, os dados costumavam ser enviados para uma área temporária chamada staging.

Staging significa algo como área de preparação.

Pense nela como a doca de carga da USS Enterprise.

As caixas chegam de diferentes planetas, mas ainda não foram inspecionadas, classificadas ou distribuídas pelos compartimentos da nave.

A staging poderia conter tabelas como:

STG_CLIENTE
STG_CONTA
STG_MOVIMENTO
STG_AGENCIA
STG_PRODUTO

Os dados nessa área ainda poderiam apresentar:

  • duplicidades;

  • campos vazios;

  • datas inválidas;

  • caracteres inesperados;

  • moedas diferentes;

  • códigos de sistemas antigos;

  • informações inconsistentes.

A staging oferecia um espaço seguro para trabalhar antes de carregar o Data Warehouse oficial.

Em ambientes mainframe, o conceito de staging também podia aparecer na forma de datasets temporários:

//STAGE01 DD DSN=&&STAGING,
//            DISP=(NEW,PASS),
//            SPACE=(CYL,(100,50)),
//            DCB=(RECFM=FB,LRECL=300)

O dataset temporário era criado, utilizado por outros steps e eliminado ao final do job.

Nada muito diferente de uma tabela temporária em um pipeline moderno.

A tecnologia muda. O princípio permanece.


6. Etapa 3 — Transform: onde as regras de negócio vivem

A transformação é o coração do ETL.

É nessa etapa que os dados brutos são convertidos em informações confiáveis.

Algumas transformações comuns incluem:

Padronização de datas

A origem pode trazer:

16/07/2026

O Data Warehouse pode exigir:

2026-07-16

Padronização de valores

Uma origem pode usar vírgula decimal:

1234,56

Outra pode usar ponto:

1234.56

O pipeline precisa escolher um padrão.

Tratamento de códigos

O sistema antigo pode armazenar:

A = Ativo
I = Inativo
B = Bloqueado

O modelo analítico pode exigir:

ATIVO
INATIVO
BLOQUEADO

Eliminação de duplicidades

Dois sistemas podem possuir registros do mesmo cliente.

O processo precisa decidir:

  • qual registro é o principal;

  • qual endereço é o mais recente;

  • qual telefone deve ser preservado;

  • como consolidar os dados.

Criação de métricas

O pipeline pode calcular:

  • saldo médio;

  • faturamento mensal;

  • tempo de relacionamento;

  • quantidade de transações;

  • valor acumulado;

  • risco de crédito;

  • indicador de inadimplência.

Em um programa COBOL, uma transformação poderia parecer assim:

IF WS-TIPO-MOVIMENTO = 'C'
    ADD WS-VALOR TO WS-TOTAL-CREDITOS
ELSE
    IF WS-TIPO-MOVIMENTO = 'D'
        ADD WS-VALOR TO WS-TOTAL-DEBITOS
    END-IF
END-IF

Em uma ferramenta de ETL, a mesma lógica poderia ser implementada visualmente.

Em SQL:

CASE
    WHEN TIPO_MOVIMENTO = 'C' THEN VALOR_MOVIMENTO
    ELSE 0
END AS VALOR_CREDITO

A regra é a mesma.

O que muda é a linguagem e o lugar onde ela é executada.


7. Etapa 4 — Load: carregando o Data Warehouse

Depois que os dados fossem transformados, finalmente seriam carregados no Data Warehouse.

O Data Warehouse era cuidadosamente modelado antes da carga.

Frequentemente utilizava modelos dimensionais compostos por:

  • tabelas fato;

  • tabelas dimensão;

  • chaves substitutas;

  • históricos;

  • agregações;

  • hierarquias.

Uma tabela fato poderia conter:

FATO_VENDAS

Enquanto as dimensões poderiam ser:

DIM_CLIENTE
DIM_PRODUTO
DIM_LOJA
DIM_TEMPO
DIM_VENDEDOR

A tabela fato armazenava medidas:

  • quantidade;

  • valor;

  • desconto;

  • imposto;

  • margem.

As dimensões armazenavam contexto:

  • quem comprou;

  • o que comprou;

  • onde comprou;

  • quando comprou.

Esse modelo facilitava relatórios e análises.

Porém, exigia que a estrutura fosse definida antes da chegada dos dados.

Daí nasce a famosa lógica:

Primeiro modela. Depois carrega.


8. Por que o ETL era tão rígido?

Porque cada alteração precisava atravessar toda a cadeia.

Imagine que uma tabela de clientes receba um novo campo:

CANAL_PREFERENCIAL

Agora seria necessário alterar:

  1. o sistema de origem;

  2. o programa de extração;

  3. o arquivo intermediário;

  4. o layout;

  5. a tabela de staging;

  6. a transformação;

  7. a tabela destino;

  8. a documentação;

  9. os relatórios;

  10. os testes;

  11. o processo de implantação;

  12. os controles de reconciliação.

Para um programador COBOL, isso lembra a alteração de um copybook compartilhado por dezenas de programas.

Você muda um campo.

De repente, vinte módulos precisam ser recompilados.

Três interfaces quebram.

Um arquivo fica com LRECL incorreto.

Um job termina com S013.

Outro apresenta dados deslocados.

O operador liga às três horas da manhã.

A equipe inteira pergunta:

“Quem alterou o copybook?”

No ETL clássico, o mesmo fenômeno acontecia com pipelines de dados.


9. Ferramentas pesadas e lógica espalhada

Outro problema comum era a dispersão das regras.

Uma parte da lógica podia estar em:

  • um programa COBOL;

  • uma procedure SQL;

  • um job SSIS;

  • uma transformação PowerCenter;

  • um script Shell;

  • uma rotina Java;

  • um job Control-M;

  • uma stored procedure Oracle;

  • uma planilha mantida manualmente.

O resultado era uma arquitetura difícil de compreender.

Para descobrir como determinado campo era calculado, o analista precisava investigar cinco sistemas.

A regra podia começar em um programa COBOL, ser alterada em uma procedure e finalmente ser arredondada no relatório.

Era uma verdadeira investigação digna de Sherlock Holmes, Spock e do operador de produção mais experiente da empresa.


10. Então o que mudou?

Três transformações foram fundamentais.

10.1 O armazenamento ficou mais barato

Guardar grandes volumes de dados tornou-se economicamente viável.

Antes, armazenar tudo era um luxo.

Hoje, em muitas arquiteturas, preservar dados brutos é considerado uma vantagem.

10.2 O processamento tornou-se elástico

Plataformas modernas permitem aumentar ou reduzir capacidade conforme a necessidade.

Em vez de comprar uma máquina para o pico máximo, a empresa pode consumir recursos sob demanda.

10.3 O volume e a variedade dos dados explodiram

As organizações passaram a produzir:

  • logs;

  • eventos;

  • cliques;

  • imagens;

  • JSON;

  • XML;

  • telemetria;

  • dados de sensores;

  • mensagens;

  • documentos;

  • dados de redes sociais;

  • informações de aplicações móveis.

Transformar tudo antes da carga tornou-se lento e caro.

Assim nasceu a filosofia do ELT.


11. ELT: primeiro carrega, depois transforma

O ELT segue este fluxo:

Extract → Load → Transform

Primeiro, o dado é extraído.

Depois, é carregado praticamente como veio da origem.

Somente dentro da plataforma moderna ele é transformado.

A nova filosofia pode ser resumida assim:

“Preserve os dados primeiro. Decida depois como utilizá-los.”

Em vez de obrigar o dado a se adaptar imediatamente a um modelo rígido, o ELT preserva a informação original.

Isso aumenta a flexibilidade.


12. A camada Raw ou Bronze

Em arquiteturas modernas, os dados brutos costumam ser armazenados em uma camada chamada:

  • Raw;

  • Bronze;

  • Landing;

  • Ingestion;

  • Source.

Essa camada preserva o dado original.

Imagine que o mainframe envie um arquivo contendo:

00012320260716125000C0000000015000

O registro pode ser armazenado exatamente como chegou.

Depois, outras camadas interpretam os campos.

Uma arquitetura em camadas pode ser:

Bronze → Silver → Gold

Bronze

Dados brutos.

Pouco ou nenhum tratamento.

Silver

Dados limpos, padronizados e reconciliados.

Gold

Dados preparados para negócio, relatórios e indicadores.

Uma analogia mainframe seria:

Arquivo de entrada
       ↓
Arquivo validado
       ↓
Arquivo consolidado
       ↓
Relatório final

O conceito não é totalmente novo.

A novidade está na escala, nas ferramentas e na velocidade.


13. O que é um Data Lake?

Um Data Lake é um repositório capaz de armazenar grandes volumes de dados em diversos formatos.

Ele pode guardar:

  • arquivos CSV;

  • JSON;

  • Parquet;

  • imagens;

  • vídeos;

  • logs;

  • arquivos de áudio;

  • dados estruturados;

  • dados semiestruturados;

  • dados não estruturados.

A principal vantagem é a flexibilidade.

Porém, existe um risco.

Sem organização, governança e catálogo, o Data Lake pode virar um Data Swamp, ou pântano de dados.

Os arquivos estão lá, mas ninguém sabe:

  • quem criou;

  • qual versão é válida;

  • o que cada coluna significa;

  • se os dados estão completos;

  • se há informações sensíveis;

  • quem pode utilizá-los.

Curiosidade importante: guardar tudo não significa compreender tudo.

Um Data Lake sem governança pode ser apenas um gigantesco diretório de arquivos com nomes misteriosos.

Algo como:

FINAL.CSV
FINAL2.CSV
FINAL_CORRETO.CSV
FINAL_CORRETO_AGORA_VAI.CSV
FINAL_DEFINITIVO_V7.CSV

Todo profissional de tecnologia já encontrou uma pasta assim em algum momento da vida.


14. O que é um Data Lakehouse?

O Data Lakehouse tenta unir as vantagens do Data Lake e do Data Warehouse.

Do Data Lake, ele herda:

  • armazenamento flexível;

  • suporte a grandes volumes;

  • formatos variados;

  • custo reduzido.

Do Data Warehouse, ele herda:

  • organização;

  • consultas SQL;

  • desempenho;

  • governança;

  • controle de qualidade;

  • suporte a transações;

  • modelagem analítica.

Em termos simples:

Data Lake + Data Warehouse = Data Lakehouse

Não é uma soma perfeita, mas ajuda o COBOL Padawan a compreender o conceito.

O Lakehouse busca permitir que os mesmos dados sirvam para:

  • dashboards;

  • relatórios;

  • ciência de dados;

  • machine learning;

  • inteligência artificial;

  • auditoria;

  • análises exploratórias.


15. Change Data Capture: capturando apenas o que mudou

Um dos elementos mais importantes do ELT moderno é o CDC, ou Change Data Capture.

No processamento tradicional, uma tabela inteira podia ser extraída diariamente.

Imagine uma tabela com 500 milhões de registros.

Mesmo que apenas 10 mil registros tivessem mudado, o processo poderia copiar tudo novamente.

Isso consome:

  • CPU;

  • disco;

  • rede;

  • tempo;

  • janela batch;

  • paciência do operador.

O CDC captura apenas alterações:

  • INSERT;

  • UPDATE;

  • DELETE.

Exemplo:

Registro 1001 foi incluído
Registro 2050 foi alterado
Registro 3100 foi excluído

Essas mudanças são enviadas para a plataforma analítica.

No ecossistema mainframe, o CDC pode observar alterações em:

  • Db2;

  • IMS;

  • VSAM;

  • logs transacionais;

  • filas;

  • streams de eventos.

Isso permite integrar sistemas centrais com plataformas modernas sem executar extrações completas o tempo todo.


16. Batch não morreu

Existe uma ideia equivocada de que arquiteturas modernas eliminaram o batch.

Não eliminaram.

O batch continua extremamente importante.

Folhas de pagamento, fechamentos contábeis, consolidações financeiras, faturamento e processamento de grandes volumes ainda utilizam jobs em lote.

O que mudou foi a coexistência entre diferentes velocidades.

Hoje, uma arquitetura pode possuir:

  • batch diário;

  • microbatch a cada cinco minutos;

  • eventos em tempo real;

  • CDC quase imediato;

  • consultas sob demanda.

O mainframe também participa dessa arquitetura híbrida.

Um programa COBOL pode continuar processando arquivos à noite, enquanto alterações críticas são enviadas por CDC durante o dia.

Não é uma guerra entre antigo e moderno.

É uma federação de tecnologias.

E, como toda boa federação, cada membro possui sua função.


17. O papel do dbt na transformação moderna

O dbt, conhecido como data build tool, ajudou a transformar a maneira como as equipes escrevem SQL.

Antes, o SQL podia ficar espalhado por:

  • procedures;

  • scripts;

  • jobs;

  • ferramentas visuais;

  • notebooks;

  • arquivos locais.

O dbt trouxe práticas de engenharia de software para a transformação de dados.

Entre elas:

  • versionamento em Git;

  • testes;

  • documentação;

  • dependências;

  • modularização;

  • revisão de código;

  • integração contínua;

  • implantação automatizada.

Um modelo dbt pode ser semelhante a:

SELECT
    CUSTOMER_ID,
    SUM(AMOUNT) AS TOTAL_AMOUNT
FROM {{ ref('stg_transactions') }}
GROUP BY CUSTOMER_ID

A função ref declara que esse modelo depende de outro.

Assim, a ferramenta entende a ordem de execução.

Em vez de manter uma sequência escondida em dez agendadores diferentes, o pipeline passa a possuir um grafo claro de dependências.

Para o programador COBOL, isso pode ser comparado a mapear todos os programas chamados por um módulo principal.

PGMMAIN
 ├── CALL PGMCLI
 ├── CALL PGMCON
 └── CALL PGMREL

No dbt, a lógica é parecida:

RAW_CUSTOMER
      ↓
STG_CUSTOMER
      ↓
DIM_CUSTOMER
      ↓
REPORT_CUSTOMER

A diferença é que o grafo pode ser documentado e executado automaticamente.


18. O dbt resolve tudo?

Não.

O dbt resolve muito bem a parte de transformação SQL dentro de uma plataforma de dados.

Mas ele não é responsável por tudo.

Ele não substitui necessariamente:

  • ferramentas de ingestão;

  • mensageria;

  • CDC;

  • segurança;

  • governança;

  • catálogo;

  • monitoramento;

  • qualidade completa;

  • gestão de custos;

  • orquestração de toda a empresa.

É importante evitar a síndrome da ferramenta mágica.

Nenhuma ferramenta resolve sozinha arquitetura, processo, pessoas, governança e qualidade.

O dbt organiza muito bem o “T”.

Mas o restante da missão ainda precisa de uma tripulação.


19. Orquestração: o maestro do pipeline

A orquestração define:

  • o que executa primeiro;

  • o que depende de quê;

  • o que fazer em caso de falha;

  • quantas tentativas realizar;

  • quando disparar alertas;

  • quais prazos devem ser cumpridos.

No mainframe, JCL, JES2 e schedulers já exercem esse papel há décadas.

Considere:

//STEP01 EXEC PGM=EXTRATOR
//STEP02 EXEC PGM=TRANSFOR,COND=(0,NE,STEP01)
//STEP03 EXEC PGM=CARREGA,COND=(0,NE,STEP02)

O fluxo está claro:

  1. extrair;

  2. transformar;

  3. carregar.

Se o STEP01 falhar, os próximos podem não executar.

Ferramentas modernas fazem algo semelhante por meio de DAGs, grafos acíclicos direcionados.

O conceito parece novo, mas o veterano do mainframe olha para ele e pensa:

“Isso é uma cadeia de jobs com um nome mais elegante.”

E ele não está totalmente errado.


20. ETL versus ELT em uma tabela prática

CaracterísticaETL clássicoELT moderno
OrdemExtrai, transforma, carregaExtrai, carrega, transforma
Local da transformaçãoFora do destino analíticoDentro do Warehouse ou Lakehouse
Dados brutosFrequentemente descartadosNormalmente preservados
ModelagemAntes da cargaPode evoluir após a carga
FlexibilidadeMenorMaior
StorageTratado como recurso caroGeralmente mais acessível
ProcessamentoServidor ETL dedicadoPlataforma analítica
Mudança de schemaPode quebrar o pipelinePode ser absorvida com mais flexibilidade
Uso típicoDW tradicionalCloud Warehouse e Lakehouse
GovernançaForte antes da cargaDeve existir em múltiplas camadas

21. ETL ainda é útil?

Sim, e muito.

O ELT não matou o ETL.

Existem situações em que transformar antes de carregar é obrigatório.

Por exemplo:

  • dados pessoais que precisam ser mascarados;

  • informações médicas;

  • dados bancários;

  • números de documentos;

  • segredos comerciais;

  • restrições regulatórias;

  • limites de residência de dados;

  • necessidade de reduzir volumes;

  • destino com capacidade limitada.

Imagine um arquivo contendo CPF, salário e informações de saúde.

Carregar tudo em uma plataforma sem proteção e decidir depois o que mascarar seria perigoso.

Nesse caso, parte da transformação precisa ocorrer antes da carga.

Portanto, muitas arquiteturas modernas usam uma abordagem híbrida:

Extração
   ↓
Mascaramento e validação
   ↓
Carga na camada bruta protegida
   ↓
Transformações analíticas

É uma combinação de ETL e ELT.


22. O mainframe dentro da arquitetura moderna

O IBM Z não está fora dessa evolução.

Na verdade, ele frequentemente é a origem dos dados mais importantes da empresa.

Sistemas mainframe podem armazenar:

  • contas bancárias;

  • apólices;

  • cartões;

  • pedidos;

  • estoques;

  • reservas;

  • folhas de pagamento;

  • transações governamentais;

  • informações fiscais;

  • cadastros de clientes.

Uma arquitetura moderna pode ser:

CICS / IMS / COBOL
          ↓
Db2 / VSAM / IMS DB
          ↓
CDC / MQ / API / Arquivo
          ↓
Data Lakehouse
          ↓
dbt
          ↓
Modelo analítico
          ↓
Power BI / Tableau / Qlik
          ↓
IA e Machine Learning

Observe que o programa COBOL não desapareceu.

Ele continua processando a transação central.

O que mudou foi a forma de distribuir e explorar os dados produzidos por ele.


23. Exemplo completo: dados de cartão de crédito

Vamos construir um exemplo.

Um sistema COBOL processa compras de cartão.

Cada transação contém:

NUMERO-CARTAO
DATA-HORA
ESTABELECIMENTO
VALOR
PAIS
CODIGO-RESPOSTA

No ETL clássico

  1. O COBOL gera um arquivo ao final do dia.

  2. O arquivo é enviado ao servidor de ETL.

  3. A ferramenta valida os registros.

  4. Os dados são enriquecidos.

  5. As moedas são convertidas.

  6. Transações inválidas são separadas.

  7. Os dados prontos são carregados no DW.

  8. O relatório é atualizado pela manhã.

No ELT moderno

  1. As transações são capturadas por CDC ou streaming.

  2. Os dados brutos são carregados no Lakehouse.

  3. Uma camada Silver padroniza moedas e datas.

  4. Uma camada Gold calcula indicadores.

  5. O dashboard é atualizado em intervalos menores.

  6. Um modelo de fraude analisa padrões quase em tempo real.

O sistema COBOL continua sendo a fonte confiável.

O ELT amplia as formas de consumir seus dados.


24. Qualidade de dados continua sendo obrigatória

Um dos maiores perigos do ELT é interpretar “carregar tudo” como “aceitar qualquer coisa sem controle”.

Isso seria um erro.

Dados brutos podem ser preservados, mas precisam de:

  • catálogo;

  • segurança;

  • linhagem;

  • classificação;

  • testes;

  • monitoramento;

  • regras de retenção;

  • controle de acesso.

Testes comuns incluem:

Teste de unicidade

CUSTOMER_ID não pode se repetir.

Teste de nulidade

ACCOUNT_ID não pode ser nulo.

Teste de integridade

Todo CUSTOMER_ID de ACCOUNT deve existir em CUSTOMER.

Teste de domínio

STATUS deve ser A, I ou B.

Teste de volume

A carga diária não pode cair 90% sem gerar alerta.

Qualidade de dados não desaparece no ELT.

Ela apenas muda de lugar e se torna mais automatizada.


25. Schema-on-write e schema-on-read

Uma diferença conceitual importante é a relação entre dados e esquema.

Schema-on-write

O esquema é definido antes da gravação.

Isso é comum no Data Warehouse clássico.

Definir tabela
      ↓
Validar formato
      ↓
Carregar dados

Schema-on-read

O dado é armazenado primeiro.

O esquema é aplicado quando ele é lido.

Armazenar dado bruto
      ↓
Interpretar conforme a necessidade

O ETL tradicional está mais próximo do schema-on-write.

O Data Lake está mais próximo do schema-on-read.

O Lakehouse tenta equilibrar os dois.


26. Curiosidades para o COBOL Padawan

Curiosidade 1 — O batch já fazia pipelines

Muito antes de “pipeline de dados” virar expressão de moda, equipes mainframe já encadeavam jobs com JCL e schedulers.

Curiosidade 2 — Staging não é invenção recente

Datasets temporários, arquivos intermediários e tabelas de trabalho existem há décadas.

Curiosidade 3 — CDC também não nasceu ontem

A captura de alterações em logs transacionais possui uma longa história em bancos corporativos.

Curiosidade 4 — SQL virou código de engenharia

Ferramentas modernas aproximaram SQL de práticas já comuns em linguagens como COBOL, Java e Python: versionamento, testes e revisão.

Curiosidade 5 — ELT pode gerar custos enormes

Carregar tudo é fácil. Processar tudo repetidamente pode ser caro.

Uma query mal escrita em uma plataforma elástica pode escalar muito bem — inclusive a conta.


27. Dicas práticas para o programador COBOL iniciante

Dica 1 — Aprenda SQL de verdade

Entenda:

  • JOIN;

  • GROUP BY;

  • funções de janela;

  • CTE;

  • agregações;

  • tratamento de nulos;

  • datas;

  • performance.

O SQL é uma ponte entre o mainframe e a engenharia de dados moderna.

Dica 2 — Entenda arquivos

Continue dominando:

  • FB;

  • VB;

  • LRECL;

  • EBCDIC;

  • ASCII;

  • delimitadores;

  • copybooks;

  • packed decimal;

  • zoned decimal.

Grande parte dos problemas de integração nasce no formato dos dados.

Dica 3 — Aprenda JSON e APIs

Sistemas modernos frequentemente trocam dados em JSON.

Compreender APIs REST e z/OS Connect amplia muito o horizonte do programador COBOL.

Dica 4 — Estude Git

Versionamento não é exclusivo do código Java.

SQL, JCL, scripts, modelos dbt e documentação também devem ser versionados.

Dica 5 — Aprenda conceitos, não apenas ferramentas

Ferramentas mudam.

Os conceitos permanecem:

  • extração;

  • transformação;

  • carga;

  • dependência;

  • qualidade;

  • reconciliação;

  • governança;

  • observabilidade.

Dica 6 — Nunca ignore reconciliação

Sempre compare:

Registros extraídos
Registros transformados
Registros rejeitados
Registros carregados

A equação precisa fechar.

Extraídos = Carregados + Rejeitados

Quando não fecha, existe um fantasma no pipeline.


28. Passo a passo para compreender uma arquitetura de dados

Quando encontrar um pipeline, faça estas perguntas.

Passo 1 — Qual é a origem?

Db2?

VSAM?

IMS?

API?

Arquivo?

ERP?

Passo 2 — Como os dados são extraídos?

Batch?

CDC?

Streaming?

API?

Unload?

Passo 3 — Onde os dados brutos ficam?

Staging?

Data Lake?

Tabela temporária?

Dataset?

Passo 4 — Onde ocorre a transformação?

Programa COBOL?

Ferramenta ETL?

SQL?

dbt?

Spark?

Passo 5 — Quem orquestra?

JES2?

Control-M?

Airflow?

Scheduler de nuvem?

Passo 6 — Como a qualidade é validada?

Contagens?

Testes automáticos?

Regras de integridade?

Passo 7 — Quem consome?

Power BI?

Relatório batch?

Aplicação?

IA?

Auditoria?

Passo 8 — Como falhas são tratadas?

Restart?

Retry?

Checkpoint?

Reprocessamento?

Rollback?

Essas perguntas revelam a arquitetura real, independentemente das ferramentas utilizadas.


29. Easter egg: a diretiva secreta do ETL

Nos arquivos perdidos da Federação, existe uma suposta diretiva de engenharia de dados conhecida como Diretiva ETL-1701:

“Nenhum dado deverá entrar no computador central da nave antes de ser validado, padronizado e aprovado pelo oficial de ciência.”

Essa era a filosofia do ETL clássico.

Anos depois, durante uma missão em um quadrante desconhecido, a tripulação percebeu que descartar dados considerados inúteis poderia eliminar pistas valiosas.

Nasceu então a Diretiva ELT-1701-D:

“Preserve o dado original. A informação aparentemente irrelevante de hoje pode ser a chave lógica da missão de amanhã.”

A letra D, naturalmente, é uma homenagem à Enterprise-D.

Coincidência?

Talvez.

Mas no Bellacosa Mainframe, coincidências tecnológicas costumam esconder um dataset catalogado.


30. ETL ou ELT: qual é melhor?

A resposta lógica é:

Depende.

Use ETL quando:

  • dados precisam ser protegidos antes da carga;

  • o volume deve ser reduzido;

  • o destino possui limitações;

  • regras precisam ser aplicadas previamente;

  • a governança exige forte controle antecipado.

Use ELT quando:

  • deseja preservar dados brutos;

  • precisa de flexibilidade;

  • utiliza uma plataforma analítica poderosa;

  • pretende criar múltiplos modelos;

  • trabalha com ciência de dados e IA;

  • precisa reprocessar históricos.

Use uma arquitetura híbrida quando:

  • segurança e flexibilidade são igualmente importantes;

  • existem sistemas legados e modernos;

  • parte das regras deve ocorrer antes da carga;

  • outras transformações podem acontecer depois.

Na maioria das grandes empresas, essa última opção é a mais realista.


Conclusão: o T apenas mudou de cabine

A evolução do ETL para o ELT representa muito mais do que a inversão de duas letras.

O ETL nasceu em um mundo no qual armazenamento e processamento eram caros. Por isso, os dados precisavam ser limpos, filtrados e modelados antes de entrar no Data Warehouse.

O ELT ganhou força em um mundo de armazenamento abundante, plataformas elásticas, nuvem, grandes volumes, inteligência artificial e necessidades analíticas que mudam rapidamente.

No ETL, o modelo decide o que entra.

No ELT, o dado entra primeiro e o modelo pode nascer depois.

Entretanto, isso não significa que o ETL esteja ultrapassado, que o batch tenha morrido ou que o mainframe tenha ficado para trás.

Muito pelo contrário.

Os sistemas COBOL, Db2, IMS, VSAM e CICS continuam gerando os dados mais críticos de inúmeras empresas. A diferença é que agora esses dados podem viajar por CDC, APIs, MQ, arquivos e eventos até plataformas modernas, nas quais são transformados, testados, modelados e utilizados em dashboards, algoritmos e aplicações de inteligência artificial.

O programador COBOL Padawan que compreende ETL e ELT deixa de enxergar apenas o programa e começa a enxergar a jornada completa do dado.

Ele entende de onde o registro nasceu.

Como foi extraído.

Onde foi armazenado.

Que regras foram aplicadas.

Quem consumiu a informação.

E o que acontece quando alguma etapa falha.

Essa visão transforma um simples programador em um verdadeiro engenheiro de sistemas corporativos.

No fim, o “T” não desapareceu.

Ele apenas mudou de posição.

Mudou de servidor.

Mudou de ferramenta.

Mudou de cabine na Enterprise.

Mas continua sendo responsável por uma das tarefas mais importantes de toda a engenharia de dados: transformar registros isolados em informação confiável.

E, como diria o Sr. Spock diante de um pipeline perfeitamente reconciliado:

“Dados sem contexto são apenas registros. Dados transformados com lógica tornam-se conhecimento.”

Vida longa ao COBOL.

Vida longa ao SQL.

E vida longa aos pipelines que conectam o IBM Z ao futuro.

segunda-feira, 14 de abril de 2014

🎯 O guia mínimo que separa curiosos de verdadeiros Data Scientists

 

Bellacosa Mainframe apresenta Python na Ciencia de Dados

🎯 O guia mínimo que separa curiosos de verdadeiros Data Scientists

Python é a principal linguagem utilizada em Data Science, permitindo transformar grandes volumes de dados em insights valiosos para negócios e pesquisa. 

Com bibliotecas essenciais como NumPy, Pandas, Matplotlib, Seaborn e Scikit-learn, é possível realizar todo o ciclo analítico: carregamento, limpeza, exploração, visualização e modelagem de dados.

O Pandas oferece DataFrames poderosos para manipulação eficiente de informações, enquanto o NumPy garante cálculos vetorizados de alta performance. Ferramentas de visualização ajudam a identificar padrões, tendências e outliers, fundamentais para a análise exploratória. Já o Scikit-learn possibilita a criação de modelos de Machine Learning para previsões e classificações. 

Esse ecossistema torna Python indispensável em áreas como finanças, marketing, saúde, engenharia e Big Data. Aprender esses fundamentos é o primeiro passo para atuar como cientista de dados, analista ou engenheiro de dados, acompanhando a crescente demanda por profissionais capazes de extrair valor estratégico a partir dos dados.

🐍🔥 Cheatsheet Python para Data Science

🧠 Stack Essencial

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

👉 90% dos projetos começam assim.


📊 NumPy — Matemática Vetorizada (Base de Tudo)

Criar arrays

a = np.array([1, 2, 3])
b = np.zeros(5)
c = np.ones((2,3))
d = np.arange(0,10)
e = np.linspace(0,1,5)

Operações vetoriais

a * 2
a + b
np.sqrt(a)
np.mean(a)
np.sum(a)

👉 Sem loops → extremamente rápido.


📚 Pandas — DataFrames (o coração da Data Science)

Criar DataFrame

df = pd.DataFrame({
"nome": ["Ana", "João"],
"idade": [25, 30]
})

Ler arquivos

pd.read_csv("dados.csv")
pd.read_excel("dados.xlsx")
pd.read_json("dados.json")

Visualização inicial

df.head()
df.tail()
df.info()
df.describe()
df.shape
df.columns

👉 Primeiros comandos após carregar dados.


🔎 Seleção de dados

Coluna

df["idade"]

Múltiplas colunas

df[["nome", "idade"]]

Filtro

df[df["idade"] > 25]

Filtro múltiplo

df[(df["idade"] > 25) & (df["cidade"] == "SP")]

✏️ Modificação de dados

Nova coluna

df["idade_futura"] = df["idade"] + 5

Remover coluna

df.drop("idade", axis=1)

Valores ausentes

df.isna()
df.dropna()
df.fillna(0)

📈 Agrupamento (Group By)

df.groupby("cidade")["salario"].mean()

👉 Essencial para análise exploratória.


🔄 Ordenação

df.sort_values("idade")
df.sort_values("idade", ascending=False)

📊 Estatísticas rápidas

df.mean()
df.median()
df.std()
df.min()
df.max()
df.corr()

📉 Visualização com Matplotlib

Linha

plt.plot(df["idade"])
plt.show()

Histograma

plt.hist(df["idade"])
plt.show()

Scatter

plt.scatter(df["idade"], df["salario"])
plt.show()

🎨 Seaborn — Gráficos bonitos por padrão

sns.histplot(df["idade"])
sns.boxplot(x=df["idade"])
sns.scatterplot(x="idade", y="salario", data=df)

🧹 Limpeza de dados

Remover duplicatas

df.drop_duplicates()

Converter tipos

df["idade"] = df["idade"].astype(int)

Datas

df["data"] = pd.to_datetime(df["data"])
df["ano"] = df["data"].dt.year

🤖 Machine Learning básico (Scikit-Learn)

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

Dividir treino/teste

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

Treinar modelo

model = LinearRegression()
model.fit(X_train, y_train)

Previsão

pred = model.predict(X_test)

🧠 Pipeline mental da Data Science

1️⃣ Carregar dados
2️⃣ Explorar
3️⃣ Limpar
4️⃣ Transformar
5️⃣ Visualizar
6️⃣ Modelar
7️⃣ Avaliar


⚡ Truques poderosos

Aplicar função em coluna

df["log_salario"] = np.log(df["salario"])

Apply personalizado

df["categoria"] = df["idade"].apply(
lambda x: "Adulto" if x >= 18 else "Menor"
)

Amostra aleatória

df.sample(5)

Contagem de valores

df["cidade"].value_counts()

💾 Exportar dados

df.to_csv("saida.csv", index=False)
df.to_excel("saida.xlsx")

🔥 Ferramentas mais usadas na indústria

🐍 Python
📊 Pandas
⚡ NumPy
📈 Matplotlib / Seaborn
🤖 Scikit-Learn
🧠 TensorFlow / PyTorch
☁️ Spark / Databricks


☕ Frase de cientista de dados

👉 “Sem Pandas, Python é só uma linguagem.
Com Pandas, vira uma ferramenta de descoberta.”

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...