DATTA Notebook — documentação e exemplos
Preview — funcionalidade em desenvolvimento. Comportamento, telas e contratos podem mudar sem aviso entre versões.
Análises sérias costumam começar onde o dashboard termina: você precisa de código, estatística e liberdade para cruzar fontes. O DATTA Notebook é o ambiente iterativo, no estilo Jupyter, onde SQL analítico, grafo, busca textual e PySpark convivem no mesmo caderno — sem instalar ambiente, sem caçar credencial e sem colar string de conexão antes da primeira linha útil. Esta página é o mapa: o que existe, por onde começar e para onde ir em seguida.
O que você tem à disposição
- Trino 480 (SQL analítico) — agregações massivas sobre Parquet/ORC armazenados em S3/GCS.
- Neo4j (grafos) — processos, partes e legislação com seus relacionamentos.
- OpenSearch (texto integral) — índices de documentos.
- PySpark — transformações e machine learning em escala.
O motor analítico anterior, Impala 4.0.0, foi descontinuado: todo SQL novo é escrito para o Trino, e o guia de uso traz a tabela de equivalências para quem está migrando consultas antigas.
A documentação, e para quem ela serve
| Material | O que traz | Para quem |
|---|---|---|
| Guia de uso do Notebook | Como importar o notebook, as configurações Impala → Trino, bancos e tabelas disponíveis, os 3 padrões de uso (distributivo, semântico e contextual), um exemplo prático de análise de risco multi-fonte e as seções de desempenho, boas práticas e solução de problemas | Quem quer rodar consultas ad-hoc e explorar dados |
| Configuração do Trino | Arquitetura da instalação (Trino 480 + Hive Metastore), catálogos disponíveis (hive, iceberg, memory), variáveis de ambiente, migração de SQL do Impala, ajuste fino de desempenho, conectividade, solução de problemas e consultas otimizadas | Quem administra ou otimiza o Trino |
| Notebook de exemplo multi-fonte | Arquivo importável com 10 células (Markdown, SQL e Python), padrões reais de uso (Trino puro, Trino + Neo4j, OpenSearch) e análises de beneficiários, renda e anomalias — pronto para copiar e adaptar | Analistas que querem um modelo para começar |
Primeiros passos
- Abra o notebook pelo navegador, em
http://<endereco-da-plataforma>/jupyter— o ambiente é servido pela própria plataforma, sem instalação local. - Clique em Importar Notebook, no canto superior direito, e selecione o arquivo
notebook-exemplo-multi-fonte.dattanb. - Clique em Iniciar Sessão Spark e aguarde de 30 a 60 segundos — é o tempo de preparar o ambiente de execução.
- Comece a rodar as células.
Sua primeira consulta
SQL analítico direto no Trino:
SELECT programa, COUNT(*) AS total
FROM hive.assistencia_social.beneficios
GROUP BY programa;Ou a mesma ideia em Python, com PySpark:
df = spark.sql("""
SELECT * FROM hive.assistencia_social.cidadaos LIMIT 1000
""").toPandas()
print(df.shape)Os dados disponíveis
Trino — assistência social
| Tabela | Registros | Colunas | Descrição |
|---|---|---|---|
cidadaos | ~2,3M | 10 | Cidadãos (CPF, renda, município) |
beneficios | ~5,1M | 9 | Programas (tipo, valor, titular) |
transacoes | ~12,4M | 9 | Movimentações (tipo, data, valor) |
eventos | ~3,8M | 6 | Eventos (tipo, data, resultado) |
alertas | ~450K | 9 | Alertas (severidade, tipo, confiança) |
Total: ~23M registros em Parquet — volume suficiente para sentir o desempenho de agregações reais.
Neo4j — grafo (13 bases)
datta-datacatalog→Dataset,Column,LineageNodedatta-ontology→Ontology,EntityType,DigitalTwindatta-graph→Processo,Parte,Empresa,Decisao
OpenSearch — texto integral
processos→ processos judiciaislegislacao→ leis e normasdocumentos→ documentos variados
Casos de uso típicos
1. Exploração inicial — conhecer o tamanho de cada tabela com SQL simples:
SELECT 'cidadaos' AS tabela, COUNT(*) FROM hive.assistencia_social.cidadaos
UNION ALL
SELECT 'beneficios', COUNT(*) FROM hive.assistencia_social.beneficios
-- ... e assim por diante2. Análise de qualidade — carregar uma amostra em pandas e inspecionar nulos e distribuições:
df = spark.sql("""
SELECT * FROM hive.assistencia_social.beneficios LIMIT 50000
""").toPandas()
print(df.isnull().sum())
print(df.describe())3. Correlação multi-fonte — beneficiários no Trino, processos relacionados no grafo e legislação no OpenSearch, tudo no mesmo caderno. A seção de enriquecimento do notebook de exemplo mostra o encadeamento completo.
Exemplo completo
import pyspark.sql.functions as F
import pandas as pd
# 1. Extrair (Trino)
df_beneficios = spark.sql("""
SELECT b.*, c.renda, c.municipio
FROM hive.assistencia_social.beneficios b
LEFT JOIN hive.assistencia_social.cidadaos c
ON b.titular_cpf = c.cpf
LIMIT 10000
""").toPandas()
# 2. Transformar (pandas)
df_beneficios['valor_por_renda'] = \
df_beneficios['valor'] / df_beneficios['renda'].fillna(1)
# 3. Enriquecer (Neo4j) — ver o notebook de exemplo
# 4. Visualizar
print(df_beneficios.groupby('programa')['valor'].agg(['count', 'sum', 'mean']))Configuração do ambiente
As conexões com Trino, Neo4j e Spark já chegam prontas no ambiente do notebook: as variáveis correspondentes são preenchidas pela instalação e as credenciais do Neo4j ficam guardadas no cofre de segredos da plataforma — nada disso precisa (nem deve) aparecer no seu código.
Mudar a configuração do Trino ou reiniciar o motor são tarefas de administração da instalação, não do caderno. Para saber quais catálogos e ajustes existem, veja a configuração do Trino; para aplicar uma mudança, fale com quem administra a plataforma.
Quando algo não funciona
| Sintoma | O que fazer |
|---|---|
| A sessão Spark não inicia | Aguarde o tempo de preparo (30 a 60 segundos) e tente de novo; se persistir, peça a quem administra a instalação para conferir o registro de execução do ambiente |
"Table not found" ao consultar o hive | Confira o nome com SHOW TABLES IN hive.assistencia_social; — se a lista vier vazia, a base de exemplo ainda não foi carregada (script de carga seed-trino.sql), e isso é um passo de administração |
| Consulta travada por mais de 5 minutos | Acrescente LIMIT e selecione só as colunas necessárias; use EXPLAIN para ver o plano de execução; se o volume for legítimo, peça mais memória para o Trino a quem administra a instalação |
Casos detalhados estão na seção de solução de problemas do guia de uso.
Aprendizagem progressiva
Nível 1 — SQL simples
- Leia o Padrão 1 do guia.
- Conte registros por tabela.
- Faça uma agregação simples (
SUM,AVG,COUNT).
Nível 2 — joins e transformações
- Leia o Padrão 2 do guia.
- Faça um
LEFT JOINentre tabelas. - Carregue o resultado em pandas e calcule estatísticas.
Nível 3 — multi-fonte integrada
- Leia o exemplo prático do guia.
- Combine Trino, Neo4j e OpenSearch no mesmo fluxo.
- Construa um detector de anomalias ou de padrões.
Checklist antes de começar
- [ ] Consegue abrir o notebook em
http://<endereco-da-plataforma>/jupyter. - [ ] O Trino responde a
SHOW CATALOGS;. - [ ] As tabelas existem (
SHOW TABLES IN hive.assistencia_social;). - [ ] A conexão com o Neo4j funciona (as credenciais já vêm resolvidas no ambiente; falha aqui é caso para a administração da instalação).
- [ ] Leu a configuração do Trino, se o Trino for novidade para você.
- [ ] Importou o notebook de exemplo.
- [ ] Rodou a primeira consulta (
SELECT COUNT(...)). - [ ] Explorou os dados com
LIMITe agregações.
Links úteis
| Recurso | Link |
|---|---|
| Documentação do Trino | https://trino.io/docs/ |
| Manual de Cypher do Neo4j | https://neo4j.com/docs/cypher-manual/ |
| SQL do OpenSearch | https://opensearch.org/docs/latest/search-plugins/sql/ |
| PySpark SQL | https://spark.apache.org/docs/latest/sql-programming-guide.html |
| Arquitetura de catálogo e ontologia do DATTA | Arquitetura do Data Catalog + Ontologia -- Plataforma DATTA |
| Automação e integrações | referência de API |
Suporte
- Guia de uso: Guia: DATTA Notebook Multi-Fonte
- Configuração técnica: Configuração: Trino 480 (Substitui Impala)
- Exemplo executável: notebook-exemplo-multi-fonte.dattanb
- Problemas e sugestões: abra uma issue no GitHub com a etiqueta
[notebook] - Conversa com o time: canal
#datta-data-analyticsno Slack
Bom proveito — e boas descobertas.