diff --git a/dbt_project.yml b/dbt_project.yml index b07a8ced..0c66d389 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -120,6 +120,9 @@ models: br_cgu_pessoal_executivo_federal: +materialized: table +schema: br_cgu_pessoal_executivo_federal + br_cnj_improbidade_administrativa: + +materialized: table + +schema: br_cnj_improbidade_administrativa br_cnpq_bolsas: +materialized: table +schema: br_cnpq_bolsas diff --git a/models/br_cnj_improbidade_administrativa/condenacao.sql b/models/br_cnj_improbidade_administrativa/condenacao.sql new file mode 100644 index 00000000..0cf1b9c0 --- /dev/null +++ b/models/br_cnj_improbidade_administrativa/condenacao.sql @@ -0,0 +1,346 @@ +{{ + config( + schema="br_cnj_improbidade_administrativa", + alias="condenacao", + materialized="table", + ) +}} + +select + safe_cast(nome as string) nome, + safe_cast(num_processo as string) numero_processo, + safe_cast(condenacao_id as string) id_condenacao, + safe_cast(processo_id as string) id_processo, + case + when tipo_pessoa = "F" + then "Física" + when tipo_pessoa = "J" + then "Jurídica" + else null + end as tipo_pessoa, + safe_cast(pessoa_id as string) id_pessoa, + case + when sexo = "M" then "Masculino" when sexo = "F" then "Feminino" else null + end as sexo, + case + when publico = "S" then true when publico = "N" then false else null + end as funcionario_publico, + case + when esfera_pessoa = "F" + then "Federal" + when esfera_pessoa = "D" + then "Distrital" + when esfera_pessoa = "E" + then "Estadual" + when esfera_pessoa = "M" + then "Municipal" + else null + end as esfera_funcionario, + safe_cast(orgao as string) orgao, + safe_cast(cargo as string) cargo, + safe_cast(if(length(uf) = 2, uf, null) as string) sigla_uf, + case + when + coalesce(`1o_grau___justica_estadual`, `1o_grau___justica_federal`) + is not null + then "1 grau" + when + coalesce(`2o_grau___justica_estadual`, `2o_grau___justica_federal`) + is not null + then "2 grau" + when `auditoria_militar` is not null + then "Militar" + else null + end as instancia, + safe_cast( + coalesce( + tribunal_de_justica_estadual, + tribunal_regional_federal, + tribunal_militar_estadual + ) as string + ) as tribunal, + safe_cast(esfera as string) esfera_processo, + safe_cast(comarca as string) comarca, + safe_cast(parse_datetime('%d/%m/%Y', data_propositura) as date) data_propositura, + safe_cast( + parse_datetime('%d/%m/%Y %H:%M:%S', data_cadastro) as date + ) as data_cadastro, + case + when gabinete_de_desembargador_estadual is not null + then "Estadual" + when gabinete_de_desembargador_federal is not null + then "Federal" + else null + end as esfera_gabinete_desembargador, + safe_cast( + coalesce( + gabinete_de_desembargador_estadual, gabinete_de_desembargador_federal + ) as string + ) as gabinete_desembargador, + safe_cast(secao_judiciaria as string) secao_judiciaria, + safe_cast(coalesce(subsecao, subsecao_1) as string) as subsecao_1, + safe_cast(subsecao_2 as string) as subsecao_2, + case + when + coalesce( + varas_e_juizados_federais, + varas_e_juizados_federais_1, + varas_e_juizados_federais_2 + ) + is not null + then "Federal" + when + coalesce( + varas_e_juizados_estaduais, + varas_e_juizados_estaduais_1, + varas_e_juizados_estaduais_2 + ) + is not null + then "Estadual" + else null + end as esfera_vara_juizado, + coalesce( + varas_e_juizados_federais, + varas_e_juizados_federais_1, + varas_e_juizados_estaduais, + varas_e_juizados_estaduais_1 + ) as vara_juizados_1, + coalesce( + varas_e_juizados_federais_2, varas_e_juizados_estaduais_2 + ) as vara_juizados_2, + safe_cast(auditoria_militar as string) auditoria_militar, + safe_cast( + parse_datetime('%d/%m/%Y', data_do_transito_em_julgado) as date + ) as data_pena, + safe_cast(if(inelegibilidade = "SIM", true, false) as bool) teve_inelegivel, + safe_cast( + if( + pagamento_de_multa is not null, + contains_substr(pagamento_de_multa, "SIM"), + false + ) as bool + ) as teve_multa, + safe_cast( + replace( + replace(substr(pagamento_de_multa, length("SIM Valor R$ ")), ".", ""), + ",", + "." + ) as float64 + ) as valor_multa, + safe_cast( + if( + pena_privativa_de_liberdade is not null, + contains_substr(pena_privativa_de_liberdade, "SIM"), + false + ) as bool + ) teve_pena, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + pena_privativa_de_liberdade, r'De:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as inicio_pena, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + pena_privativa_de_liberdade, r'Até:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as fim_pena, + safe_cast( + regexp_extract( + pena_privativa_de_liberdade, r'Anos: [^ ]+ Meses: [^ ]+ Dias: [^ ]+' + ) as string + ) as duracao_pena, + safe_cast( + if( + perda_de_bens_ou_valores_acrescidos_ilicitamente_ao_patrimonio is not null, + contains_substr( + perda_de_bens_ou_valores_acrescidos_ilicitamente_ao_patrimonio, "SIM" + ), + false + ) as bool + ) teve_perda_bens, + safe_cast( + replace( + replace( + substr( + perda_de_bens_ou_valores_acrescidos_ilicitamente_ao_patrimonio, + length("SIM Valor R$ ") + ), + ".", + "" + ), + ",", + "." + ) as float64 + ) as valor_perda_bens, + safe_cast( + if(perda_de_emprego_cargo_funcao_publica = "SIM", true, false) as bool + ) teve_perda_cargo, + safe_cast( + if( + proibicao_de_contratar_com_o_poder_publico_ou_receber_incentivos_fiscais_ou_crediticios__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario + = "SIM", + true, + false + ) as bool + ) proibicao, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_contratar_com_o_poder_publico_ou_receber_incentivos_fiscais_ou_crediticios__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'De:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as inicio_proibicao, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_contratar_com_o_poder_publico_ou_receber_incentivos_fiscais_ou_crediticios__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'Até:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as fim_proibicao, + + safe_cast( + if( + proibicao_de_contratar_com_o_poder_publico__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario + = "SIM", + true, + false + ) as bool + ) proibicao_contratar_poder_publico, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_contratar_com_o_poder_publico__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'De:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as inicio_proibicao_contratar_poder_publico, + -- safe_cast(fim_pena as date) fim_pena, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_contratar_com_o_poder_publico__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'Até:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as fim_proibicao_contratar_poder_publico, + + safe_cast( + if( + proibicao_de_receber_incentivos_fiscais__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario + = "SIM", + true, + false + ) as bool + ) proibicao_receber_incentivos_fiscais, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_receber_incentivos_fiscais__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'De:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as inicio_proibicao_receber_incentivos_fiscais, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_receber_incentivos_fiscais__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'Até:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as fim_proibicao_receber_incentivos_fiscais, + + safe_cast( + if( + proibicao_de_receber_incentivos_crediticios__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario + = "SIM", + true, + false + ) as bool + ) proibicao_receber_incentivos_crediticios, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_receber_incentivos_crediticios__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'De:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as inicio_proibicao_receber_incentivos_crediticios, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + proibicao_de_receber_incentivos_crediticios__direta_ou_indiretamente__ainda_que_por_intermedio_de_pessoa_juridica_da_qual_seja_socio_majoritario, + r'Até:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as fim_proibicao_receber_incentivos_crediticios, + + safe_cast( + contains_substr(ressarcimento_integral_do_dano, "SIM") as bool + ) teve_ressarcimento, + safe_cast( + replace( + replace( + substr(ressarcimento_integral_do_dano, length("SIM Valor R$ ")), ".", "" + ), + ",", + "." + ) as float64 + ) as valor_ressarcimento, + safe_cast( + if( + ressarcimento_integral_do_dano is not null, + contains_substr(ressarcimento_integral_do_dano, "SIM"), + false + ) as bool + ) teve_suspensao, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + ressarcimento_integral_do_dano, r'De:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as inicio_suspensao, + safe_cast( + parse_datetime( + "%d/%m/%Y", + regexp_extract( + ressarcimento_integral_do_dano, r'Até:\s*([0-9]{2}/[0-9]{2}/[0-9]{4})' + ) + ) as date + ) as fim_suspensao, + safe_cast( + if( + suspensao_dos_direitos_politicos is not null, + contains_substr( + suspensao_dos_direitos_politicos, "Comunicação à Justiça Eleitoral SIM" + ), + false + ) as bool + ) comunicado_tse, + safe_cast(situacao as string) situacao, + safe_cast( + if(tipo_julgamento = "J", "Trânsito em julgado", "Órgão colegiado") as string + ) tipo_julgamento, + safe_cast(assunto_1 as string) assunto_1, + safe_cast(assunto_2 as string) assunto_2, + safe_cast(assunto_3 as string) assunto_3, + safe_cast(assunto_4 as string) assunto_4, + safe_cast(assunto_5 as string) assunto_5, +from `basedosdados-staging.br_cnj_improbidade_administrativa_staging.condenacao` diff --git a/models/br_cnj_improbidade_administrativa/schema.yml b/models/br_cnj_improbidade_administrativa/schema.yml new file mode 100644 index 00000000..d070dc2c --- /dev/null +++ b/models/br_cnj_improbidade_administrativa/schema.yml @@ -0,0 +1,217 @@ +--- +version: 2 +models: + - name: condenacao + description: Informações sobre processos já julgados, como nome da pessoa/empresa, data da pena, duração da pena, valor da multa. + columns: + - name: nome + description: Nome da pessoa, CPF ou CNPJ + - name: numero_processo + description: Número do processo + tests: + - not_null + - name: id_condenacao + description: ID da condenaçao + tests: + - not_null + - name: id_processo + description: ID do processo + tests: + - not_null + - name: tipo_pessoa + description: Tipo da pessoa, física ou jurídica + - name: id_pessoa + description: ID interno da pessoa. É utilizado para buscar informações da + pessoa + - name: sexo + description: Sexo + - name: funcionario_publico + description: É funcionário público ou não + - name: esfera_funcionario + description: Esfera do funcionário público + - name: orgao + description: Órgão que a pessoa trabalha + - name: cargo + description: Cargo que a pessoa exerce + - name: sigla_uf + description: Sigla UF + tests: + - relationships: + to: ref('br_bd_diretorios_nacional__uf') + field: sigla + - name: instancia + description: Instância + - name: tribunal + description: Nome do tribunal + - name: esfera_processo + description: Esfera do Processo + - name: comarca + description: Nome da Comarca + - name: data_propositura + description: Data da propositura da ação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_cadastro + description: Data de cadastro da informação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: esfera_gabinete_desembargador + description: Esfera do gabinete do desembargador + - name: gabinete_desembargador + description: Nome do gabinete do desembargado + - name: secao_judiciaria + description: Seção judiciária + - name: subsecao_1 + description: Nome da primeira subseção + - name: subsecao_2 + description: Nome da segunda subseção + - name: esfera_vara_juizado + description: Esfera da Vara Juizado + - name: vara_juizados_1 + description: Nome da primeira Vara Juizado + - name: vara_juizados_2 + description: Nome da segunda Vara Juizado + - name: auditoria_militar + description: Nome da vara da Auditoria Militar + - name: data_pena + description: Data da pena + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: teve_inelegivel + description: Teve inelegível + - name: teve_multa + description: Teve multa + - name: valor_multa + description: Valor da multa + - name: teve_pena + description: Teve pena + - name: inicio_pena + description: Data de inicio da pena + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: fim_pena + description: Data final da pena + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: teve_perda_bens + description: Teve perda de bens + - name: valor_perda_bens + description: Valor da perda de bens ou valores acrescidos ilicitamente ao + patrimônio + - name: teve_perda_cargo + description: Teve perda de Emprego/Cargo/Função Pública + - name: proibica + description: Proibição de Contratar com o Poder Público ou receber incentivos + fiscais ou creditícios, direta ou indiretamente, ainda que por intermédio + de pessoa jurídica da qual seja sócio majoritário + - name: inicio_proibicao + description: Data de início da proibição de contratar com o Poder Público + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: fim_proibicao + description: Data fim da proibição de contratar com o Poder Público + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: proibicao_contratar_poder_publico + description: Proibição de Contratar com o Poder Público, direta ou indiretamente, + ainda que por intermédio de pessoa jurídica da qual seja sócio majoritário? + - name: inicio_proibicao_contratar_poder_publico + description: Início da Proibição de Contratar com o Poder Público, direta + ou indiretamente, ainda que por intermédio de pessoa jurídica da qual seja + sócio majoritário + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: fim_proibicao_contratar_poder_publico + description: Fim da Proibição de Contratar com o Poder Público, direta ou + indiretamente, ainda que por intermédio de pessoa jurídica da qual seja + sócio majoritário + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: proibicao_receber_incentivos_fiscais + description: Proibição de receber incentivos fiscais, direta ou indiretamente, + ainda que por intermédio de pessoa jurídica da qual seja sócio majoritário? + - name: inicio_proibicao_receber_incentivos_fiscais + description: Início Proibição de receber incentivos fiscais, direta ou indiretamente, + ainda que por intermédio de pessoa jurídica da qual seja sócio majoritário + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: fim_proibicao_receber_incentivos_fiscais + description: Fim Proibição de receber incentivos fiscais, direta ou indiretamente, + ainda que por intermédio de pessoa jurídica da qual seja sócio majoritário + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: proibicao_receber_incentivos_crediticios + description: Proibição de receber incentivos creditícios, direta ou indiretamente, + ainda que por intermédio de pessoa jurídica da qual seja sócio majoritário? + - name: inicio_proibicao_receber_incentivos_crediticios + description: Iniício da Proibição de receber incentivos creditícios, direta + ou indiretamente, ainda que por intermédio de pessoa jurídica da qual seja + sócio majoritário + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: fim_proibicao_receber_incentivos_crediticios + description: Fim da Proibição de receber incentivos creditícios, direta ou + indiretamente, ainda que por intermédio de pessoa jurídica da qual seja + sócio majoritário + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: teve_ressarcimento + description: Teve ressarcimento integral do dano + - name: valor_ressarcimento + description: Valor do ressarcimento + - name: teve_suspensao + description: Teve suspensão dos Direitos Políticos + - name: inicio_suspensao + description: Data de início da suspensão + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: fim_suspensao + description: Data fim da suspensão + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: comunicado_tse + description: A suspensão foi comunicada ao TSE + - name: situacao + description: Situação da pessoa + - name: tipo_julgamento + description: Trânsito em julgado ou Órgão colegiado + - name: assunto_1 + description: Nome dos assuntos (entre 1 e 5 assuntos) da condenação + - name: assunto_2 + description: Nome dos assuntos (entre 1 e 5 assuntos) da condenação + - name: assunto_3 + description: Nome dos assuntos (entre 1 e 5 assuntos) da condenação + - name: assunto_4 + description: Nome dos assuntos (entre 1 e 5 assuntos) da condenação + - name: assunto_5 + description: Nome dos assuntos (entre 1 e 5 assuntos) da condenação