From 431db4ce44aa251f284b7fbe5a73d211f040fed9 Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Tue, 21 May 2024 16:40:21 -0300 Subject: [PATCH 1/3] add br_inep_saeb_{brasil,uf} --- models/br_inep_saeb/br_inep_saeb__brasil.sql | 21 +++ models/br_inep_saeb/br_inep_saeb__uf.sql | 62 +++++++++ models/br_inep_saeb/schema.yml | 137 +++++++++++++++++++ 3 files changed, 220 insertions(+) create mode 100644 models/br_inep_saeb/br_inep_saeb__brasil.sql create mode 100644 models/br_inep_saeb/br_inep_saeb__uf.sql diff --git a/models/br_inep_saeb/br_inep_saeb__brasil.sql b/models/br_inep_saeb/br_inep_saeb__brasil.sql new file mode 100644 index 00000000..1b8a6408 --- /dev/null +++ b/models/br_inep_saeb/br_inep_saeb__brasil.sql @@ -0,0 +1,21 @@ +{{ config(alias="brasil", schema="br_inep_saeb", materialized="table") }} + +select + safe_cast(ano as int64) ano, + safe_cast(lower(rede) as string) rede, + safe_cast(lower(localizacao) as string) localizacao, + safe_cast(disciplina as string) disciplina, + safe_cast(serie as int64) serie, + safe_cast(media as float64) media, + safe_cast(nivel_0 as float64) nivel_0, + safe_cast(nivel_1 as float64) nivel_1, + safe_cast(nivel_2 as float64) nivel_2, + safe_cast(nivel_3 as float64) nivel_3, + safe_cast(nivel_4 as float64) nivel_4, + safe_cast(nivel_5 as float64) nivel_5, + safe_cast(nivel_6 as float64) nivel_6, + safe_cast(nivel_7 as float64) nivel_7, + safe_cast(nivel_8 as float64) nivel_8, + safe_cast(nivel_9 as float64) nivel_9, + safe_cast(nivel_10 as float64) nivel_10 +from `basedosdados-staging.br_inep_saeb_staging.brasil` as t diff --git a/models/br_inep_saeb/br_inep_saeb__uf.sql b/models/br_inep_saeb/br_inep_saeb__uf.sql new file mode 100644 index 00000000..8716a735 --- /dev/null +++ b/models/br_inep_saeb/br_inep_saeb__uf.sql @@ -0,0 +1,62 @@ +{{ config(alias="uf", schema="br_inep_saeb", materialized="table") }} + +with + tb as ( + select + safe_cast(ano as int64) ano, + safe_cast(rede as string) rede, + safe_cast(localizacao as string) localizacao, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(disciplina as string) disciplina, + safe_cast(serie as int64) serie, + safe_cast(media as float64) media, + safe_cast(nivel_0 as float64) nivel_0, + safe_cast(nivel_1 as float64) nivel_1, + safe_cast(nivel_2 as float64) nivel_2, + safe_cast(nivel_3 as float64) nivel_3, + safe_cast(nivel_4 as float64) nivel_4, + safe_cast(nivel_5 as float64) nivel_5, + safe_cast(nivel_6 as float64) nivel_6, + safe_cast(nivel_7 as float64) nivel_7, + safe_cast(nivel_8 as float64) nivel_8, + safe_cast(nivel_9 as float64) nivel_9, + safe_cast(nivel_10 as float64) nivel_10, + from `basedosdados-staging.br_inep_saeb_staging.uf` as t + ), + fixed_2021 as ( + select * + from tb + -- Em 2021 as linhas estao duplicadas porque tem `Total` e `total` + -- Entao vamos excluir total + where ano = 2021 and localizacao in ("Total", "Urbana", "Rural") + ), + rest_without_2021 as (select * from tb where ano <> 2021) + +select + ano, + lower(rede) as rede, + lower(localizacao) as localizacao, + sigla_uf, + disciplina, + serie, + media, + nivel_0, + nivel_1, + nivel_2, + nivel_3, + nivel_4, + nivel_5, + nivel_6, + nivel_7, + nivel_8, + nivel_9, + nivel_10 +from + ( + select * + from rest_without_2021 + union all + select * + from fixed_2021 + ) +order by ano desc diff --git a/models/br_inep_saeb/schema.yml b/models/br_inep_saeb/schema.yml index 01c31cc4..883b8dc4 100644 --- a/models/br_inep_saeb/schema.yml +++ b/models/br_inep_saeb/schema.yml @@ -1355,6 +1355,143 @@ models: description: Percentual de alunos que se enquadram no nível nove de aprendizagem - name: nivel_10 description: Percentual de alunos que se enquadram no nível dez de aprendizagem + - name: br_inep_saeb__brasil + description: Tabela resumo dos dados do SAEB com a média e percentual de alunos + dentro de cada nível de aprendizado segundo o Inep a nível Brasil + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - ano + - rede + - localizacao + - disciplina + - serie + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: rede + description: Rede Escolar + tests: + - accepted_values: + values: + - municipal + - estadual + - federal + - privada + - total - estadual e municipal + - total - federal, estadual e municipal + - total - federal, estadual, municipal e privada + - name: localizacao + description: Localização da escola + tests: + - accepted_values: + values: [total, urbana, rural] + - name: disciplina + description: Disciplina + - name: serie + description: Série/Ano Escolar + - name: media + description: Média da proficiência + - name: nivel_0 + description: Percentual de alunos que se enquadram no nível zero de aprendizage + - name: nivel_1 + description: Percentual de alunos que se enquadram no nível um de aprendizagem + - name: nivel_2 + description: Percentual de alunos que se enquadram no nível dois de aprendizage + - name: nivel_3 + description: Percentual de alunos que se enquadram no nível três de aprendizage + - name: nivel_4 + description: Percentual de alunos que se enquadram no nível quatro de aprendiza + - name: nivel_5 + description: Percentual de alunos que se enquadram no nível cinco de aprendizag + - name: nivel_6 + description: Percentual de alunos que se enquadram no nível seis de aprendizage + - name: nivel_7 + description: Percentual de alunos que se enquadram no nível sete de aprendizage + - name: nivel_8 + description: Percentual de alunos que se enquadram no nível oito de aprendizage + - name: nivel_9 + description: Percentual de alunos que se enquadram no nível nove de aprendizage + - name: nivel_10 + description: Percentual de alunos que se enquadram no nível dez de aprendizagem + - name: br_inep_saeb__uf + description: Tabela resumo dos dados do SAEB com a média e percentual de alunos + dentro de cada nível de aprendizado segundo o Inep a nível estadual + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - ano + - rede + - localizacao + - sigla_uf + - disciplina + - serie + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: rede + description: Rede Escolar + tests: + - accepted_values: + values: + - municipal + - estadual + - federal + - privada + - total - estadual e municipal + - total - federal, estadual e municipal + - total - federal, estadual, municipal e privada + - name: localizacao + description: Localização da escola + tests: + - accepted_values: + values: [total, urbana, rural] + - name: sigla_uf + description: Sigla da Unidade da Federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: disciplina + description: Disciplina + - name: serie + description: Série/Ano Escolar + - name: media + description: Média da proficiência + - name: nivel_0 + description: Percentual de alunos que se enquadram no nível zero de aprendizage + - name: nivel_1 + description: Percentual de alunos que se enquadram no nível um de aprendizagem + - name: nivel_2 + description: Percentual de alunos que se enquadram no nível dois de aprendizage + - name: nivel_3 + description: Percentual de alunos que se enquadram no nível três de aprendizage + - name: nivel_4 + description: Percentual de alunos que se enquadram no nível quatro de aprendiza + - name: nivel_5 + description: Percentual de alunos que se enquadram no nível cinco de aprendizag + - name: nivel_6 + description: Percentual de alunos que se enquadram no nível seis de aprendizage + - name: nivel_7 + description: Percentual de alunos que se enquadram no nível sete de aprendizage + - name: nivel_8 + description: Percentual de alunos que se enquadram no nível oito de aprendizage + - name: nivel_9 + description: Percentual de alunos que se enquadram no nível nove de aprendizage + - name: nivel_10 + description: Percentual de alunos que se enquadram no nível dez de aprendizagem - name: br_inep_saeb__dicionario description: Dicionário para tradução dos códigos do conjunto br_inep_saeb. Para taduzir códigos compartilhados entre instituições, como id_municipio, buscar From 2e8085dddb0578dc1b44d3e54e0d7466ef1fb70e Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Fri, 24 May 2024 10:28:34 -0300 Subject: [PATCH 2/3] update models --- models/br_inep_saeb/br_inep_saeb__brasil.sql | 6 +++++- models/br_inep_saeb/br_inep_saeb__municipio.sql | 12 ++++++++---- models/br_inep_saeb/br_inep_saeb__uf.sql | 6 +++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/models/br_inep_saeb/br_inep_saeb__brasil.sql b/models/br_inep_saeb/br_inep_saeb__brasil.sql index 1b8a6408..5558285e 100644 --- a/models/br_inep_saeb/br_inep_saeb__brasil.sql +++ b/models/br_inep_saeb/br_inep_saeb__brasil.sql @@ -5,7 +5,11 @@ select safe_cast(lower(rede) as string) rede, safe_cast(lower(localizacao) as string) localizacao, safe_cast(disciplina as string) disciplina, - safe_cast(serie as int64) serie, + safe_cast( + case + when serie = "12" then "3" when serie = "13" then "4" else serie + end as int64 + ) serie, safe_cast(media as float64) media, safe_cast(nivel_0 as float64) nivel_0, safe_cast(nivel_1 as float64) nivel_1, diff --git a/models/br_inep_saeb/br_inep_saeb__municipio.sql b/models/br_inep_saeb/br_inep_saeb__municipio.sql index 77aa7b36..ffbb83b8 100644 --- a/models/br_inep_saeb/br_inep_saeb__municipio.sql +++ b/models/br_inep_saeb/br_inep_saeb__municipio.sql @@ -3,18 +3,22 @@ alias="municipio", schema="br_inep_saeb", materialized="table", - labels={"tema": "educacao"}, + labels={"project_id": "basedosdados-dev", "tema": "educacao"}, ) }} select safe_cast(ano as int64) ano, - safe_cast(rede as string) rede, - safe_cast(localizacao as string) localizacao, + safe_cast(lower(rede) as string) rede, + safe_cast(lower(localizacao) as string) localizacao, safe_cast(sigla_uf as string) sigla_uf, safe_cast(id_municipio as string) id_municipio, safe_cast(disciplina as string) disciplina, - safe_cast(serie as int64) serie, + safe_cast( + case + when serie = "12" then "3" when serie = "13" then "4" else serie + end as int64 + ) serie, round(safe_cast(media as float64), 2) media, round(safe_cast(nivel_0 as float64), 2) nivel_0, round(safe_cast(nivel_1 as float64), 2) nivel_1, diff --git a/models/br_inep_saeb/br_inep_saeb__uf.sql b/models/br_inep_saeb/br_inep_saeb__uf.sql index 8716a735..b01b66bf 100644 --- a/models/br_inep_saeb/br_inep_saeb__uf.sql +++ b/models/br_inep_saeb/br_inep_saeb__uf.sql @@ -8,7 +8,11 @@ with safe_cast(localizacao as string) localizacao, safe_cast(sigla_uf as string) sigla_uf, safe_cast(disciplina as string) disciplina, - safe_cast(serie as int64) serie, + safe_cast( + case + when serie = "12" then "3" when serie = "13" then "4" else serie + end as int64 + ) serie, safe_cast(media as float64) media, safe_cast(nivel_0 as float64) nivel_0, safe_cast(nivel_1 as float64) nivel_1, From 595756837bc42005622cdb6f65ba39e4029fc91e Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Fri, 24 May 2024 10:29:48 -0300 Subject: [PATCH 3/3] update models --- models/br_inep_saeb/br_inep_saeb__municipio.sql | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/models/br_inep_saeb/br_inep_saeb__municipio.sql b/models/br_inep_saeb/br_inep_saeb__municipio.sql index ffbb83b8..ce5ce903 100644 --- a/models/br_inep_saeb/br_inep_saeb__municipio.sql +++ b/models/br_inep_saeb/br_inep_saeb__municipio.sql @@ -1,11 +1,4 @@ -{{ - config( - alias="municipio", - schema="br_inep_saeb", - materialized="table", - labels={"project_id": "basedosdados-dev", "tema": "educacao"}, - ) -}} +{{ config(alias="municipio", schema="br_inep_saeb", materialized="table") }} select safe_cast(ano as int64) ano,