diff --git a/models/br_inep_enem/br_inep_enem__dicionario.sql b/models/br_inep_enem/br_inep_enem__dicionario.sql index bb310e82..bc2b539e 100644 --- a/models/br_inep_enem/br_inep_enem__dicionario.sql +++ b/models/br_inep_enem/br_inep_enem__dicionario.sql @@ -1,4 +1,5 @@ {{ config(alias="dicionario", schema="br_inep_enem") }} + select safe_cast(id_tabela as string) id_tabela, safe_cast(nome_coluna as string) nome_coluna, diff --git a/models/br_inep_enem/br_inep_enem__microdados.sql b/models/br_inep_enem/br_inep_enem__microdados.sql new file mode 100644 index 00000000..b5379d6f --- /dev/null +++ b/models/br_inep_enem/br_inep_enem__microdados.sql @@ -0,0 +1,82 @@ +{{ + config( + alias="microdados", + schema="br_inep_enem", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 1998, "end": 2023, "interval": 1}, + }, + labels={"project_id": "basedosdados", "tema": "educacao"}, + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(id_inscricao as string) id_inscricao, + safe_cast(faixa_etaria as string) faixa_etaria, + safe_cast(sexo as string) sexo, + safe_cast(id_municipio_residencia as string) id_municipio_residencia, + safe_cast(sigla_uf_residencia as string) sigla_uf_residencia, + safe_cast(estado_civil as string) estado_civil, + safe_cast(cor_raca as string) cor_raca, + safe_cast(nacionalidade as string) nacionalidade, + safe_cast(situacao_conclusao as string) situacao_conclusao, + safe_cast(ano_conclusao as int64) ano_conclusao, + safe_cast(tipo_escola as string) tipo_escola, + safe_cast(ensino as string) ensino, + safe_cast(indicador_treineiro as boolean) indicador_treineiro, + safe_cast(id_municipio_escola as string) id_municipio_escola, + safe_cast(sigla_uf_escola as string) sigla_uf_escola, + safe_cast( + dependencia_administrativa_escola as string + ) dependencia_administrativa_escola, + safe_cast(localizacao_escola as string) localizacao_escola, + safe_cast(situacao_funcionamento_escola as string) situacao_funcionamento_escola, + safe_cast(indicador_certificado as boolean) indicador_certificado, + safe_cast(nome_certificadora as string) nome_certificadora, + safe_cast(sigla_uf_certificadora as string) sigla_uf_certificadora, + safe_cast(id_municipio_prova as string) id_municipio_prova, + safe_cast(sigla_uf_prova as string) sigla_uf_prova, + safe_cast(presenca_objetiva as string) presenca_objetiva, + safe_cast(tipo_prova_objetiva as string) tipo_prova_objetiva, + safe_cast(nota_objetiva_competencia_1 as float64) nota_objetiva_competencia_1, + safe_cast(nota_objetiva_competencia_2 as float64) nota_objetiva_competencia_2, + safe_cast(nota_objetiva_competencia_3 as float64) nota_objetiva_competencia_3, + safe_cast(nota_objetiva_competencia_4 as float64) nota_objetiva_competencia_4, + safe_cast(nota_objetiva_competencia_5 as float64) nota_objetiva_competencia_5, + safe_cast(nota_objetiva as float64) nota_objetiva, + safe_cast(respostas_objetiva as string) respostas_objetiva, + safe_cast(gabarito_objetiva as string) gabarito_objetiva, + safe_cast(presenca_ciencias_natureza as string) presenca_ciencias_natureza, + safe_cast(presenca_ciencias_humanas as string) presenca_ciencias_humanas, + safe_cast(presenca_linguagens_codigos as string) presenca_linguagens_codigos, + safe_cast(presenca_matematica as string) presenca_matematica, + safe_cast(tipo_prova_ciencias_natureza as string) tipo_prova_ciencias_natureza, + safe_cast(tipo_prova_ciencias_humanas as string) tipo_prova_ciencias_humanas, + safe_cast(tipo_prova_linguagens_codigos as string) tipo_prova_linguagens_codigos, + safe_cast(tipo_prova_matematica as string) tipo_prova_matematica, + safe_cast(nota_ciencias_natureza as float64) nota_ciencias_natureza, + safe_cast(nota_ciencias_humanas as float64) nota_ciencias_humanas, + safe_cast(nota_linguagens_codigos as float64) nota_linguagens_codigos, + safe_cast(nota_matematica as float64) nota_matematica, + safe_cast(respostas_ciencias_natureza as string) respostas_ciencias_natureza, + safe_cast(respostas_ciencias_humanas as string) respostas_ciencias_humanas, + safe_cast(respostas_linguagens_codigos as string) respostas_linguagens_codigos, + safe_cast(respostas_matematica as string) respostas_matematica, + safe_cast(gabarito_ciencias_natureza as string) gabarito_ciencias_natureza, + safe_cast(gabarito_ciencias_humanas as string) gabarito_ciencias_humanas, + safe_cast(gabarito_linguagens_codigos as string) gabarito_linguagens_codigos, + safe_cast(gabarito_matematica as string) gabarito_matematica, + safe_cast(lingua_estrangeira as string) lingua_estrangeira, + safe_cast(presenca_redacao as string) presenca_redacao, + safe_cast(nota_redacao_competencia_1 as float64) nota_redacao_competencia_1, + safe_cast(nota_redacao_competencia_2 as float64) nota_redacao_competencia_2, + safe_cast(nota_redacao_competencia_3 as float64) nota_redacao_competencia_3, + safe_cast(nota_redacao_competencia_4 as float64) nota_redacao_competencia_4, + safe_cast(nota_redacao_competencia_5 as float64) nota_redacao_competencia_5, + safe_cast(nota_redacao as float64) nota_redacao, + safe_cast( + indicador_questionario_socioeconomico as boolean + ) indicador_questionario_socioeconomico +from `basedosdados-dev.br_inep_enem_staging.microdados` as t diff --git a/models/br_inep_enem/br_inep_enem__questionario_socioeconomico_2023.sql b/models/br_inep_enem/br_inep_enem__questionario_socioeconomico_2023.sql new file mode 100644 index 00000000..6f39c875 --- /dev/null +++ b/models/br_inep_enem/br_inep_enem__questionario_socioeconomico_2023.sql @@ -0,0 +1,30 @@ +{{ config(alias="questionario_socioeconomico_2023", schema="br_inep_enem") }} + +select + safe_cast(id_inscricao as string) id_inscricao, + safe_cast(q001 as string) q001, + safe_cast(q002 as string) q002, + safe_cast(q003 as string) q003, + safe_cast(q004 as string) q004, + safe_cast(q005 as string) q005, + safe_cast(q006 as string) q006, + safe_cast(q007 as string) q007, + safe_cast(q008 as string) q008, + safe_cast(q009 as string) q009, + safe_cast(q010 as string) q010, + safe_cast(q011 as string) q011, + safe_cast(q012 as string) q012, + safe_cast(q013 as string) q013, + safe_cast(q014 as string) q014, + safe_cast(q015 as string) q015, + safe_cast(q016 as string) q016, + safe_cast(q017 as string) q017, + safe_cast(q018 as string) q018, + safe_cast(q019 as string) q019, + safe_cast(q020 as string) q020, + safe_cast(q021 as string) q021, + safe_cast(q022 as string) q022, + safe_cast(q023 as string) q023, + safe_cast(q024 as string) q024, + safe_cast(q025 as string) q025 +from `basedosdados-dev.br_inep_enem_staging.questionario_socioeconomico_2023` as t diff --git a/models/br_inep_enem/code/microdados.py b/models/br_inep_enem/code/microdados.py new file mode 100644 index 00000000..8f975ffe --- /dev/null +++ b/models/br_inep_enem/code/microdados.py @@ -0,0 +1,308 @@ +import pandas as pd +import numpy as np +import os +from io import StringIO +import requests +import gc +import warnings +import re +from datetime import datetime +from os import getenv, walk +from os.path import join +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple, Union +from uuid import uuid4 +import zipfile +import basedosdados as bd + +import numpy as np +import pandas as pd +warnings.filterwarnings("ignore") + + +def to_partitions( + data: pd.DataFrame, + partition_columns: List[str], + savepath: str, + file_type: str = "csv", +): + """Save data in to hive patitions schema, given a dataframe and a list of partition columns. + Args: + data (pandas.core.frame.DataFrame): Dataframe to be partitioned. + partition_columns (list): List of columns to be used as partitions. + savepath (str, pathlib.PosixPath): folder path to save the partitions. + file_type (str): default to csv. Accepts parquet. + Exemple: + data = { + "ano": [2020, 2021, 2020, 2021, 2020, 2021, 2021,2025], + "mes": [1, 2, 3, 4, 5, 6, 6,9], + "sigla_uf": ["SP", "SP", "RJ", "RJ", "PR", "PR", "PR","PR"], + "dado": ["a", "b", "c", "d", "e", "f", "g",'h'], + } + to_partitions( + data=pd.DataFrame(data), + partition_columns=['ano','mes','sigla_uf'], + savepath='partitions/', + ) + """ + + if isinstance(data, (pd.core.frame.DataFrame)): + savepath = Path(savepath) + # create unique combinations between partition columns + unique_combinations = ( + data[partition_columns] + # .astype(str) + .drop_duplicates(subset=partition_columns).to_dict(orient="records") + ) + + for filter_combination in unique_combinations: + patitions_values = [ + f"{partition}={value}" + for partition, value in filter_combination.items() + ] + + # get filtered data + df_filter = data.loc[ + data[filter_combination.keys()] + .isin(filter_combination.values()) + .all(axis=1), + :, + ] + df_filter = df_filter.drop(columns=partition_columns) + + # create folder tree + filter_save_path = Path(savepath / "/".join(patitions_values)) + filter_save_path.mkdir(parents=True, exist_ok=True) + + if file_type == "csv": + # append data to csv + file_filter_save_path = Path(filter_save_path) / "data.csv" + df_filter.to_csv( + file_filter_save_path, + sep=",", + encoding="utf-8", + na_rep="", + index=False, + mode="a", + header=not file_filter_save_path.exists(), + ) + elif file_type == "parquet": + # append data to parquet + file_filter_save_path = Path(filter_save_path) / "data.parquet" + df_filter.to_parquet( + file_filter_save_path, index=False, compression="gzip" + ) + else: + raise BaseException("Data need to be a pandas DataFrame") + + +valor = 0 +def read_csv_enem(): + global valor + for df in pd.read_csv( + "/home/tricktx/dados/br_inep_enem/Microdados ENEM 2023/DADOS/MICRODADOS_ENEM_2023.csv", + sep=";", + encoding="latin1", + chunksize=100000): + valor = valor + 1 + print(valor) + RENAME = { + "NU_INSCRICAO": "id_inscricao", + "NU_ANO": "ano", + "TP_FAIXA_ETARIA": "faixa_etaria", + "TP_SEXO": "sexo", + "TP_ESTADO_CIVIL": "estado_civil", + "TP_COR_RACA": "cor_raca", + "TP_NACIONALIDADE": "nacionalidade", + "TP_ST_CONCLUSAO": "situacao_conclusao", + "TP_ANO_CONCLUIU": "ano_conclusao", + "TP_ESCOLA": "tipo_escola", + "TP_ENSINO": "ensino", + "IN_TREINEIRO": "indicador_treineiro", + "CO_MUNICIPIO_ESC": "id_municipio_escola", + "SG_UF_ESC": "sigla_uf_escola", + "TP_DEPENDENCIA_ADM_ESC": "dependencia_administrativa_escola", + "TP_LOCALIZACAO_ESC": "localizacao_escola", + "TP_SIT_FUNC_ESC": "situacao_funcionamento_escola", + "CO_MUNICIPIO_PROVA": "id_municipio_prova", + "SG_UF_PROVA": "sigla_uf_prova", + "TP_PRESENCA_CN": "presenca_ciencias_natureza", + "TP_PRESENCA_CH": "presenca_ciencias_humanas", + "TP_PRESENCA_LC": "presenca_linguagens_codigos", + "TP_PRESENCA_MT": "presenca_matematica", + "CO_PROVA_CN": "tipo_prova_ciencias_natureza", + "CO_PROVA_CH": "tipo_prova_ciencias_humanas", + "CO_PROVA_LC": "tipo_prova_linguagens_codigos", + "CO_PROVA_MT": "tipo_prova_matematica", + "NU_NOTA_CN": "nota_ciencias_natureza", + "NU_NOTA_CH": "nota_ciencias_humanas", + "NU_NOTA_LC": "nota_linguagens_codigos", + "NU_NOTA_MT": "nota_matematica", + "TX_RESPOSTAS_CN": "respostas_ciencias_natureza", + "TX_RESPOSTAS_CH": "respostas_ciencias_humanas", + "TX_RESPOSTAS_LC": "respostas_linguagens_codigos", + "TX_RESPOSTAS_MT": "respostas_matematica", + "TX_GABARITO_CN": "gabarito_ciencias_natureza", + "TX_GABARITO_CH": "gabarito_ciencias_humanas", + "TX_GABARITO_LC": "gabarito_linguagens_codigos", + "TX_GABARITO_MT": "gabarito_matematica", + "TP_LINGUA": "lingua_estrangeira", + "TP_STATUS_REDACAO": "presenca_redacao", + "NU_NOTA_COMP1": "nota_redacao_competencia_1", + "NU_NOTA_COMP2": "nota_redacao_competencia_2", + "NU_NOTA_COMP3": "nota_redacao_competencia_3", + "NU_NOTA_COMP4": "nota_redacao_competencia_4", + "NU_NOTA_COMP5": "nota_redacao_competencia_5", + "NU_NOTA_REDACAO": "nota_redacao", + } + df.rename(columns=RENAME, inplace=True) + + lista = [ + "id_inscricao", + "ano", + "faixa_etaria", + "sexo", + "id_municipio_residencia", + "sigla_uf_residencia", + "estado_civil", + "cor_raca", + "nacionalidade", + "situacao_conclusao", + "ano_conclusao", + "tipo_escola", + "ensino", + "indicador_treineiro", + "id_municipio_escola", + "sigla_uf_escola", + "dependencia_administrativa_escola", + "localizacao_escola", + "situacao_funcionamento_escola", + "indicador_certificado", + "nome_certificadora", + "sigla_uf_certificadora", + "id_municipio_prova", + "sigla_uf_prova", + "presenca_objetiva", + "tipo_prova_objetiva", + "nota_objetiva_competencia_1", + "nota_objetiva_competencia_2", + "nota_objetiva_competencia_3", + "nota_objetiva_competencia_4", + "nota_objetiva_competencia_5", + "nota_objetiva", + "respostas_objetiva", + "gabarito_objetiva", + "presenca_ciencias_natureza", + "presenca_ciencias_humanas", + "presenca_linguagens_codigos", + "presenca_matematica", + "tipo_prova_ciencias_natureza", + "tipo_prova_ciencias_humanas", + "tipo_prova_linguagens_codigos", + "tipo_prova_matematica", + "nota_ciencias_natureza", + "nota_ciencias_humanas", + "nota_linguagens_codigos", + "nota_matematica", + "respostas_ciencias_natureza", + "respostas_ciencias_humanas", + "respostas_linguagens_codigos", + "respostas_matematica", + "gabarito_ciencias_natureza", + "gabarito_ciencias_humanas", + "gabarito_linguagens_codigos", + "gabarito_matematica", + "lingua_estrangeira", + "presenca_redacao", + "nota_redacao_competencia_1", + "nota_redacao_competencia_2", + "nota_redacao_competencia_3", + "nota_redacao_competencia_4", + "nota_redacao_competencia_5", + "nota_redacao", + "indicador_questionario_socioeconomico", + ] + for col in lista: + if col not in df_lista.columns: + df_lista[col] = str(np.nan) + + for x in df_lista.columns: + df_lista[x] = df_lista[x].apply( + lambda x: str(x).replace(".0", "").replace("nan", "") + ) + + df_lista = df_lista[ + [ + "ano", + "id_inscricao", + "faixa_etaria", + "sexo", + "id_municipio_residencia", + "sigla_uf_residencia", + "estado_civil", + "cor_raca", + "nacionalidade", + "situacao_conclusao", + "ano_conclusao", + "tipo_escola", + "ensino", + "indicador_treineiro", + "id_municipio_escola", + "sigla_uf_escola", + "dependencia_administrativa_escola", + "localizacao_escola", + "situacao_funcionamento_escola", + "indicador_certificado", + "nome_certificadora", + "sigla_uf_certificadora", + "id_municipio_prova", + "sigla_uf_prova", + "presenca_objetiva", + "tipo_prova_objetiva", + "nota_objetiva_competencia_1", + "nota_objetiva_competencia_2", + "nota_objetiva_competencia_3", + "nota_objetiva_competencia_4", + "nota_objetiva_competencia_5", + "nota_objetiva", + "respostas_objetiva", + "gabarito_objetiva", + "presenca_ciencias_natureza", + "presenca_ciencias_humanas", + "presenca_linguagens_codigos", + "presenca_matematica", + "tipo_prova_ciencias_natureza", + "tipo_prova_ciencias_humanas", + "tipo_prova_linguagens_codigos", + "tipo_prova_matematica", + "nota_ciencias_natureza", + "nota_ciencias_humanas", + "nota_linguagens_codigos", + "nota_matematica", + "respostas_ciencias_natureza", + "respostas_ciencias_humanas", + "respostas_linguagens_codigos", + "respostas_matematica", + "gabarito_ciencias_natureza", + "gabarito_ciencias_humanas", + "gabarito_linguagens_codigos", + "gabarito_matematica", + "lingua_estrangeira", + "presenca_redacao", + "nota_redacao_competencia_1", + "nota_redacao_competencia_2", + "nota_redacao_competencia_3", + "nota_redacao_competencia_4", + "nota_redacao_competencia_5", + "nota_redacao", + "indicador_questionario_socioeconomico", + ] + ] + + to_partitions( + data=df_lista, + partition_columns=["ano"], + savepath="/home/tricktx/dados/br_inep_enem/main/", + file_type="csv") + +read_csv_enem() diff --git a/models/br_inep_enem/code/questionario_socioeconomico.py b/models/br_inep_enem/code/questionario_socioeconomico.py new file mode 100644 index 00000000..f8693932 --- /dev/null +++ b/models/br_inep_enem/code/questionario_socioeconomico.py @@ -0,0 +1,62 @@ +import pandas as pd +import numpy as np +import os +import requests +import gc +import warnings +from io import StringIO + +warnings.filterwarnings("ignore") + +def read_csv_enem_questionario(): + valor = 0 + for df in pd.read_csv( + "/home/tricktx/dados/br_inep_enem/Microdados ENEM 2023/DADOS/MICRODADOS_ENEM_2023.csv", + sep=";", + encoding="latin1", + chunksize=100000, + ): + valor = valor + 1 + print(valor) + df = df[ + [ + "NU_INSCRICAO", + "Q001", + "Q002", + "Q003", + "Q004", + "Q005", + "Q006", + "Q007", + "Q008", + "Q009", + "Q010", + "Q011", + "Q012", + "Q013", + "Q014", + "Q015", + "Q016", + "Q017", + "Q018", + "Q019", + "Q020", + "Q021", + "Q022", + "Q023", + "Q024", + "Q025", + ] + ] + df.rename(columns={"NU_INSCRICAO": "id_inscricao"}, inplace=True) + + path = "/home/tricktx/dados/br_inep_enem/output/questionario/" + + if not os.path.exists(path): + os.makedirs(path) + df.to_csv(os.path.join(path, "questionario_socioeconomico_2023.csv"), index=False, mode="a", header=True) + + elif os.path.exists(path): + df.to_csv(os.path.join(path, "questionario_socioeconomico_2023.csv"), index=False, mode="a", header=False) + +read_csv_enem_questionario() diff --git a/models/br_inep_enem/schema.yml b/models/br_inep_enem/schema.yml index a03233ae..1bae1a83 100644 --- a/models/br_inep_enem/schema.yml +++ b/models/br_inep_enem/schema.yml @@ -1,5 +1,4 @@ --- -version: 2 models: - name: br_inep_enem__dicionario description: Dicionário para tradução dos códigos do conjunto br_inep_enem. Para @@ -25,3 +24,334 @@ models: description: Cobertura Temporal - name: valor description: Valor + - name: br_inep_enem__microdados + description: Microdados de notas do ENEM + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [id_inscricao, ano] + - custom_dictionary_coverage: + columns_covered_by_dictionary: + - faixa_etaria + - sexo + - estado_civil + - cor_raca + - nacionalidade + - situacao_conclusao + - tipo_escola + - ensino + - dependencia_administrativa_escola + - localizacao_escola + - situacao_funcionamento_escola + - presenca_objetiva + - tipo_prova_objetiva + - presenca_ciencias_natureza + - presenca_ciencias_humanas + - presenca_linguagens_codigos + - presenca_matematica + - tipo_prova_ciencias_natureza + - tipo_prova_ciencias_humanas + - tipo_prova_linguagens_codigos + - tipo_prova_matematica + - lingua_estrangeira + - presenca_redacao + dictionary_model: ref('br_inep_enem__dicionario') + columns: + - name: id_inscricao + description: Número de inscrição no ENEM + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: faixa_etaria + description: Faixa etária + - name: sexo + description: Sexo + - name: id_municipio_residencia + description: ID Município da residência - IBGE 7 Dígitos + tests: + - custom_relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + ignore_values: + - '5200' + - '3208' + - '35507' + - '50308' + - '4557' + - '14902' + - '9502' + - '24808' + - '14407' + - '6200' + - '5108' + - '48708' + - '5109' + - '18105' + - '3403' + - '22505' + - '13705' + - '43402' + - '27408' + - '1108' + - '36504' + - '13700' + - '2105' + - '102' + - '2405' + - '0' + - '16602' + - '8201' + - '108' + - '12906' + - '11606' + - name: sigla_uf_residencia + description: Sigla da unidade da federação da residência + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: estado_civil + description: Estado civil + - name: cor_raca + description: Cor ou raça + - name: nacionalidade + description: Nacionalidade + - name: situacao_conclusao + description: Situação em relação ao ensino médio + - name: ano_conclusao + description: Ano de conclusão do ensino médio + - name: tipo_escola + description: Tipo de escola do ensino médio + - name: ensino + description: Tipo de instituição onde o estudante concluiu ou concluirá o + ensino médio + - name: indicador_treineiro + description: Indica se o inscrito fez a prova com intuito de apenas treinar + seus conhecimentos + - name: id_municipio_escola + description: ID Município da escola em que estudou - IBGE 7 Dígitos + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - name: sigla_uf_escola + description: Sigla da unidade da federação da escola em que estudou + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: dependencia_administrativa_escola + description: Dependência administrativa da escola em que estudou + - name: localizacao_escola + description: Localização/zona da escola em que estudou + - name: situacao_funcionamento_escola + description: Situação de funcionamento da escola em que estudou + - name: indicador_certificado + description: Inscrito solicitará certificação no ensino médio + - name: nome_certificadora + description: Nome da entidade certificadora + - name: sigla_uf_certificadora + description: Sigla da unidade da federação da entidade certificadora + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: id_municipio_prova + description: ID Município da cidade da prova - IBGE 7 Dígitos + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - name: sigla_uf_prova + description: Sigla da unidade da federação da prova + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: presenca_objetiva + description: Presença a prova objetiva + - name: tipo_prova_objetiva + description: Tipo de prova + - name: nota_objetiva_competencia_1 + description: Nota da competência 1 + - name: nota_objetiva_competencia_2 + description: Nota da competência 2 + - name: nota_objetiva_competencia_3 + description: Nota da competência 3 + - name: nota_objetiva_competencia_4 + description: Nota da competência 4 + - name: nota_objetiva_competencia_5 + description: Nota da competência 5 + - name: nota_objetiva + description: Nota da prova objetiva + - name: respostas_objetiva + description: Vetor com as respostas da parte objetiva da prova + - name: gabarito_objetiva + description: Vetor com o gabarito da parte objetiva da prova + - name: presenca_ciencias_natureza + description: Presença à prova objetiva de Ciências da Natureza + - name: presenca_ciencias_humanas + description: Presença à prova objetiva de Ciências Humanas + - name: presenca_linguagens_codigos + description: Presença à prova objetiva de Linguagens e Códigos + - name: presenca_matematica + description: Presença à prova objetiva de Matemática + - name: tipo_prova_ciencias_natureza + description: Código do tipo de prova de Ciências da Natureza + - name: tipo_prova_ciencias_humanas + description: Código do tipo de prova de Ciências Humanas + - name: tipo_prova_linguagens_codigos + description: Código do tipo de prova de Linguagens e Códigos + - name: tipo_prova_matematica + description: Código do tipo de prova de Matemática + - name: nota_ciencias_natureza + description: Nota da prova de Ciências da Natureza + - name: nota_ciencias_humanas + description: Nota da prova de Ciências Humanas + - name: nota_linguagens_codigos + description: Nota da prova de Linguagens e Códigos + - name: nota_matematica + description: Nota da prova de Matemática + - name: respostas_ciencias_natureza + description: Vetor com as respostas da parte objetiva da prova de Ciências + da Natureza + - name: respostas_ciencias_humanas + description: Vetor com as respostas da parte objetiva da prova de Ciências + Humanas + - name: respostas_linguagens_codigos + description: Vetor com as respostas da parte objetiva da prova de Linguagens + e Códigos + - name: respostas_matematica + description: Vetor com as respostas da parte objetiva da prova de Matemática + - name: gabarito_ciencias_natureza + description: 'Vetor com o gabarito da parte objetiva da prova de Ciências + da Natureza (Obs.: as 45 primeiras posições deste campo são referentes ao + respectivo gabarito)' + - name: gabarito_ciencias_humanas + description: 'Vetor com o gabarito da parte objetiva da prova de Ciências + Humanas (Obs.: as 45 primeiras posições deste campo são referentes ao respectivo + gabarito)' + - name: gabarito_linguagens_codigos + description: 'Vetor com o gabarito da parte objetiva da prova de Linguagens + e Códigos (Obs.: as 45 primeiras posições deste campo são referentes ao + respectivo gabarito)' + - name: gabarito_matematica + description: 'Vetor com o gabarito da parte objetiva da prova de Matemática + (Obs.: as 45 primeiras posições deste campo são referentes ao respectivo + gabarito)' + - name: lingua_estrangeira + description: Língua Estrangeira + - name: presenca_redacao + description: Presença à redação + - name: nota_redacao_competencia_1 + description: Nota da competência 1 + - name: nota_redacao_competencia_2 + description: Nota da competência 2 + - name: nota_redacao_competencia_3 + description: Nota da competência 3 + - name: nota_redacao_competencia_4 + description: Nota da competência 4 + - name: nota_redacao_competencia_5 + description: Nota da competência 5 + - name: nota_redacao + description: Nota da prova de redação + - name: indicador_questionario_socioeconomico + description: Respondeu o Questionário Socioeconômico + - name: br_inep_enem__questionario_socioeconomico_2023 + description: Respostas do questionário socioeconômico de 2023. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [id_inscricao] + - custom_dictionary_coverage: + columns_covered_by_dictionary: + - Q001 + - Q002 + - Q003 + - Q004 + - Q005 + - Q006 + - Q007 + - Q008 + - Q009 + - Q010 + - Q011 + - Q012 + - Q013 + - Q014 + - Q015 + - Q016 + - Q017 + - Q018 + - Q019 + - Q020 + - Q021 + - Q022 + - Q023 + - Q024 + - Q025 + dictionary_model: ref('br_inep_enem__dicionario') + columns: + - name: id_inscricao + description: Número de inscrição no ENEM + - name: Q001 + description: Até que série seu pai, ou o homem responsável por você, estudou? + - name: Q002 + description: Até que série sua mãe, ou a mulher responsável por você, estudou? + - name: Q003 + description: A partir da apresentação de algumas ocupações divididas em grupos + ordenados, indique o grupo que contempla a ocupação mais próxima da ocupação + do seu pai ou do homem responsável por você. (Se ele não estiver trabalhando, + escolha uma ocupação pensando no último trabalho dele). + - name: Q004 + description: A partir da apresentação de algumas ocupações divididas em grupos + ordenados, indique o grupo que contempla a ocupação mais próxima da ocupação + da sua mãe ou da mulher responsável por você. (Se ela não estiver trabalhando, + escolha uma ocupação pensando no último trabalho dela). + - name: Q005 + description: Incluindo você, quantas pessoas moram atualmente em sua residência? + - name: Q006 + description: Qual é a renda mensal de sua família? (Some a sua renda com a + dos seus familiares.) + - name: Q007 + description: Em sua residência trabalha empregado(a) doméstico(a)? + - name: Q008 + description: Na sua residência tem banheiro? + - name: Q009 + description: Na sua residência tem quartos para dormir? + - name: Q010 + description: Na sua residência tem carro? + - name: Q011 + description: Na sua residência tem motocicleta? + - name: Q012 + description: Na sua residência tem geladeira? + - name: Q013 + description: Na sua residência tem freezer (independente ou segunda porta + da geladeira)? + - name: Q014 + description: Na sua residência tem máquina de lavar roupa? (o tanquinho NÃO + deve ser considerado) + - name: Q015 + description: Na sua residência tem máquina de secar roupa (independente ou + em conjunto com a máquina de lavar roupa)? + - name: Q016 + description: Na sua residência tem forno micro-ondas? + - name: Q017 + description: Na sua residência tem máquina de lavar louça? + - name: Q018 + description: Na sua residência tem aspirador de pó? + - name: Q019 + description: Na sua residência tem televisão em cores? + - name: Q020 + description: Na sua residência tem aparelho de DVD? + - name: Q021 + description: Na sua residência tem TV por assinatura? + - name: Q022 + description: Na sua residência tem telefone celular? + - name: Q023 + description: Na sua residência tem telefone fixo? + - name: Q024 + description: Na sua residência tem computador? + - name: Q025 + description: Na sua residência tem acesso à Internet?