From 4195236a70ee26b8c4caed0e382a0dc805d07bac Mon Sep 17 00:00:00 2001 From: uiro-bi Date: Mon, 1 Jul 2024 08:57:17 -0300 Subject: [PATCH 1/2] feat: add br_mdr_snis dbt models --- .../br_mdr_snis__municipio_agua_esgoto.sql | 206 ++++++ .../br_mdr_snis__prestador_agua_esgoto.sql | 227 ++++++ models/br_mdr_snis/schema.yml | 682 ++++++++++++++++++ 3 files changed, 1115 insertions(+) create mode 100644 models/br_mdr_snis/br_mdr_snis__municipio_agua_esgoto.sql create mode 100644 models/br_mdr_snis/br_mdr_snis__prestador_agua_esgoto.sql create mode 100644 models/br_mdr_snis/schema.yml diff --git a/models/br_mdr_snis/br_mdr_snis__municipio_agua_esgoto.sql b/models/br_mdr_snis/br_mdr_snis__municipio_agua_esgoto.sql new file mode 100644 index 00000000..a17b49b3 --- /dev/null +++ b/models/br_mdr_snis/br_mdr_snis__municipio_agua_esgoto.sql @@ -0,0 +1,206 @@ +{{ config(alias="municipio_agua_esgoto", schema="br_mdr_snis") }} +select + safe_cast(ano as int64) ano, + safe_cast(id_municipio as string) id_municipio, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(populacao_atendida_agua as int64) populacao_atendida_agua, + safe_cast(populacao_atentida_esgoto as int64) populacao_atentida_esgoto, + safe_cast(populacao_urbana as int64) populacao_urbana, + safe_cast(populacao_urbana_residente_agua as int64) populacao_urbana_residente_agua, + safe_cast(populacao_urbana_atendida_agua as int64) populacao_urbana_atendida_agua, + safe_cast( + populacao_urbana_atendida_agua_ibge as int64 + ) populacao_urbana_atendida_agua_ibge, + safe_cast( + populacao_urbana_residente_esgoto as int64 + ) populacao_urbana_residente_esgoto, + safe_cast( + populacao_urbana_atendida_esgoto as int64 + ) populacao_urbana_atendida_esgoto, + safe_cast( + populacao_urbana_residente_esgoto_ibge as int64 + ) populacao_urbana_residente_esgoto_ibge, + safe_cast(extensao_rede_agua as float64) extensao_rede_agua, + safe_cast(extensao_rede_esgoto as float64) extensao_rede_esgoto, + safe_cast(quantidade_sede_municipal_agua as int64) quantidade_sede_municipal_agua, + safe_cast( + quantidade_sede_municipal_esgoto as int64 + ) quantidade_sede_municipal_esgoto, + safe_cast(quantidade_localidade_agua as int64) quantidade_localidade_agua, + safe_cast(quantidade_localidade_esgoto as int64) quantidade_localidade_esgoto, + safe_cast(quantidade_ligacao_ativa_agua as int64) quantidade_ligacao_ativa_agua, + safe_cast(quantidade_ligacao_ativa_esgoto as int64) quantidade_ligacao_ativa_esgoto, + safe_cast(quantidade_ligacao_total_agua as int64) quantidade_ligacao_total_agua, + safe_cast(quantidade_ligacao_total_esgoto as int64) quantidade_ligacao_total_esgoto, + safe_cast(quantidade_economia_ativa_agua as int64) quantidade_economia_ativa_agua, + safe_cast( + quantidade_economia_ativa_esgoto as int64 + ) quantidade_economia_ativa_esgoto, + safe_cast( + quantidade_ligacao_micromedia_ativa_agua as int64 + ) quantidade_ligacao_micromedia_ativa_agua, + safe_cast( + quantidade_economia_residencial_ativa_agua as int64 + ) quantidade_economia_residencial_ativa_agua, + safe_cast( + quantidade_economia_residencial_ativa_esgoto as int64 + ) quantidade_economia_residencial_ativa_esgoto, + safe_cast( + quantidade_economia_micromedida_ativa_agua as int64 + ) quantidade_economia_micromedida_ativa_agua, + safe_cast( + quantidade_economia_residencial_micromedida_ativa_agua as int64 + ) quantidade_economia_residencial_micromedida_ativa_agua, + safe_cast(volume_agua_produzido as float64) volume_agua_produzido, + safe_cast(volume_agua_tratada_eta as float64) volume_agua_tratada_eta, + safe_cast(volume_agua_micromedido as float64) volume_agua_micromedido, + safe_cast(volume_agua_consumido as float64) volume_agua_consumido, + safe_cast(volume_agua_faturado as float64) volume_agua_faturado, + safe_cast(volume_agua_macromedido as float64) volume_agua_macromedido, + safe_cast( + volume_agua_tratada_desinfeccao as float64 + ) volume_agua_tratada_desinfeccao, + safe_cast(volume_agua_bruta_exportado as float64) volume_agua_bruta_exportado, + safe_cast(volume_agua_tratada_importado as float64) volume_agua_tratada_importado, + safe_cast(volume_agua_tratada_exportado as float64) volume_agua_tratada_exportado, + safe_cast( + volume_agua_micromedido_economia_ativa as float64 + ) volume_agua_micromedido_economia_ativa, + safe_cast(volume_servico_agua as float64) volume_servico_agua, + safe_cast(volume_agua_fluoretada as float64) volume_agua_fluoretada, + safe_cast(consumo_eletrico_sistemas_agua as float64) consumo_eletrico_sistemas_agua, + safe_cast(volume_esgoto_coletado as float64) volume_esgoto_coletado, + safe_cast(volume_esgoto_tratado as float64) volume_esgoto_tratado, + safe_cast(volume_esgoto_faturado as float64) volume_esgoto_faturado, + safe_cast(volume_esgoto_bruto_exportado as float64) volume_esgoto_bruto_exportado, + safe_cast(volume_esgoto_bruto_importado as float64) volume_esgoto_bruto_importado, + safe_cast(volume_esgoto_importado as float64) volume_esgoto_importado, + safe_cast( + volume_esgoto_bruto_exportado_tratamento_importador as float64 + ) volume_esgoto_bruto_exportado_tratamento_importador, + safe_cast( + consumo_eletrico_sistemas_esgoto as float64 + ) consumo_eletrico_sistemas_esgoto, + safe_cast(indice_agua_ligacao as float64) indice_agua_ligacao, + safe_cast(indice_hidrometracao as float64) indice_hidrometracao, + safe_cast( + indice_macromedicao_volume_disponibilizado as float64 + ) indice_macromedicao_volume_disponibilizado, + safe_cast(indice_macromedicao as float64) indice_macromedicao, + safe_cast(indice_perda_faturamento as float64) indice_perda_faturamento, + safe_cast(indice_micromedido_economia as float64) indice_micromedido_economia, + safe_cast(indice_coleta_esgoto as float64) indice_coleta_esgoto, + safe_cast(indice_tratamento_esgoto as float64) indice_tratamento_esgoto, + safe_cast(indice_consumo_agua_faturado as float64) indice_consumo_agua_faturado, + safe_cast(indice_extensao_agua_ligacao as float64) indice_extensao_agua_ligacao, + safe_cast(indice_extensao_esgoto_ligacao as float64) indice_extensao_esgoto_ligacao, + safe_cast(indice_consumo_agua_per_capita as float64) indice_consumo_agua_per_capita, + safe_cast(indice_atendimento_urbano_agua as float64) indice_atendimento_urbano_agua, + safe_cast(indice_atendimento_agua_esgoto as float64) indice_atendimento_agua_esgoto, + safe_cast(indice_volume_agua_economia as float64) indice_volume_agua_economia, + safe_cast(indice_faturamento_agua as float64) indice_faturamento_agua, + safe_cast( + indice_participacao_economia_agua as float64 + ) indice_participacao_economia_agua, + safe_cast( + indice_micromedicao_relativo_agua as float64 + ) indice_micromedicao_relativo_agua, + safe_cast( + indice_esgotamento_agua_consumida as float64 + ) indice_esgotamento_agua_consumida, + safe_cast( + indice_atendimento_esgoto_esgoto as float64 + ) indice_atendimento_esgoto_esgoto, + safe_cast(indice_perda_distribuicao_agua as float64) indice_perda_distribuicao_agua, + safe_cast(indice_perda_linear_agua as float64) indice_perda_linear_agua, + safe_cast(indice_perda_ligacao_agua as float64) indice_perda_ligacao_agua, + safe_cast(indice_consumo_agua as float64) indice_consumo_agua, + safe_cast(indice_consumo_medio_agua as float64) indice_consumo_medio_agua, + safe_cast(indice_atendimento_total_agua as float64) indice_atendimento_total_agua, + safe_cast(indice_atendimento_esgoto_agua as float64) indice_atendimento_esgoto_agua, + safe_cast(indice_fluoretacao_agua as float64) indice_fluoretacao_agua, + safe_cast(indice_consumo_energia_agua as float64) indice_consumo_energia_agua, + safe_cast(indice_consumo_energia_esgoto as float64) indice_consumo_energia_esgoto, + safe_cast(receita_operacional_direta as float64) receita_operacional_direta, + safe_cast( + receita_operacional_direta_agua as float64 + ) receita_operacional_direta_agua, + safe_cast( + receita_operacional_direta_esgoto as float64 + ) receita_operacional_direta_esgoto, + safe_cast(receita_operacional_indireta as float64) receita_operacional_indireta, + safe_cast( + receita_operacional_direta_agua_exportada as float64 + ) receita_operacional_direta_agua_exportada, + safe_cast(receita_operacional as float64) receita_operacional, + safe_cast( + receita_operacional_direta_esgoto_importado as float64 + ) receita_operacional_direta_esgoto_importado, + safe_cast(arrecadacao_total as float64) arrecadacao_total, + safe_cast(credito_areceber as float64) credito_areceber, + safe_cast(despesa_pessoal as float64) despesa_pessoal, + safe_cast(quantidade_empregado as int64) quantidade_empregado, + safe_cast(despesa_produto_quimico as float64) despesa_produto_quimico, + safe_cast(despesa_energia as float64) despesa_energia, + safe_cast(despesa_servico_terceiro as float64) despesa_servico_terceiro, + safe_cast(despesa_exploracao as float64) despesa_exploracao, + safe_cast(despesas_juros_divida as float64) despesas_juros_divida, + safe_cast(despesa_total_servico as float64) despesa_total_servico, + safe_cast(despesa_ativo as float64) despesa_ativo, + safe_cast(despesa_agua_importada as float64) despesa_agua_importada, + safe_cast(despesa_fiscal as float64) despesa_fiscal, + safe_cast(despesa_fiscal_nao_computada as float64) despesa_fiscal_nao_computada, + safe_cast(despesa_exploracao_outro as float64) despesa_exploracao_outro, + safe_cast(despesa_servico_outro as float64) despesa_servico_outro, + safe_cast(despesa_amortizacao_divida as float64) despesa_amortizacao_divida, + safe_cast(despesas_juros_divida_excecao as float64) despesas_juros_divida_excecao, + safe_cast(despesa_divida_variacao as float64) despesa_divida_variacao, + safe_cast(despesa_divida_total as float64) despesa_divida_total, + safe_cast(despesa_esgoto_exportado as float64) despesa_esgoto_exportado, + safe_cast( + despesa_capitalizavel_municipio as float64 + ) despesa_capitalizavel_municipio, + safe_cast(despesa_capitalizavel_estado as float64) despesa_capitalizavel_estado, + safe_cast( + despesa_capitalizavel_prestador as float64 + ) despesa_capitalizavel_prestador, + safe_cast(investimento_agua_prestador as float64) investimento_agua_prestador, + safe_cast(investimento_esgoto_prestador as float64) investimento_esgoto_prestador, + safe_cast(investimento_outro_prestador as float64) investimento_outro_prestador, + safe_cast( + investimento_recurso_proprio_prestador as float64 + ) investimento_recurso_proprio_prestador, + safe_cast( + investimento_recurso_oneroso_prestador as float64 + ) investimento_recurso_oneroso_prestador, + safe_cast( + investimento_recurso_nao_oneroso_prestador as float64 + ) investimento_recurso_nao_oneroso_prestador, + safe_cast(investimento_total_prestador as float64) investimento_total_prestador, + safe_cast(investimento_agua_municipio as float64) investimento_agua_municipio, + safe_cast(investimento_esgoto_municipio as float64) investimento_esgoto_municipio, + safe_cast(investimento_outro_municipio as float64) investimento_outro_municipio, + safe_cast( + investimento_recurso_proprio_municipio as float64 + ) investimento_recurso_proprio_municipio, + safe_cast( + investimento_recurso_oneroso_municipio as float64 + ) investimento_recurso_oneroso_municipio, + safe_cast( + investimento_recurso_nao_oneroso_municipio as float64 + ) investimento_recurso_nao_oneroso_municipio, + safe_cast(investimento_total_municipio as float64) investimento_total_municipio, + safe_cast(investimento_agua_estado as float64) investimento_agua_estado, + safe_cast(investimento_esgoto_estado as float64) investimento_esgoto_estado, + safe_cast(investimento_outro_estado as float64) investimento_outro_estado, + safe_cast( + investimento_recurso_proprio_estado as float64 + ) investimento_recurso_proprio_estado, + safe_cast( + investimento_recurso_oneroso_estado as float64 + ) investimento_recurso_oneroso_estado, + safe_cast( + investimento_recurso_nao_oneroso_estado as float64 + ) investimento_recurso_nao_oneroso_estado, + safe_cast(investimento_total_estado as float64) investimento_total_estado, +from `basedosdados-dev.br_mdr_snis_staging.municipio_agua_esgoto` as t diff --git a/models/br_mdr_snis/br_mdr_snis__prestador_agua_esgoto.sql b/models/br_mdr_snis/br_mdr_snis__prestador_agua_esgoto.sql new file mode 100644 index 00000000..91dfb943 --- /dev/null +++ b/models/br_mdr_snis/br_mdr_snis__prestador_agua_esgoto.sql @@ -0,0 +1,227 @@ +{{ config(alias="prestador_agua_esgoto", schema="br_mdr_snis") }} +select + safe_cast(ano as int64) ano, + safe_cast(id_municipio as string) id_municipio, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_prestador as string) id_prestador, + safe_cast(prestador as string) prestador, + safe_cast(sigla_prestador as string) sigla_prestador, + safe_cast(abrangencia as string) abrangencia, + safe_cast(tipo_servico as string) tipo_servico, + safe_cast(natureza_juridica as string) natureza_juridica, + safe_cast(populacao_atendida_agua as int64) populacao_atendida_agua, + safe_cast(populacao_atentida_esgoto as int64) populacao_atentida_esgoto, + safe_cast(populacao_urbana as int64) populacao_urbana, + safe_cast(populacao_urbana_atendida_agua as int64) populacao_urbana_atendida_agua, + safe_cast( + populacao_urbana_atendida_esgoto as int64 + ) populacao_urbana_atendida_esgoto, + safe_cast(extensao_rede_agua as float64) extensao_rede_agua, + safe_cast(extensao_rede_esgoto as float64) extensao_rede_esgoto, + -- safe_cast(local_atendimento_agua as int64) local_atendimento_agua, + -- safe_cast(local_atendimento_esgoto as int64) local_atendimento_esgoto, + safe_cast(ano_vencimento_delegacao_agua as int64) ano_vencimento_delegacao_agua, + safe_cast(ano_vencimento_delegacao_esgoto as int64) ano_vencimento_delegacao_esgoto, + safe_cast( + quantidade_municipios_agua_delegacao_vigor as int64 + ) quantidade_municipios_agua_delegacao_vigor, + safe_cast( + quantidade_municipios_esgoto_delegacao_vigor as int64 + ) quantidade_municipios_esgoto_delegacao_vigor, + safe_cast( + quantidade_municipios_agua_delegacao_vencida as int64 + ) quantidade_municipios_agua_delegacao_vencida, + safe_cast( + quantidade_municipios_esgoto_delegacao_vencida as int64 + ) quantidade_municipios_esgoto_delegacao_vencida, + safe_cast( + quantidade_municipios_agua_sem_delegacao as int64 + ) quantidade_municipios_agua_sem_delegacao, + safe_cast( + quantidade_municipios_esgoto_sem_delegacao as int64 + ) quantidade_municipios_esgoto_sem_delegacao, + safe_cast( + quantidade_municipios_sem_esgoto_sem_delegacao as int64 + ) quantidade_municipios_sem_esgoto_sem_delegacao, + safe_cast(quantidade_sede_municipal_agua as int64) quantidade_sede_municipal_agua, + safe_cast( + quantidade_sede_municipal_esgoto as int64 + ) quantidade_sede_municipal_esgoto, + safe_cast(quantidade_localidade_agua as int64) quantidade_localidade_agua, + safe_cast(quantidade_localidade_esgoto as int64) quantidade_localidade_esgoto, + safe_cast(quantidade_ligacao_total_agua as int64) quantidade_ligacao_total_agua, + safe_cast(quantidade_ligacao_total_esgoto as int64) quantidade_ligacao_total_esgoto, + safe_cast(quantidade_ligacao_ativa_agua as int64) quantidade_ligacao_ativa_agua, + safe_cast(quantidade_ligacao_ativa_esgoto as int64) quantidade_ligacao_ativa_esgoto, + safe_cast(quantidade_economia_ativa_agua as int64) quantidade_economia_ativa_agua, + safe_cast( + quantidade_economia_ativa_esgoto as int64 + ) quantidade_economia_ativa_esgoto, + safe_cast( + quantidade_ligacao_micromedia_ativa_agua as int64 + ) quantidade_ligacao_micromedia_ativa_agua, + safe_cast( + quantidade_economia_residencial_ativa_agua as int64 + ) quantidade_economia_residencial_ativa_agua, + safe_cast( + quantidade_economia_micromedida_ativa_agua as int64 + ) quantidade_economia_micromedida_ativa_agua, + safe_cast( + quantidade_economia_residencial_micromedida_ativa_agua as int64 + ) quantidade_economia_residencial_micromedida_ativa_agua, + safe_cast( + quantidade_economia_residencial_ativa_esgoto as int64 + ) quantidade_economia_residencial_ativa_esgoto, + safe_cast(volume_agua_produzido as float64) volume_agua_produzido, + safe_cast(volume_agua_tratada_eta as float64) volume_agua_tratada_eta, + safe_cast(volume_agua_micromedido as float64) volume_agua_micromedido, + safe_cast(volume_agua_consumido as float64) volume_agua_consumido, + safe_cast(volume_agua_faturado as float64) volume_agua_faturado, + safe_cast(volume_agua_macromedido as float64) volume_agua_macromedido, + safe_cast( + volume_agua_tratada_desinfeccao as float64 + ) volume_agua_tratada_desinfeccao, + safe_cast(volume_agua_bruta_exportado as float64) volume_agua_bruta_exportado, + safe_cast(volume_agua_tratada_importado as float64) volume_agua_tratada_importado, + safe_cast(volume_agua_tratada_exportado as float64) volume_agua_tratada_exportado, + safe_cast( + volume_agua_micromedido_economia_ativa as float64 + ) volume_agua_micromedido_economia_ativa, + safe_cast(volume_servico_agua as float64) volume_servico_agua, + safe_cast(volume_agua_fluoretada as float64) volume_agua_fluoretada, + safe_cast(consumo_eletrico_sistemas_agua as float64) consumo_eletrico_sistemas_agua, + safe_cast(volume_esgoto_coletado as float64) volume_esgoto_coletado, + safe_cast(volume_esgoto_tratado as float64) volume_esgoto_tratado, + safe_cast(volume_esgoto_faturado as float64) volume_esgoto_faturado, + safe_cast(volume_esgoto_bruto_exportado as float64) volume_esgoto_bruto_exportado, + safe_cast(volume_esgoto_bruto_importado as float64) volume_esgoto_bruto_importado, + safe_cast(volume_esgoto_importado as float64) volume_esgoto_importado, + safe_cast( + volume_esgoto_bruto_exportado_tratamento_importador as float64 + ) volume_esgoto_bruto_exportado_tratamento_importador, + safe_cast( + consumo_eletrico_sistemas_esgoto as float64 + ) consumo_eletrico_sistemas_esgoto, + safe_cast(indice_agua_ligacao as float64) indice_agua_ligacao, + safe_cast(indice_hidrometracao as float64) indice_hidrometracao, + safe_cast( + indice_macromedicao_volume_disponibilizado as float64 + ) indice_macromedicao_volume_disponibilizado, + safe_cast(indice_macromedicao as float64) indice_macromedicao, + safe_cast(indice_perda_faturamento as float64) indice_perda_faturamento, + safe_cast(indice_micromedido_economia as float64) indice_micromedido_economia, + safe_cast(indice_coleta_esgoto as float64) indice_coleta_esgoto, + safe_cast(indice_tratamento_esgoto as float64) indice_tratamento_esgoto, + safe_cast(indice_consumo_agua_faturado as float64) indice_consumo_agua_faturado, + safe_cast(indice_extensao_agua_ligacao as float64) indice_extensao_agua_ligacao, + safe_cast(indice_extensao_esgoto_ligacao as float64) indice_extensao_esgoto_ligacao, + safe_cast(indice_consumo_agua_per_capita as float64) indice_consumo_agua_per_capita, + safe_cast(indice_atendimento_urbano_agua as float64) indice_atendimento_urbano_agua, + safe_cast(indice_atendimento_agua_esgoto as float64) indice_atendimento_agua_esgoto, + safe_cast(indice_volume_agua_economia as float64) indice_volume_agua_economia, + safe_cast(indice_faturamento_agua as float64) indice_faturamento_agua, + safe_cast( + indice_participacao_economia_agua as float64 + ) indice_participacao_economia_agua, + safe_cast( + indice_micromedicao_relativo_agua as float64 + ) indice_micromedicao_relativo_agua, + safe_cast( + indice_esgotamento_agua_consumida as float64 + ) indice_esgotamento_agua_consumida, + safe_cast( + indice_atendimento_esgoto_esgoto as float64 + ) indice_atendimento_esgoto_esgoto, + safe_cast(indice_perda_distribuicao_agua as float64) indice_perda_distribuicao_agua, + safe_cast(indice_perda_linear_agua as float64) indice_perda_linear_agua, + safe_cast(indice_perda_ligacao_agua as float64) indice_perda_ligacao_agua, + safe_cast(indice_consumo_agua as float64) indice_consumo_agua, + safe_cast(indice_consumo_medio_agua as float64) indice_consumo_medio_agua, + safe_cast(indice_atendimento_total_agua as float64) indice_atendimento_total_agua, + safe_cast(indice_atendimento_esgoto_agua as float64) indice_atendimento_esgoto_agua, + safe_cast(indice_fluoretacao_agua as float64) indice_fluoretacao_agua, + safe_cast(indice_consumo_energia_agua as float64) indice_consumo_energia_agua, + safe_cast(indice_consumo_energia_esgoto as float64) indice_consumo_energia_esgoto, + safe_cast(receita_operacional_direta as float64) receita_operacional_direta, + safe_cast( + receita_operacional_direta_agua as float64 + ) receita_operacional_direta_agua, + safe_cast( + receita_operacional_direta_esgoto as float64 + ) receita_operacional_direta_esgoto, + safe_cast(receita_operacional_indireta as float64) receita_operacional_indireta, + safe_cast( + receita_operacional_direta_agua_exportada as float64 + ) receita_operacional_direta_agua_exportada, + safe_cast(receita_operacional as float64) receita_operacional, + safe_cast( + receita_operacional_direta_esgoto_importado as float64 + ) receita_operacional_direta_esgoto_importado, + safe_cast(arrecadacao_total as float64) arrecadacao_total, + safe_cast(credito_areceber as float64) credito_areceber, + safe_cast(despesa_pessoal as float64) despesa_pessoal, + safe_cast(quantidade_empregado as int64) quantidade_empregado, + safe_cast(despesa_produto_quimico as float64) despesa_produto_quimico, + safe_cast(despesa_energia as float64) despesa_energia, + safe_cast(despesa_servico_terceiro as float64) despesa_servico_terceiro, + safe_cast(despesa_exploracao as float64) despesa_exploracao, + safe_cast(despesas_juros_divida as float64) despesas_juros_divida, + safe_cast(despesa_total_servico as float64) despesa_total_servico, + safe_cast(despesa_ativo as float64) despesa_ativo, + safe_cast(despesa_agua_importada as float64) despesa_agua_importada, + safe_cast(despesa_fiscal as float64) despesa_fiscal, + safe_cast(despesa_fiscal_nao_computada as float64) despesa_fiscal_nao_computada, + safe_cast(despesa_exploracao_outro as float64) despesa_exploracao_outro, + safe_cast(despesa_servico_outro as float64) despesa_servico_outro, + safe_cast(despesa_amortizacao_divida as float64) despesa_amortizacao_divida, + safe_cast(despesas_juros_divida_excecao as float64) despesas_juros_divida_excecao, + safe_cast(despesa_divida_variacao as float64) despesa_divida_variacao, + safe_cast(despesa_divida_total as float64) despesa_divida_total, + safe_cast(despesa_esgoto_exportado as float64) despesa_esgoto_exportado, + safe_cast( + despesa_capitalizavel_municipio as float64 + ) despesa_capitalizavel_municipio, + safe_cast(despesa_capitalizavel_estado as float64) despesa_capitalizavel_estado, + safe_cast( + despesa_capitalizavel_prestador as float64 + ) despesa_capitalizavel_prestador, + safe_cast(investimento_agua_prestador as float64) investimento_agua_prestador, + safe_cast(investimento_esgoto_prestador as float64) investimento_esgoto_prestador, + safe_cast(investimento_outro_prestador as float64) investimento_outro_prestador, + safe_cast( + investimento_recurso_proprio_prestador as float64 + ) investimento_recurso_proprio_prestador, + safe_cast( + investimento_recurso_oneroso_prestador as float64 + ) investimento_recurso_oneroso_prestador, + safe_cast( + investimento_recurso_nao_oneroso_prestador as float64 + ) investimento_recurso_nao_oneroso_prestador, + safe_cast(investimento_total_prestador as float64) investimento_total_prestador, + safe_cast(investimento_agua_municipio as float64) investimento_agua_municipio, + safe_cast(investimento_esgoto_municipio as float64) investimento_esgoto_municipio, + safe_cast(investimento_outro_municipio as float64) investimento_outro_municipio, + safe_cast( + investimento_recurso_proprio_municipio as float64 + ) investimento_recurso_proprio_municipio, + safe_cast( + investimento_recurso_oneroso_municipio as float64 + ) investimento_recurso_oneroso_municipio, + safe_cast( + investimento_recurso_nao_oneroso_municipio as float64 + ) investimento_recurso_nao_oneroso_municipio, + safe_cast(investimento_total_municipio as float64) investimento_total_municipio, + safe_cast(investimento_agua_estado as float64) investimento_agua_estado, + safe_cast(investimento_esgoto_estado as float64) investimento_esgoto_estado, + safe_cast(investimento_outro_estado as float64) investimento_outro_estado, + safe_cast( + investimento_recurso_proprio_estado as float64 + ) investimento_recurso_proprio_estado, + safe_cast( + investimento_recurso_oneroso_estado as float64 + ) investimento_recurso_oneroso_estado, + safe_cast( + investimento_recurso_nao_oneroso_estado as float64 + ) investimento_recurso_nao_oneroso_estado, + safe_cast(investimento_total_estado as float64) investimento_total_estado, +from `basedosdados-dev.br_mdr_snis_staging.prestador_agua_esgoto` as t diff --git a/models/br_mdr_snis/schema.yml b/models/br_mdr_snis/schema.yml new file mode 100644 index 00000000..54a65f51 --- /dev/null +++ b/models/br_mdr_snis/schema.yml @@ -0,0 +1,682 @@ +--- +version: 2 +models: + - name: br_mdr_snis__prestador_agua_esgoto + description: Está tabela contém informações e indicadores desagregados por prestador + de serviço de água e esgoto, fornecendo um panorama detalhado do histórico e + do estado da arte da oferta de serviços saneamento básico no Brasil. Atenção! + este dataset não representa o conjunto total de dados disponíveis no SNIS. Para + saber detalhes sobre como fizemos a seleção dos dados na fonte original basta + realizar o download dos arquivos auxíliares no final da página. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [ano, id_municipio, id_prestador] + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_data_tempo__ano') + field: ano.ano + - name: id_municipio + description: "ID Município - IBGE 7 Dígitos\n" + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - name: sigla_uf + description: Sigla da Unidade da Federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: id_prestador + description: Identificador do prestador de serviço + - name: prestador + description: Nome do prestador de serviço + - name: sigla_prestador + description: Sigla do prestador de serviço + - name: abrangencia + description: Abrangência do prestador de serviço + - name: tipo_servico + description: Tipo do prestador de serviço + - name: natureza_juridica + description: Natureza jurídica do prestador de serviço + - name: populacao_atendida_agua + description: AG001 - População total atendida com abastecimento de água + - name: populacao_atentida_esgoto + description: ES001 - População total atendida com esgotamento sanitário + - name: populacao_urbana + description: 'População urbana do município do ano de referência (Fonte: IBGE)' + - name: populacao_urbana_atendida_agua + description: AG026 - População urbana atendida com abastecimento de água + - name: populacao_urbana_atendida_esgoto + description: ES026 - População urbana atendida com esgotamento sanitário + - name: extensao_rede_agua + description: AG005 - Extensão da rede de água + - name: extensao_rede_esgoto + description: ES004 - Extensão da rede de esgotos + - name: local_atendimento_agua + description: GE019 - Onde atende com abastecimento de água + - name: local_atendimento_esgoto + description: GE020 - Onde atende com esgotamento sanitário + - name: ano_vencimento_delegacao_agua + description: GE017 - Ano de vencimento da delegação de abastecimento de água + - name: ano_vencimento_delegacao_esgoto + description: GE018 - Ano de vencimento da delegação de esgotamento sanitário + - name: quantidade_municipios_agua_delegacao_vigor + description: GE001 - Quantidade de municípios atendidos com abastecimento + de água com delegação em vigor + - name: quantidade_municipios_esgoto_delegacao_vigor + description: GE014 - Quantidade de municípios atendidos com esgotamento sanitário + com delegação em vigor + - name: quantidade_municipios_agua_delegacao_vencida + description: GE002 - Quantidade de municípios atendidos com abastecimento + de água com delegação vencida + - name: quantidade_municipios_esgoto_delegacao_vencida + description: GE015 - Quantidade de municípios atendidos com esgotamento sanitário + com delegação vencida + - name: quantidade_municipios_agua_sem_delegacao + description: GE003 - Quantidade de municípios atendidos com abastecimento + de água sem delegação + - name: quantidade_municipios_esgoto_sem_delegacao + description: GE016 - Quantidade de municípios atendidos com esgotamento sanitário + sem delegação + - name: quantidade_municipios_sem_esgoto_sem_delegacao + description: GE030 - Quantidade de municípios não atendidos com esgotamento + sanitário e sem delegação para prestar esse serviço + - name: quantidade_sede_municipal_agua + description: GE008 - Quantidade de Sedes municipais atendidas com abastecimento + de água + - name: quantidade_sede_municipal_esgoto + description: GE009 - Quantidade de Sedes municipais atendidas com esgotamento + sanitário + - name: quantidade_localidade_agua + description: GE010 - Quantidade de Localidades (excluídas as sedes) atendidas + com abastecimento de água + - name: quantidade_localidade_esgoto + description: GE011 - Quantidade de Localidades (excluídas as sedes) atendidas + com esgotamento sanitário + - name: quantidade_ligacao_total_agua + description: AG021 - Quantidade de ligações totais de água + - name: quantidade_ligacao_total_esgoto + description: ES009 - Quantidade de ligações totais de esgotos + - name: quantidade_ligacao_ativa_agua + description: AG002 - Quantidade de ligações ativas de água + - name: quantidade_ligacao_ativa_esgoto + description: ES002 - Quantidade de ligações ativas de esgotos + - name: quantidade_economia_ativa_agua + description: AG003 - Quantidade de economias ativas de água + - name: quantidade_economia_ativa_esgoto + description: ES003 - Quantidade de economias ativas de esgotos + - name: quantidade_ligacao_micromedia_ativa_agua + description: AG004 - Quantidade de ligações ativas de água micromedidas + - name: quantidade_economia_residencial_ativa_agua + description: AG013 - Quantidade de economias residenciais ativas de água + - name: quantidade_economia_micromedida_ativa_agua + description: AG014 - Quantidade de economias ativas de água micromedidas + - name: quantidade_economia_residencial_micromedida_ativa_agua + description: AG022 - Quantidade de economias residenciais ativas de água micromedidas + - name: quantidade_economia_residencial_ativa_esgoto + description: ES008 - Quantidade de economias residenciais ativas de esgotos + - name: volume_agua_produzido + description: AG006 - Volume de água produzido + - name: volume_agua_tratada_eta + description: AG007 - Volume de água tratada em ETAs + - name: volume_agua_micromedido + description: AG008 - Volume de água micromedido + - name: volume_agua_consumido + description: AG010 - Volume de água consumido + - name: volume_agua_faturado + description: AG011 - Volume de água faturado + - name: volume_agua_macromedido + description: AG012 - Volume de água macromedido + - name: volume_agua_tratada_desinfeccao + description: AG015 - Volume de água tratada por simples desinfecção + - name: volume_agua_bruta_exportado + description: AG017 - Volume de água bruta exportado + - name: volume_agua_tratada_importado + description: AG018 - Volume de água tratada importado + - name: volume_agua_tratada_exportado + description: AG019 - Volume de água tratada exportado + - name: volume_agua_micromedido_economia_ativa + description: AG020 - Volume micromedido nas economias residenciais ativas + de água + - name: volume_servico_agua + description: AG024 - Volume de serviço + - name: volume_agua_fluoretada + description: AG027 - Volume de água fluoretada + - name: consumo_eletrico_sistemas_agua + description: AG028 - Consumo total de energia elétrica nos sistemas de água + - name: volume_esgoto_coletado + description: ES005 - Volume de esgotos coletado + - name: volume_esgoto_tratado + description: ES006 - Volume de esgotos tratado + - name: volume_esgoto_faturado + description: ES007 - Volume de esgotos faturado + - name: volume_esgoto_bruto_exportado + description: ES012 - Volume de esgoto bruto exportado + - name: volume_esgoto_bruto_importado + description: ES013 - Volume de esgotos bruto importado + - name: volume_esgoto_importado + description: ES014 - Volume de esgoto importado tratado nas instalações do + importador + - name: volume_esgoto_bruto_exportado_tratamento_importador + description: ES015 - Volume de esgoto bruto exportado tratado nas instalações + do importador + - name: consumo_eletrico_sistemas_esgoto + description: ES028 - Consumo total de energia elétrica nos sistemas de esgotos + - name: indice_agua_ligacao + description: IN001 - Densidade de economias de água por ligação + - name: indice_hidrometracao + description: IN009 - Índice de hidrometração + - name: indice_macromedicao_volume_disponibilizado + description: IN010 - Índice de micromedição relativo ao volume disponibilizado + - name: indice_macromedicao + description: IN011 - Índice de macromedição + - name: indice_perda_faturamento + description: IN013 - Índice de perdas faturamento + - name: indice_micromedido_economia + description: IN014 - Consumo micromedido por economia + - name: indice_coleta_esgoto + description: IN015 - Índice de coleta de esgoto + - name: indice_tratamento_esgoto + description: IN016 - Índice de tratamento de esgoto + - name: indice_consumo_agua_faturado + description: IN017 - Consumo de água faturado por economia + - name: indice_extensao_agua_ligacao + description: IN020 - Extensão da rede de água por ligação + - name: indice_extensao_esgoto_ligacao + description: IN021 - Extensão da rede de esgoto por ligação + - name: indice_consumo_agua_per_capita + description: IN022 - Consumo médio per capita de água + - name: indice_atendimento_urbano_agua + description: IN023 - Índice de atendimento urbano de água + - name: indice_atendimento_agua_esgoto + description: IN024 - Índice de atendimento urbano de esgoto referido aos municípios + atendidos com água + - name: indice_volume_agua_economia + description: IN025 - Volume de água disponibilizado por economia + - name: indice_faturamento_agua + description: IN028 - Índice de faturamento de água + - name: indice_participacao_economia_agua + description: IN043 - Participação das economias residenciais de água no total + das economias de água + - name: indice_micromedicao_relativo_agua + description: IN044 - Índice de micromedição relativo ao consumo + - name: indice_esgotamento_agua_consumida + description: IN046 - Índice de esgoto tratado referido à água consumida + - name: indice_atendimento_esgoto_esgoto + description: IN047 - Índice de atendimento urbano de esgoto referido aos municípios + atendidos com esgoto + - name: indice_perda_distribuicao_agua + description: IN049 - Índice de perdas na distribuição + - name: indice_perda_linear_agua + description: IN050 - Índice bruto de perdas lineares + - name: indice_perda_ligacao_agua + description: IN051 - Índice de perdas por ligação + - name: indice_consumo_agua + description: IN052 - Índice de consumo de água + - name: indice_consumo_medio_agua + description: IN053 - Consumo médio de água por economia + - name: indice_atendimento_total_agua + description: IN055 - Índice de atendimento total de água + - name: indice_atendimento_esgoto_agua + description: IN056 - Índice de atendimento total de esgoto referido aos municípios + atendidos com água + - name: indice_fluoretacao_agua + description: IN057 - Índice de fluoretação de água + - name: indice_consumo_energia_agua + description: IN058 - Índice de consumo de energia elétrica em sistemas de + abastecimento de água + - name: indice_consumo_energia_esgoto + description: 'IN059 - Índice de consumo de energia elétrica em sistemas de + esgotamento sanitário ' + - name: receita_operacional_direta + description: FN001 - Receita operacional direta total + - name: receita_operacional_direta_agua + description: FN002 - Receita operacional direta de água + - name: receita_operacional_direta_esgoto + description: FN003 - Receita operacional direta de esgoto + - name: receita_operacional_indireta + description: FN004 - Receita operacional indireta + - name: receita_operacional_direta_agua_exportada + description: FN007 - Receita operacional direta de água exportada (bruta ou + tratada) + - name: receita_operacional + description: FN005 - Receita operacional total (direta + indireta) + - name: receita_operacional_direta_esgoto_importado + description: FN038 - Receita operacional direta - esgoto bruto importado + - name: arrecadacao_total + description: FN006 - Arrecadação total + - name: credito_areceber + description: FN008 - Créditos de contas a receber + - name: despesa_pessoal + description: FN010 - Despesa com pessoal próprio + - name: quantidade_empregado + description: FN026 - Quantidade total de empregados próprios + - name: despesa_produto_quimico + description: FN011 - Despesa com produtos químicos + - name: despesa_energia + description: FN013 - Despesa com energia elétrica + - name: despesa_servico_terceiro + description: FN014 - Despesa com serviços de terceiros + - name: despesa_exploracao + description: FN015 - Despesas de Exploração (DEX) + - name: despesas_juros_divida + description: FN016 - Despesas com juros e encargos do serviço da dívida + - name: despesa_total_servico + description: FN017 - Despesas totais com os serviços (DTS) + - name: despesa_ativo + description: FN019 - Despesas com depreciação, amortização do ativo diferido + e provisão para devedores duvidosos + - name: despesa_agua_importada + description: FN020 - Despesa com água importada (bruta ou tratada) + - name: despesa_fiscal + description: FN021 - Despesas fiscais ou tributárias computadas na DEX + - name: despesa_fiscal_nao_computada + description: FN022 - Despesas fiscais ou tributárias não computadas na DEX + - name: despesa_exploracao_outro + description: FN027 - Outras despesas de exploração + - name: despesa_servico_outro + description: FN028 - Outras despesas com os serviços + - name: despesa_amortizacao_divida + description: FN034 - Despesas com amortizações do serviço da dívida + - name: despesas_juros_divida_excecao + description: FN035 - Despesas com juros e encargos do serviço da dívida, exceto + variações monetária e cambial + - name: despesa_divida_variacao + description: FN036 - Despesa com variações monetárias e cambiais das dívidas + - name: despesa_divida_total + description: FN037 - Despesas totais com o serviço da dívida + - name: despesa_esgoto_exportado + description: FN039 - Despesa com esgoto exportado + - name: despesa_capitalizavel_municipio + description: FN041 - Despesas capitalizáveis realizadas pelo(s) município(s) + - name: despesa_capitalizavel_estado + description: FN051 - Despesas capitalizáveis realizadas pelo estado + - name: despesa_capitalizavel_prestador + description: FN018 - Despesas capitalizáveis realizadas pelo prestador de + serviços + - name: investimento_agua_prestador + description: FN023 - Investimento realizado em abastecimento de água pelo + prestador de serviços + - name: investimento_esgoto_prestador + description: FN024 - Investimento realizado em esgotamento sanitário pelo + prestador de serviços + - name: investimento_outro_prestador + description: FN025 - Outros investimentos realizados pelo prestador de serviços + - name: investimento_recurso_proprio_prestador + description: FN030 - Investimento com recursos próprios realizado pelo prestador + de serviços. + - name: investimento_recurso_oneroso_prestador + description: FN031 - Investimento com recursos onerosos realizado pelo prestador + de serviços. + - name: investimento_recurso_nao_oneroso_prestador + description: FN032 - Investimento com recursos não onerosos realizado pelo + prestador de serviços. + - name: investimento_total_prestador + description: FN033 - Investimentos totais realizados pelo prestador de serviços + - name: investimento_agua_municipio + description: FN042 - Investimento realizado em abastecimento de água pelo(s) + município(s) + - name: investimento_esgoto_municipio + description: FN043 - Investimento realizado em esgotamento sanitário pelo(s) + município(s) + - name: investimento_outro_municipio + description: FN044 - Outros investimentos realizados pelo(s) município(s) + - name: investimento_recurso_proprio_municipio + description: FN045 - Investimento com recursos próprios realizado pelo(s) + município(s) + - name: investimento_recurso_oneroso_municipio + description: FN046 - Investimento com recursos onerosos realizado pelo(s) + município(s) + - name: investimento_recurso_nao_oneroso_municipio + description: FN047 - Investimento com recursos não onerosos realizado pelo(s) + município(s) + - name: investimento_total_municipio + description: FN048 - Investimentos totais realizados pelo(s) município(s) + - name: investimento_agua_estado + description: FN052 - Investimento realizado em abastecimento de água pelo + estado + - name: investimento_esgoto_estado + description: FN053 - Investimento realizado em esgotamento sanitário pelo + estado + - name: investimento_outro_estado + description: FN054 - Outros investimentos realizados pelo estado + - name: investimento_recurso_proprio_estado + description: FN055 - Investimento com recursos próprios realizado pelo estado + - name: investimento_recurso_oneroso_estado + description: FN056 - Investimento com recursos onerosos realizado pelo estado + - name: investimento_recurso_nao_oneroso_estado + description: FN057 - Investimento com recursos não onerosos realizado pelo + estado + - name: investimento_total_estado + description: FN058 - Investimentos totais realizados pelo estado + - name: br_mdr_snis__municipio_agua_esgoto + description: Está tabela contém informações e indicadores desagregados por prestador + de serviço de água e esgoto, fornecendo um panorama detalhado do histórico e + do estado da arte da oferta de serviços saneamento básico no Brasil. Atenção! + este dataset não representa o conjunto total de dados disponíveis no SNIS. Para + saber detalhes sobre como fizemos a seleção dos dados na fonte original basta + realizar o download dos arquivos auxíliares no final da página. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [ano, id_municipio] + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_data_tempo__ano') + field: ano.ano + - name: id_municipio + description: ID Município - IBGE 7 Dígitos + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - name: sigla_uf + description: Sigla da Unidade da Federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: populacao_atendida_agua + description: AG001 - População total atendida com abastecimento de água + - name: populacao_atentida_esgoto + description: ES001 - População total atendida com esgotamento sanitário + - name: populacao_urbana + description: 'População urbana do município do ano de referência (Fonte: IBGE)' + - name: populacao_urbana_residente_agua + description: G06A - População urbana residente do(s) município(s) com abastecimento + de água + - name: populacao_urbana_atendida_agua + description: AG026 - População urbana atendida com abastecimento de água + - name: populacao_urbana_atendida_agua_ibge + description: G12A - População total residente do(s) município(s) com abastecimento + de água, segundo o IBGE + - name: populacao_urbana_residente_esgoto + description: G06B - População urbana residente do(s) município(s) com esgotamento + sanitário + - name: populacao_urbana_atendida_esgoto + description: ES026 - População urbana atendida com esgotamento sanitário + - name: populacao_urbana_residente_esgoto_ibge + description: G12B - População total residente do(s) município(s) com esgotamento + sanitário, segundo o IBGE + - name: extensao_rede_agua + description: AG005 - Extensão da rede de água + - name: extensao_rede_esgoto + description: ES004 - Extensão da rede de esgotos + - name: quantidade_sede_municipal_agua + description: GE008 - Quantidade de Sedes municipais atendidas com abastecimento + de água + - name: quantidade_sede_municipal_esgoto + description: GE009 - Quantidade de Sedes municipais atendidas com esgotamento + sanitário + - name: quantidade_localidade_agua + description: GE010 - Quantidade de Localidades (excluídas as sedes) atendidas + com abastecimento de água + - name: quantidade_localidade_esgoto + description: GE011 - Quantidade de Localidades (excluídas as sedes) atendidas + com esgotamento sanitário + - name: quantidade_ligacao_ativa_agua + description: AG002 - Quantidade de ligações ativas de água + - name: quantidade_ligacao_ativa_esgoto + description: ES002 - Quantidade de ligações ativas de esgotos + - name: quantidade_ligacao_total_agua + description: AG021 - Quantidade de ligações totais de água + - name: quantidade_ligacao_total_esgoto + description: ES009 - Quantidade de ligações totais de esgotos + - name: quantidade_economia_ativa_agua + description: AG003 - Quantidade de economias ativas de água + - name: quantidade_economia_ativa_esgoto + description: ES003 - Quantidade de economias ativas de esgotos + - name: quantidade_ligacao_micromedia_ativa_agua + description: AG004 - Quantidade de ligações ativas de água micromedidas + - name: quantidade_economia_residencial_ativa_agua + description: AG013 - Quantidade de economias residenciais ativas de água + - name: quantidade_economia_residencial_ativa_esgoto + description: ES008 - Quantidade de economias residenciais ativas de esgotos + - name: quantidade_economia_micromedida_ativa_agua + description: AG014 - Quantidade de economias ativas de água micromedidas + - name: quantidade_economia_residencial_micromedida_ativa_agua + description: AG022 - Quantidade de economias residenciais ativas de água micromedidas + - name: volume_agua_produzido + description: AG006 - Volume de água produzido + - name: volume_agua_tratada_eta + description: AG007 - Volume de água tratada em ETAs + - name: volume_agua_micromedido + description: AG008 - Volume de água micromedido + - name: volume_agua_consumido + description: AG010 - Volume de água consumido + - name: volume_agua_faturado + description: AG011 - Volume de água faturado + - name: volume_agua_macromedido + description: AG012 - Volume de água macromedido + - name: volume_agua_tratada_desinfeccao + description: AG015 - Volume de água tratada por simples desinfecção + - name: volume_agua_bruta_exportado + description: AG017 - Volume de água bruta exportado + - name: volume_agua_tratada_importado + description: AG018 - Volume de água tratada importado + - name: volume_agua_tratada_exportado + description: AG019 - Volume de água tratada exportado + - name: volume_agua_micromedido_economia_ativa + description: AG020 - Volume micromedido nas economias residenciais ativas + de água + - name: volume_servico_agua + description: AG024 - Volume de serviço + - name: volume_agua_fluoretada + description: AG027 - Volume de água fluoretada + - name: consumo_eletrico_sistemas_agua + description: AG028 - Consumo total de energia elétrica nos sistemas de água + - name: volume_esgoto_coletado + description: ES005 - Volume de esgotos coletado + - name: volume_esgoto_tratado + description: ES006 - Volume de esgotos tratado + - name: volume_esgoto_faturado + description: ES007 - Volume de esgotos faturado + - name: volume_esgoto_bruto_exportado + description: ES012 - Volume de esgoto bruto exportado + - name: volume_esgoto_bruto_importado + description: ES013 - Volume de esgotos bruto importado + - name: volume_esgoto_importado + description: ES014 - Volume de esgoto importado tratado nas instalações do + importador + - name: volume_esgoto_bruto_exportado_tratamento_importador + description: ES015 - Volume de esgoto bruto exportado tratado nas instalações + do importador + - name: consumo_eletrico_sistemas_esgoto + description: ES028 - Consumo total de energia elétrica nos sistemas de esgotos + - name: indice_agua_ligacao + description: IN001_AE - Densidade de economias de água por ligação + - name: indice_hidrometracao + description: IN009_AE - Índice de hidrometração + - name: indice_macromedicao_volume_disponibilizado + description: IN010_AE - Índice de micromedição relativo ao volume disponibilizado + - name: indice_macromedicao + description: IN011_AE - Índice de macromedição + - name: indice_perda_faturamento + description: IN013_AE - Índice de perdas faturamento + - name: indice_micromedido_economia + description: IN014_AE - Consumo micromedido por economia + - name: indice_coleta_esgoto + description: IN015_AE - Índice de coleta de esgoto + - name: indice_tratamento_esgoto + description: IN016_AE - Índice de tratamento de esgoto + - name: indice_consumo_agua_faturado + description: IN017_AE - Consumo de água faturado por economia + - name: indice_extensao_agua_ligacao + description: IN020_AE - Extensão da rede de água por ligação + - name: indice_extensao_esgoto_ligacao + description: IN021_AE - Extensão da rede de esgoto por ligação + - name: indice_consumo_agua_per_capita + description: IN022_AE - Consumo médio per capita de água + - name: indice_atendimento_urbano_agua + description: IN023_AE - Índice de atendimento urbano de água + - name: indice_atendimento_agua_esgoto + description: IN024_AE - Índice de atendimento urbano de esgoto referido aos + municípios atendidos com água + - name: indice_volume_agua_economia + description: IN025_AE - Volume de água disponibilizado por economia + - name: indice_faturamento_agua + description: IN028_AE - Índice de faturamento de água + - name: indice_participacao_economia_agua + description: IN043_AE - Participação das economias residenciais de água no + total das economias de água + - name: indice_micromedicao_relativo_agua + description: IN044_AE - Índice de micromedição relativo ao consumo + - name: indice_esgotamento_agua_consumida + description: IN046_AE - Índice de esgoto tratado referido à água consumida + - name: indice_atendimento_esgoto_esgoto + description: IN047_AE - Índice de atendimento urbano de esgoto referido aos + municípios atendidos com esgoto + - name: indice_perda_distribuicao_agua + description: IN049_AE - Índice de perdas na distribuição + - name: indice_perda_linear_agua + description: IN050_AE - Índice bruto de perdas lineares + - name: indice_perda_ligacao_agua + description: IN051_AE - Índice de perdas por ligação + - name: indice_consumo_agua + description: IN052_AE - Índice de consumo de água + - name: indice_consumo_medio_agua + description: IN053_AE - Consumo médio de água por economia + - name: indice_atendimento_total_agua + description: IN055_AE - Índice de atendimento total de água + - name: indice_atendimento_esgoto_agua + description: IN056_AE - Índice de atendimento total de esgoto referido aos + municípios atendidos com água + - name: indice_fluoretacao_agua + description: IN057_AE - Índice de fluoretação de água + - name: indice_consumo_energia_agua + description: IN058_AE - Índice de consumo de energia elétrica em sistemas + de abastecimento de água + - name: indice_consumo_energia_esgoto + description: 'IN059_AE - Índice de consumo de energia elétrica em sistemas + de esgotamento sanitário ' + - name: receita_operacional_direta + description: FN001 - Receita operacional direta total + - name: receita_operacional_direta_agua + description: FN002 - Receita operacional direta de água + - name: receita_operacional_direta_esgoto + description: FN003 - Receita operacional direta de esgoto + - name: receita_operacional_indireta + description: FN004 - Receita operacional indireta + - name: receita_operacional_direta_agua_exportada + description: FN007 - Receita operacional direta de água exportada (bruta ou + tratada) + - name: receita_operacional + description: FN005 - Receita operacional total (direta + indireta) + - name: receita_operacional_direta_esgoto_importado + description: FN038 - Receita operacional direta - esgoto bruto importado + - name: arrecadacao_total + description: FN006 - Arrecadação total + - name: credito_areceber + description: FN008 - Créditos de contas a receber + - name: despesa_pessoal + description: FN010 - Despesa com pessoal próprio + - name: quantidade_empregado + description: FN026 - Quantidade total de empregados próprios + - name: despesa_produto_quimico + description: FN011 - Despesa com produtos químicos + - name: despesa_energia + description: FN013 - Despesa com energia elétrica + - name: despesa_servico_terceiro + description: FN014 - Despesa com serviços de terceiros + - name: despesa_exploracao + description: FN015 - Despesas de Exploração (DEX) + - name: despesas_juros_divida + description: FN016 - Despesas com juros e encargos do serviço da dívida + - name: despesa_total_servico + description: FN017 - Despesas totais com os serviços (DTS) + - name: despesa_ativo + description: FN019 - Despesas com depreciação, amortização do ativo diferido + e provisão para devedores duvidosos + - name: despesa_agua_importada + description: FN020 - Despesa com água importada (bruta ou tratada) + - name: despesa_fiscal + description: FN021 - Despesas fiscais ou tributárias computadas na DEX + - name: despesa_fiscal_nao_computada + description: FN022 - Despesas fiscais ou tributárias não computadas na DEX + - name: despesa_exploracao_outro + description: FN027 - Outras despesas de exploração + - name: despesa_servico_outro + description: FN028 - Outras despesas com os serviços + - name: despesa_amortizacao_divida + description: FN034 - Despesas com amortizações do serviço da dívida + - name: despesas_juros_divida_excecao + description: FN035 - Despesas com juros e encargos do serviço da dívida, exceto + variações monetária e cambial + - name: despesa_divida_variacao + description: FN036 - Despesa com variações monetárias e cambiais das dívidas + - name: despesa_divida_total + description: FN037 - Despesas totais com o serviço da dívida + - name: despesa_esgoto_exportado + description: FN039 - Despesa com esgoto exportado + - name: despesa_capitalizavel_municipio + description: FN041 - Despesas capitalizáveis realizadas pelo(s) município(s) + - name: despesa_capitalizavel_estado + description: FN051 - Despesas capitalizáveis realizadas pelo estado + - name: despesa_capitalizavel_prestador + description: FN018 - Despesas capitalizáveis realizadas pelo prestador de + serviços + - name: investimento_agua_prestador + description: FN023 - Investimento realizado em abastecimento de água pelo + prestador de serviços + - name: investimento_esgoto_prestador + description: FN024 - Investimento realizado em esgotamento sanitário pelo + prestador de serviços + - name: investimento_outro_prestador + description: FN025 - Outros investimentos realizados pelo prestador de serviços + - name: investimento_recurso_proprio_prestador + description: FN030 - Investimento com recursos próprios realizado pelo prestador + de serviços. + - name: investimento_recurso_oneroso_prestador + description: FN031 - Investimento com recursos onerosos realizado pelo prestador + de serviços. + - name: investimento_recurso_nao_oneroso_prestador + description: FN032 - Investimento com recursos não onerosos realizado pelo + prestador de serviços. + - name: investimento_total_prestador + description: FN033 - Investimentos totais realizados pelo prestador de serviços + - name: investimento_agua_municipio + description: FN042 - Investimento realizado em abastecimento de água pelo(s) + município(s) + - name: investimento_esgoto_municipio + description: FN043 - Investimento realizado em esgotamento sanitário pelo(s) + município(s) + - name: investimento_outro_municipio + description: FN044 - Outros investimentos realizados pelo(s) município(s) + - name: investimento_recurso_proprio_municipio + description: FN045 - Investimento com recursos próprios realizado pelo(s) + município(s) + - name: investimento_recurso_oneroso_municipio + description: FN046 - Investimento com recursos onerosos realizado pelo(s) + município(s) + - name: investimento_recurso_nao_oneroso_municipio + description: FN047 - Investimento com recursos não onerosos realizado pelo(s) + município(s) + - name: investimento_total_municipio + description: FN048 - Investimentos totais realizados pelo(s) município(s) + - name: investimento_agua_estado + description: FN052 - Investimento realizado em abastecimento de água pelo + estado + - name: investimento_esgoto_estado + description: FN053 - Investimento realizado em esgotamento sanitário pelo + estado + - name: investimento_outro_estado + description: FN054 - Outros investimentos realizados pelo estado + - name: investimento_recurso_proprio_estado + description: FN055 - Investimento com recursos próprios realizado pelo estado + - name: investimento_recurso_oneroso_estado + description: FN056 - Investimento com recursos onerosos realizado pelo estado + - name: investimento_recurso_nao_oneroso_estado + description: FN057 - Investimento com recursos não onerosos realizado pelo + estado + - name: investimento_total_estado + description: FN058 - Investimentos totais realizados pelo estado From 237588d93a174f0a548d0a8e99777d5ecb6a4c89 Mon Sep 17 00:00:00 2001 From: uiro-bi Date: Mon, 1 Jul 2024 09:04:45 -0300 Subject: [PATCH 2/2] feat: add br_mdr_snis data wrangling code --- models/br_mdr_snis/code/snis.ipynb | 360 +++++++++++++++++++++++++++++ models/br_mdr_snis/code/utils.py | 101 ++++++++ 2 files changed, 461 insertions(+) create mode 100644 models/br_mdr_snis/code/snis.ipynb create mode 100644 models/br_mdr_snis/code/utils.py diff --git a/models/br_mdr_snis/code/snis.ipynb b/models/br_mdr_snis/code/snis.ipynb new file mode 100644 index 00000000..6f6d4fbe --- /dev/null +++ b/models/br_mdr_snis/code/snis.ipynb @@ -0,0 +1,360 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#from code.utils import *\n", + "import pandas as pd\n", + "from io import StringIO\n", + "import os\n", + "import requests\n", + "import requests\n", + "from bs4 import BeautifulSoup as soup\n", + "from typing import List\n", + "from typing import Dict\n", + "import numpy as np\n", + "import unicodedata\n", + "import basedosdados as bd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from io import StringIO\n", + "import requests\n", + "import unicodedata\n", + "from typing import Dict\n", + "\n", + "\n", + "#---- mudar nome das colunas ----#\n", + "\n", + "def change_column_name(\n", + " url_architecture: str\n", + ")-> Dict[str, str]:\n", + " \n", + " \"\"\"Essa função recebe como input uma string com link para uma tabela de arquitetura\n", + " e retorna um dicionário com os nomes das colunas originais e os nomes das colunas \n", + " padronizados\n", + " Returns:\n", + " dict: com chaves sendo os nomes originais e valores sendo os nomes padronizados\n", + " \"\"\"\n", + " # Converte a URL de edição para um link de exportação em formato csv\n", + " url = url_architecture.replace(\n", + " \"edit#gid=\",\n", + " \"export?format=csv&gid=\"\n", + " )\n", + " \n", + " Coloca a arquitetura em um dataframe\n", + " df_architecture = pd.read_csv(\n", + " StringIO(requests.get(url, timeout=10).content.decode(\"utf-8\"))\n", + " )\n", + " \n", + " # Cria um dicionário de nomes de colunas e tipos de dados a partir do dataframe df_architecture\n", + " column_name_dict = dict(\n", + " zip(df_architecture['original_name'],df_architecture['name'])\n", + " )\n", + " \n", + " # Retorna o dicionário \n", + "\n", + " return column_name_dict\n", + "\n", + "#---- mudar tipos de dados ----#\n", + "\n", + "def change_dtypes(\n", + " url_architecture: str\n", + ")-> Dict[str, str]:\n", + " \n", + " \"\"\"Essa função recebe como input uma string com link para uma tabela de arquitetura\n", + " e retorna um dicionário com os nomes das colunas originais e os nomes das colunas \n", + " padronizados\n", + " Returns:\n", + " dict: com chaves sendo os nomes originais e valores sendo os nomes padronizados\n", + " \"\"\"\n", + " # Converte a URL de edição para um link de exportação em formato csv\n", + " url = url_architecture.replace(\n", + " \"edit#gid=\",\n", + " \"export?format=csv&gid=\"\n", + " )\n", + " \n", + " Coloca a arquitetura em um dataframe\n", + " df_architecture = pd.read_csv(\n", + " StringIO(requests.get(url, timeout=10).content.decode(\"utf-8\"))\n", + " )\n", + " \n", + "\n", + " # Cria um dicionário de nomes de colunas e tipos de dados a partir do dataframe df_architecture\n", + " column_name_dict = dict(\n", + " zip(df_architecture['original_name'],df_architecture['bigquery_type'])\n", + " )\n", + "\n", + " #O pandas não consegue ler ints que tenham NAs\n", + " #Para contornar isso e não adicionar 0. ao final de cada número,\n", + " #optei por converter todos os inteiros para string\n", + " \n", + " #loop para padronizar os tipos de dados e converter in para string\n", + " for key, value in column_name_dict.items():\n", + " if value == 'string':\n", + " column_name_dict[key] = str\n", + " elif value == 'int64':\n", + " column_name_dict[key] = str\n", + " elif value == 'float64':\n", + " column_name_dict[key] = float\n", + "\n", + " return column_name_dict\n", + "\n", + "\n", + "#---- remover acentos e caracteres especiais ----#\n", + "def remove_accents(\n", + " input_str\n", + "):\n", + " \"\"\"Essa função é aplicada com método apply em uma coluna de um dataframe para remover\n", + " acentos e caracteres especiais de uma string. Exemplo de uso\n", + "\n", + " df[x].apply(remove_accents)\n", + "\n", + " Args:\n", + " input_str (pd.Series): Uma coluna com strings\n", + "\n", + " Returns:\n", + " pd.Series : coluna com strings sema acentos e caracteres especiais\n", + " \"\"\" \n", + " nfkd_form = unicodedata.normalize('NFKD', input_str)\n", + " \n", + " return u\"\".join([c for c in nfkd_form if not unicodedata.combining(c)])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#municipio\n", + "dir_path = r'\\br_mdr_snis\\input\\municipio'\n", + "files = os.listdir(dir_path)\n", + "\n", + "lista_dfs = []\n", + "\n", + "print('baixando dicionario da tabela de arquitetura para renomear colunas')\n", + "dicionario = change_column_name(\n", + " url_architecture = 'https://docs.google.com/spreadsheets/d/1OA4mSAo99kY7vN4hf3-n22fAhbcXMPuyF1uxGBIo3UE/edit?gid=0#gid=0'\n", + ")\n", + "\n", + "print('baixando tipos de dados da tabela de arquitetura para importar dados')\n", + "dicionario_dtypes = change_dtypes(\n", + " url_architecture='https://docs.google.com/spreadsheets/d/1OA4mSAo99kY7vN4hf3-n22fAhbcXMPuyF1uxGBIo3UE/edit?gid=0#gid=0'\n", + ")\n", + "\n", + "print('baixando diretorios de municípios da BD')\n", + "municipio = bd.read_table(\n", + " dataset_id= 'br_bd_diretorios_brasil',\n", + " table_id= 'municipio',\n", + " billing_project_id= \"pisagab-staging\"\n", + " )\n", + "municipio_dict = dict(zip(municipio.id_municipio_6, municipio.id_municipio))\n", + "\n", + "\n", + "for file in files:\n", + " \n", + " print(f'lendo arquivo {file}')\n", + " df = pd.read_csv(\n", + " dir_path + '\\\\' + file,\n", + " sep=';',\n", + " encoding= 'latin-1',\n", + " decimal=',',\n", + " thousands='.',\n", + " dtype= dicionario_dtypes,\n", + " )\n", + "\n", + " print('renomeando colunas')\n", + " #rename\n", + " df.rename(\n", + " columns=dicionario, \n", + " inplace=True\n", + " )\n", + "\n", + " print('adicionando id_municipio 7 dígitos')\n", + " #add id_municipio 7 digits\n", + " df['id_municipio'] = df['id_municipio'].map(municipio_dict)\n", + " \n", + " #check if there is any null value\n", + " if df['id_municipio'].isna().sum() != 0:\n", + " raise ValueError('id_municipio com valores nulos')\n", + " \n", + " \n", + " print('dropando colunas')\n", + " #delete cols\n", + " df.drop(\n", + " columns=[\n", + " 'Código do IBGE', \n", + " 'Município',\n", + " 'Prestadores',\n", + " 'Serviços',\n", + " 'Natureza Jurídica',\n", + " ], \n", + " inplace=True)\n", + " \n", + " print('tirando . de ints por precaução')\n", + " \n", + " strings_to_int = df.select_dtypes(include=['object']).columns\n", + " \n", + " for col in strings_to_int:\n", + " df[col] = df[col].str.replace('.', '')\n", + " print(f'col {col} formatada, . retirados')\n", + " \n", + " \n", + " print('ordenando colunas')\n", + " #redorder\n", + " df = df[dicionario.values()]\n", + "\n", + " lista_dfs.append(df)\n", + "\n", + "df = pd.concat(lista_dfs)\n", + "\n", + "df.to_csv(\n", + " r'\\br_mdr_snis\\output\\municipio.csv',\n", + " index=False,\n", + " sep=',',\n", + " encoding='utf-8',\n", + " na_rep='',\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#prestador\n", + "dir_path = r'\\br_mdr_snis\\input\\prestador'\n", + "files = os.listdir(dir_path)\n", + "\n", + "lista_dfs = []\n", + "\n", + "print('baixando dicionario da tabela de arquitetura para renomear colunas')\n", + "dicionario = change_column_name(\n", + " url_architecture = 'https://docs.google.com/spreadsheets/d/1spjI65YVI17mxtC1tmXaqMGk2pKAUPBJ5AqENKwB1Ys/edit?gid=0#gid=0'\n", + ")\n", + "\n", + "print('baixando tipos de dados da tabela de arquitetura para importar dados')\n", + "dicionario_dtypes = change_dtypes(\n", + " url_architecture='https://docs.google.com/spreadsheets/d/1spjI65YVI17mxtC1tmXaqMGk2pKAUPBJ5AqENKwB1Ys/edit?gid=0#gid=0'\n", + ")\n", + "\n", + "print('baixando diretorios de municípios da BD')\n", + "municipio = bd.read_table(\n", + " dataset_id= 'br_bd_diretorios_brasil',\n", + " table_id= 'municipio',\n", + " billing_project_id= \"pisagab-staging\"\n", + " )\n", + "\n", + "municipio_dict = dict(zip(municipio.id_municipio_6, municipio.id_municipio))\n", + "\n", + "\n", + "for file in files:\n", + " \n", + " print(f'lendo arquivo {file}')\n", + " df = pd.read_csv(\n", + " dir_path + '\\\\' + file,\n", + " sep=';',\n", + " encoding= 'latin-1',\n", + " decimal=',',\n", + " thousands='.',\n", + " dtype= dicionario_dtypes,\n", + " )\n", + "\n", + " print('renomeando colunas')\n", + " #rename\n", + " df.rename(\n", + " columns=dicionario, \n", + " inplace=True\n", + " )\n", + "\n", + " print('adicionando id_municipio 7 dígitos')\n", + " #add id_municipio 7 digits\n", + " df['id_municipio'] = df['id_municipio'].map(municipio_dict)\n", + " \n", + " #check if there is any null value\n", + " if df['id_municipio'].isna().sum() != 0:\n", + " raise ValueError('id_municipio com valores nulos')\n", + " \n", + " print('dropando colunas')\n", + " #delete cols\n", + " df.drop(\n", + " columns=[\n", + " 'Município',\n", + " ], \n", + " inplace=True)\n", + " \n", + " print('tirando . de ints por precaução')\n", + " strings_to_int = df.select_dtypes(include=['object']).columns\n", + " \n", + " for col in strings_to_int:\n", + " df[col] = df[col].str.replace('.', '')\n", + " print(f'col {col} formatada, . retirados')\n", + " \n", + " \n", + " print('removendo acentos')\n", + " latin_list = [\n", + " 'prestador',\n", + " 'natureza_juridica',\n", + " 'tipo_servico',\n", + " 'local_atendimento_agua',\n", + " 'local_atendimento_esgoto',\n", + " ]\n", + "\n", + " for col in latin_list:\n", + " df[col] = df[col].apply(remove_accents)\n", + "\n", + "\n", + " #insert id_natureza_juridica\n", + "\n", + " print('ordenando colunas')\n", + " #redorder\n", + " df = df[dicionario.values()]\n", + "\n", + " lista_dfs.append(df)\n", + "\n", + "df = pd.concat(lista_dfs)\n", + "\n", + "df.to_csv(\n", + " r'\\br_mdr_snis\\output\\prestador.csv',\n", + " index=False,\n", + " sep=',',\n", + " encoding='utf-8',\n", + " na_rep='',\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "vm_basedosdados", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/models/br_mdr_snis/code/utils.py b/models/br_mdr_snis/code/utils.py new file mode 100644 index 00000000..cd62185f --- /dev/null +++ b/models/br_mdr_snis/code/utils.py @@ -0,0 +1,101 @@ +import pandas as pd +from io import StringIO +import requests +import unicodedata +from typing import Dict + + +#---- mudar nome das colunas ----# + +def change_column_name( + url_architecture: str +)-> Dict[str, str]: + + """Essa função recebe como input uma string com link para uma tabela de arquitetura + e retorna um dicionário com os nomes das colunas originais e os nomes das colunas + padronizados + Returns: + dict: com chaves sendo os nomes originais e valores sendo os nomes padronizados + """ + # Converte a URL de edição para um link de exportação em formato csv + url = url_architecture.replace( + "edit#gid=", + "export?format=csv&gid=" + ) + + # Coloca a arquitetura em um dataframe + df_architecture = pd.read_csv( + StringIO(requests.get(url, timeout=10).content.decode("utf-8")) + ) + + # Cria um dicionário de nomes de colunas e tipos de dados a partir do dataframe df_architecture + column_name_dict = dict( + zip(df_architecture['original_name'],df_architecture['name']) + ) + + # Retorna o dicionário + + return column_name_dict + +#---- mudar tipos de dados ----# + +def change_dtypes( + url_architecture: str +)-> Dict[str, str]: + + """Essa função recebe como input uma string com link para uma tabela de arquitetura + e retorna um dicionário com os nomes das colunas originais e os nomes das colunas + padronizados + Returns: + dict: com chaves sendo os nomes originais e valores sendo os nomes padronizados + """ + # Converte a URL de edição para um link de exportação em formato csv + url = url_architecture.replace( + "edit#gid=", + "export?format=csv&gid=" + ) + + # Coloca a arquitetura em um dataframe + df_architecture = pd.read_csv( + StringIO(requests.get(url, timeout=10).content.decode("utf-8")) + ) + + # Cria um dicionário de nomes de colunas e tipos de dados a partir do dataframe df_architecture + column_name_dict = dict( + zip(df_architecture['original_name'],df_architecture['bigquery_type']) + ) + + #O pandas não consegue ler ints que tenham NAs + #Para contornar isso e não adicionar 0. ao final de cada número, + #optei por converter todos os inteiros para string + + #loop para padronizar os tipos de dados e converter in para string + for key, value in column_name_dict.items(): + if value == 'string': + column_name_dict[key] = str + elif value == 'int64': + column_name_dict[key] = str + elif value == 'float64': + column_name_dict[key] = float + + return column_name_dict + + +#---- remover acentos e caracteres especiais ----# +def remove_accents( + input_str: pd.Series[str] +)-> pd.Series[str]: + """Essa função é aplicada com método apply em uma coluna de um dataframe para remover + acentos e caracteres especiais de uma string. Exemplo de uso + + df[x].apply(remove_accents) + + Args: + input_str (pd.Series): Uma coluna com strings + + Returns: + pd.Series : coluna com strings sema acentos e caracteres especiais + """ + nfkd_form = unicodedata.normalize('NFKD', input_str) + + return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])