Tag Datamart
Após o processamento dos dados estatísticos, o processo no Elasticsearch receberá uma etiqueta contendo os metadados resultantes, incluindo o ID do Datamart, Situação Atual, Fase Atual, Data da Baixa, Data do Caso Novo e Flag Criminal:
Exemplo da etiqueta do datamart:
...
"datamart" : {
"@timestamp" : "2024-11-09T18:07:40.192489",
"updated_at" : "2024-11-09T04:33:14.118380",
"id_situacao_atual" : 10,
"id" : 639186446,
"situacao_atual" : "Baixado definitivamente",
"id_fase_atual" : 4,
"fase_atual" : "OUTRO",
"data_cn" : "2005-04-28T00:00:00",
"data_situacao_atual" : "2024-04-03T11:33:46",
"criminal" : false,
"data_baixa" : "2011-01-10T00:00:00"
}
A partir desses metadas é possível, por exemplo, identificar as chaves do Datamart de processos sigilosos e as respectivas chaves do Datajud (Elastic) para realização de futuras manutenções.
Consultas via Kibana
Dados consolidados:
Processos em Tramitação por Grau:
GET view-processos-sigilo-*/_search
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"group_by_grau": {
"terms": {
"field": "grau",
"size": 5
},
"aggs": {
"group_by_situacao": {
"terms": {
"field": "datamart.situacao_atual.keyword",
"size": 100
}
}
}
}
}
}
IDs do Datamart de processos Sigilosos
Processos em segredo de justiça na situação "Tramitando":
GET view-processos-sigilo-*/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"dadosBasicos.nivelSigilo": {
"gte": 1
}
}
},
{
"term": {
"datamart.id_situacao_atual": {
"value": 25
}
}
}
]
}
}
}
ETL de dados do Datajud usando a Tag Datamart
CSV dos processos com IDs sigilosos do Painel de Estatísticas
Para os processos sigilosos, os dados exportados para download do Painel de Estatística apresentam apenas a identificação do ID do Datamart como mostra a tabela abaixo:
| Tribunal | Município | Ano | Mês | Processo |
|---|---|---|---|---|
| CNJ | BRASÍLIA | 2024 | 2 | sigiloso(405283225) |
| CNJ | BRASÍLIA | 2024 | 6 | sigiloso(405283291) |
| CNJ | BRASÍLIA | 2023 | 8 | sigiloso(405283312) |
A partir do script abaixo, é possível gerar a relação dos processos no Datajud a partir da lista de IDs do Datamart que deseja pesquisar:
- Python
- R
from elasticsearch import Elasticsearch
import pandas as pd
url = "https://api.datajud.cnj.jus.br"
user = '<Usuário da API Datajud>'
password = '<Senha da API Datajud>'
# Preparando a Consulta
# Processos com IDs 405283225, 405283291, 405283312
consulta_dsl = {
"terms": {
"datamart.id": [405283225, 405283291, 405283312]
}
}
# Conexão com o Elasticsearch
client = Elasticsearch(
url, # Elasticsearch endpoint
basic_auth=(user, password), # Usuário e senha
request_timeout=60, # Timeout da requisição em segundos
)
# Realizando a consulta
response = client.search(index="view-processos-sigilo-*",
query=consulta_dsl,
source_includes=["datamart.*",
"dadosBasicos.siglaTribunal",
"dadosBasicos.nivelSigilo",
"dadosBasicos.grau",
"dadosBasicos.numero"], # Campos que serão retornados
)
# Transformando a resposta em um DataFrame
df = pd.json_normalize(response['hits']['hits'])
# Salvando o DataFrame em um arquivo CSV
write_csv = df.to_csv('processos_sigilosos.csv', sep=';', index=False)
# Pacotes necessários
#install.package("elastic")
#install.packages("httr")
#install.packages("dplyr")
#install.packages('purrr')
library(elastic)
library(jsonlite)
library(httr)
library(dplyr)
library(purrr)
url <- 'https://api.datajud.cnj.jus.br'
usuario = '<Usuário da API Datajud>'
senha = '<Senha da API Datajud>'
# Preparando a Consulta
# Processos com IDs 405283225, 405283291, 405283312
consulta_dsl <- list(
"_source" = c("datamart.*",
"dadosBasicos.siglaTribunal",
"dadosBasicos.nivelSigilo",
"dadosBasicos.grau",
"dadosBasicos.numero"),
"query" = list(
"terms" = list(
"datamart.id" = c(405283225, 405283291, 405283312)
)
)
)
# Conexão com o Elasticsearch
client <- elastic::connect(host=url, port=443, user = usuario, pwd = senha, transport_schema = "https")
# Realizando a consulta
response <- Search(client, index = 'view-processos-sigilo-*', body = consulta_dsl)
# Transformando a resposta em um DataFrame
hits <- response$hits$hits
# Função para extrair o _source
extrair_source <- function(hit) {
hit[!names(hit) %in% "_source"]
}
# Aplicar para todos e transformar em Dataframe
dados_processados <- lapply(hits, extrair_source)
df_hits <- do.call(rbind, dados_processados)
df_dadosBasicos <- hits %>%
purrr::map_df(function(x) x$`_source`$`dadosBasicos`)
df_datamart <- hits %>%
purrr::map_df(function(x) x$`_source`$`datamart`)
# Juntando todos os dataframes
df_geral <- cbind(df_hits, df_dadosBasicos, df_datamart)
# Verificando o tipo das colunas
sapply(df_geral, class)
# Retirando formato de lista das colunas do df_hits para aplicar o write.table
df_geral$`_index` <- unlist(df_geral$`_index`)
df_geral$`_type` <- unlist(df_geral$`_type`)
df_geral$`_id` <- unlist(df_geral$`_id`)
df_geral$`_score` <- unlist(df_geral$`_score`)
# Salvando o DataFrame em um arquivo csv
write_csv <- write.table(df_geral, 'processos_sigilosos.csv', row.names = FALSE, sep=';')
CSV com processos "Tramitando" Sigilosos do Datamart
Além disso, é possível pesquisar por qualquer parâmetro disponível na tag datamart, conforme o exemplo abaixo que filtra os processos sigilosos em tramitação:
- Python
- R
from elasticsearch import Elasticsearch
import pandas as pd
url = "https://api.datajud.cnj.jus.br"
user = '<Usuário da API Datajud>'
password = '<Senha da API Datajud>'
# Preparando a Consulta
# Processos em tramitação com nível de sigilo 1 ou superior
consulta_dsl = {
"bool": {
"must": [
{
"range": {
"dadosBasicos.nivelSigilo": {
"gte": 1
}
}
},
{
"term": {
"datamart.id_situacao_atual": {
"value": 25
}
}
}
]
}
}
# Conexão com o Elasticsearch
client = Elasticsearch(
url, # Elasticsearch endpoint
basic_auth=(user, password), # Usuário e senha
request_timeout=60, # Timeout da requisição em segundos
)
# Realizando a consulta
response = client.search(index="view-processos-sigilo-*",
query=consulta_dsl,
source_includes=["datamart.*",
"dadosBasicos.siglaTribunal",
"dadosBasicos.nivelSigilo",
"dadosBasicos.grau",
"dadosBasicos.numero"], # Campos que serão retornados
)
# Transformando a resposta em um DataFrame
df = pd.json_normalize(response['hits']['hits'])
# Salvando o DataFrame em um arquivo CSV
write_csv = df.to_csv('processos_sigilosos.csv', sep=';', index=False)
# Pacotes necessários
#install.package("elastic")
#install.packages("httr")
#install.packages("dplyr")
#install.packages('purrr')
library(elastic)
library(jsonlite)
library(httr)
library(dplyr)
library(purrr)
url <- 'https://api.datajud.cnj.jus.br'
usuario = '<Usuário da API Datajud>'
senha = '<Senha da API Datajud>'
# Preparando a consulta
# Processos em tramitação com nível de sígilo 1 ou superior
consulta_dsl <- list(
"_source" = c("datamart.*",
"dadosBasicos.siglaTribunal",
"dadosBasicos.nivelSigilo",
"dadosBasicos.grau",
"dadosBasicos.numero"),
"query" = list(
"bool" = list(
"must" = list(
list(
"range" = list(
"dadosBasicos.nivelSigilo" = list("gte" = 1)
)
),
list(
"term" = list(
"datamart.id_situacao_atual" = 25
)
)
)
)
)
)
# Conexão com o Elasticsearch
client <- elastic::connect(host=url, port=443, user = usuario, pwd = senha, transport_schema = "https")
# Realizando a consulta
response <- Search(client, index = 'view-processos-sigilo-*', body = consulta_dsl)
# Transformando a resposta em um DataFrame
hits <- response$hits$hits
# Função para extrair o _source
extrair_source <- function(hit) {
hit[!names(hit) %in% "_source"]
}
# Aplicar para todos e transformar em Dataframe
dados_processados <- lapply(hits, extrair_source)
df_hits <- do.call(rbind, dados_processados)
df_dadosBasicos <- hits %>%
purrr::map_df(function(x) x$`_source`$`dadosBasicos`)
df_datamart <- hits %>%
purrr::map_df(function(x) x$`_source`$`datamart`)
# Juntando todos os dataframes
df_geral <- cbind(df_hits, df_dadosBasicos, df_datamart)
# Verificando o tipo das colunas
sapply(df_geral, class)
# Retirando formato de lista das colunas do df_hits para aplicar o write.table
df_geral$`_index` <- unlist(df_geral$`_index`)
df_geral$`_type` <- unlist(df_geral$`_type`)
df_geral$`_id` <- unlist(df_geral$`_id`)
df_geral$`_score` <- unlist(df_geral$`_score`)
# Salvando o DataFrame em um arquivo csv
write_csv <- write.table(df_geral, 'processos_sigilosos.csv', row.names = FALSE, sep=';')
Por padrão, as pesquisas na API do Elasticsearch retornam até 10 registros por solicitação. No entanto, é possível aumentar esse número utilizando o parâmetro "size" para a paginação dos registros. Esse parâmetro permite especificar quantos resultados devem ser exibidos por página, podendo variar de 10 até 10.000 registros. Para mais informações, consulte a Pesquisa com Paginação.