diff --git a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cep.sql b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cep.sql index 0a6a0feb..b2faca09 100644 --- a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cep.sql +++ b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__cep.sql @@ -1,26 +1,66 @@ -{{ - config( - alias="cep", - schema="br_bd_diretorios_brasil", - materialized="table", - partition_by={ - "field": "sigla_uf", - "data_type": "string", - }, +{{ config(alias="cep", schema="br_bd_diretorios_brasil", materialized="table") }} + +with + t1 as ( + select + safe_cast(lpad(cep, 8, '0') as string) cep, + string_agg(distinct(t.id_municipio)) id_municipio, + string_agg(distinct(sigla_uf)) sigla_uf, + string_agg(initcap(descricao_estabelecimento), ", ") estabelecimentos, + st_centroid_agg(ponto) as centroide + from `basedosdados.br_ibge_censo_2022.cadastro_enderecos` as t + group by 1 + ), + + logradouro_n_linhas as ( + select + cep, + replace( + concat( + ifnull(tipo_segmento_logradouro, ""), + " ", + ifnull(titulo_segmento_logradouro, ''), + " ", + ifnull(nome_logradouro, "") + ), + " ", + " " + ) logradouro, + count(1) n_linhas, + from `basedosdados.br_ibge_censo_2022.cadastro_enderecos` as t + group by 1, 2 + ), + + logradouro_max as ( + select cep, max_by(initcap(logradouro), n_linhas) as logradouro + from logradouro_n_linhas + group by 1 + ), + + localidade_n_linhas as ( + select cep, localidade, count(1) n_linhas, + from `basedosdados.br_ibge_censo_2022.cadastro_enderecos` as t + group by 1, 2 + ), + + localidade_max as ( + select cep, max_by(initcap(localidade), n_linhas) as localidade + from localidade_n_linhas + group by 1 ) -}} select - safe_cast(lpad(cep, 8, '0') as string) cep, - safe_cast(logradouro as string) logradouro, - safe_cast(complemento as string) complemento, - safe_cast(bairro as string) bairro, - safe_cast(cidade as string) cidade, - safe_cast(id_municipio as string) id_municipio, - safe_cast(sigla_uf as string) sigla_uf, - safe_cast(latitude as float64) latitude, - safe_cast(longitude as float64) longitude, - st_geogpoint( - safe_cast(longitude as float64), safe_cast(latitude as float64) - ) centroide -from `basedosdados-staging.br_bd_diretorios_brasil_staging.cep` as t + t1.cep, + logradouro, + localidade, + t1.id_municipio, + municipio.nome as nome_municipio, + t1.sigla_uf, + estabelecimentos, + t1.centroide +from t1 +left join + `basedosdados-staging.br_bd_diretorios_brasil.municipio` as municipio + on t1.id_municipio = municipio.id_municipio +left join logradouro_max on t1.cep = logradouro_max.cep +left join localidade_max on t1.cep = localidade_max.cep diff --git a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__distrito_2022.sql b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__distrito_2022.sql new file mode 100644 index 00000000..bd50026b --- /dev/null +++ b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__distrito_2022.sql @@ -0,0 +1,16 @@ +{{ + config( + alias="distrito_2022", + schema="br_bd_diretorios_brasil", + materialized="table", + ) +}} +select distinct + safe_cast(cd_dist as string) as id_distrito, + safe_cast(nm_dist as string) as nome_distrito, + safe_cast(cd_mun as string) as id_municipio, + safe_cast(sigla as string) as sigla_uf, +from + `basedosdados-staging.br_ibge_censo_2022_staging.domicilio_morador_setor_censitario` + as a +left join `basedosdados.br_bd_diretorios_brasil.uf` as b on a.id_uf = b.id_uf diff --git a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__empresa.sql b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__empresa.sql index 495e943a..c1d1d8d9 100644 --- a/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__empresa.sql +++ b/models/br_bd_diretorios_brasil/br_bd_diretorios_brasil__empresa.sql @@ -5,16 +5,17 @@ materialized="table", cluster_by=["id_municipio", "sigla_uf"], labels={"tema": "economia"}, + post_hook=[ + 'CREATE OR REPLACE ROW ACCESS POLICY bdpro_filter ON {{this}} GRANT TO ("group:bd-pro@basedosdados.org", "group:sudo@basedosdados.org") FILTER USING (TRUE))', + ], ) }} with - max_dia as ( - - select cnpj, max(data) as max_data - from `basedosdados.br_me_cnpj.estabelecimentos` - group by cnpj + max_bdpro_date as ( + select max(data) as max_date from `basedosdados.br_me_cnpj.estabelecimentos` ), + estabelecimento as ( select distinct a.cnpj, @@ -153,10 +154,8 @@ with concat(ddd_1, " ", telefone_1) as telefone_1, concat(ddd_2, " ", telefone_2) as telefone_2, concat(ddd_fax, " ", fax) as fax, - email - + email, from `basedosdados.br_me_cnpj.estabelecimentos` a - inner join max_dia e on a.cnpj = e.cnpj and a.data = e.max_data inner join `basedosdados.br_me_cnpj.dicionario` b on a.identificador_matriz_filial = b.chave @@ -170,7 +169,8 @@ with `basedosdados-dev.br_bd_diretorios_mundo_staging.pais_code` f on a.id_pais = f.co_pais where - b.nome_coluna = 'identificador_matriz_filial' + a.data = (select max_date from max_bdpro_date) + and b.nome_coluna = 'identificador_matriz_filial' and t.nome_coluna = 'situacao_cadastral' ), empresa as ( @@ -181,17 +181,10 @@ with ente_federativo, capital_social, b.valor as porte, + a.data from `basedosdados.br_me_cnpj.empresas` a - inner join - ( - select cnpj_basico, max(data) as max_data - from `basedosdados.br_me_cnpj.empresas` - group by 1 - ) c - on a.cnpj_basico = c.cnpj_basico - and a.data = c.max_data inner join `basedosdados.br_me_cnpj.dicionario` b on a.porte = b.chave - where b.nome_coluna = 'porte' + where b.nome_coluna = 'porte' and a.data = (select max_date from max_bdpro_date) ), simples as ( select distinct cnpj_basico, opcao_simples, opcao_mei @@ -230,7 +223,7 @@ select telefone_1, telefone_2, fax, - email + email, from estabelecimento a left join empresa b on a.cnpj_basico = b.cnpj_basico left join simples c on a.cnpj_basico = c.cnpj_basico diff --git a/models/br_bd_diretorios_brasil/schema.yml b/models/br_bd_diretorios_brasil/schema.yml index f0521410..db2421b3 100644 --- a/models/br_bd_diretorios_brasil/schema.yml +++ b/models/br_bd_diretorios_brasil/schema.yml @@ -1,144 +1,6 @@ --- version: 2 models: - # - name: empresa_acre - # description: Insert `empresas_acre` table description here - # columns: - # - name: cnpj - # description: CNPJ - # - name: cnpj_basico - # description: CNPJ Básico (8 primeiros dígitos) - # - name: cnpj_ordem - # description: CNPJ Ordem - # - name: cnpj_dv - # description: CNPJ Dígito Verificador - # - name: razao_social - # description: Nome empresarial da pessoa jurídica - # - name: nome_fantasia - # description: Denomização Comercial - # - name: natureza_juridica - # description: Natureza Jurídica - # - name: ente_federativo - # description: 'Ente Federativo Responsável ' - # - name: cnae_fiscal_principal - # description: CNAE Fiscal Principal - # - name: cnae_fiscal_secundaria - # description: CNAEs Fiscais Secundárias - # - name: capital_social - # description: Capital Social - # - name: porte - # description: Tipo do porte da empresa - # - name: matriz_filial - # description: 'Identificador entre Matriz e Filial ' - # - name: situacao_cadastral - # description: Situação Cadastral - # - name: situacao_especial - # description: Situação Especial - # - name: opcao_simples - # description: Opção pelo Simples Nacional - # - name: opcao_mei - # description: Opção pelo MEI - # - name: cep - # description: CEP - # - name: tipo_logradouro - # description: Tipo de Logradouro - # - name: logradouro - # description: Logradouro - # - name: numero - # description: Número - # - name: complemento - # description: Complemento - # - name: bairro - # description: Bairro - # - name: id_municipio - # description: ID Município - IBGE 7 Dígitos - # - name: id_municipio_rf - # description: ID Município - Receita Federal - # - name: sigla_uf - # description: Sigla da Unidade da Federação - # - name: id_code_iso3 - # description: Sigla do País - ISO3 - # - name: id_pais_me - # description: ID do país - Ministério da Economia - # - name: nome_pais_me - # description: Nome do país - Ministério da Economia - # - name: telefone_1 - # description: Telefone (com DDD) 1 - # - name: telefone_2 - # description: Telefone (com DDD) 2 - # - name: fax - # description: Fax (con DDD) - # - name: email - # description: Email - # - name: empresa_teste - # description: Insert `empresas_acre` table description here - # columns: - # - name: cnpj - # description: CNPJ - # - name: cnpj_basico - # description: CNPJ Básico (8 primeiros dígitos) - # - name: cnpj_ordem - # description: CNPJ Ordem - # - name: cnpj_dv - # description: CNPJ Dígito Verificador - # - name: razao_social - # description: Nome empresarial da pessoa jurídica - # - name: nome_fantasia - # description: Denomização Comercial - # - name: natureza_juridica - # description: Natureza Jurídica - # - name: ente_federativo - # description: 'Ente Federativo Responsável ' - # - name: cnae_fiscal_principal - # description: CNAE Fiscal Principal - # - name: cnae_fiscal_secundaria - # description: CNAEs Fiscais Secundárias - # - name: capital_social - # description: Capital Social - # - name: porte - # description: Tipo do porte da empresa - # - name: matriz_filial - # description: 'Identificador entre Matriz e Filial ' - # - name: situacao_cadastral - # description: Situação Cadastral - # - name: situacao_especial - # description: Situação Especial - # - name: opcao_simples - # description: Opção pelo Simples Nacional - # - name: opcao_mei - # description: Opção pelo MEI - # - name: cep - # description: CEP - # - name: tipo_logradouro - # description: Tipo de Logradouro - # - name: logradouro - # description: Logradouro - # - name: numero - # description: Número - # - name: complemento - # description: Complemento - # - name: bairro - # description: Bairro - # - name: id_municipio - # description: ID Município - IBGE 7 Dígitos - # - name: id_municipio_rf - # description: ID Município - Receita Federal - # - name: sigla_uf - # description: Sigla da Unidade da Federação - # - name: id_code_iso3 - # description: Sigla do País - ISO3 - # - name: id_pais_me - # description: ID do país - Ministério da Economia - # - name: nome_pais_me - # description: Nome do país - Ministério da Economia - # - name: telefone_1 - # description: Telefone (com DDD) 1 - # - name: telefone_2 - # description: Telefone (com DDD) 2 - # - name: fax - # description: Fax (con DDD) - # - name: email - # description: Email - name: br_bd_diretorios_brasil__empresa description: A tabela apresenta informações do Cadastro Nacional da Pessoa Jurídica (CNPJ), que é um banco de dados administrado pela Secretaria Especial da Receita @@ -292,20 +154,14 @@ models: description: Número do CEP - name: logradouro description: Logradouro - - name: complemento - description: Complemento do endereço - - name: bairro - description: Bairro - - name: cidade - description: Nome da cidade, distrito ou município + - name: localidade + description: Localidade, na maior parte dos casos representa o bairro - name: id_municipio description: ID Município - IBGE 7 Dígitos + - name: nome_municipio + description: Nome do Município - name: sigla_uf description: Sigla da Unidade da Federação - - name: latitude - description: Latitude do CEP - - name: longitude - description: Longitude do CEP - name: centroide description: Centróide do CEP - name: br_bd_diretorios_brasil__cnae_1 @@ -332,43 +188,6 @@ models: description: Seção - name: descricao_secao description: Descrição da Seção - - name: br_bd_diretorios_brasil__cnae_2 - description: Este diretório congrega versões 2.0, 2.1, 2.2 e 2.3 da Classificação - Nacional de Atividades Econômicas (CNAE). - tests: - - dbt_utils.unique_combination_of_columns: - combination_of_columns: [subclasse] - - not_null_proportion_multiple_columns: - at_least: 0.95 - columns: - - name: subclasse - description: Subclasse da Classificação de Atividades Econômicas (CNAE) - - name: descricao_subclasse - description: Descrição da subclasse da CNAE - - name: classe - description: Classe da CNAE - - name: descricao_classe - description: Descrição da classe - - name: grupo - description: Grupo da CNAE - - name: descricao_grupo - description: Descrição do grupo - - name: divisao - description: Divisão da CNAE - - name: descricao_divisao - description: Descrição da divisão - - name: secao - description: Seção da cnae - - name: descricao_secao - description: Descrição da Seção - - name: indicador_cnae_2_0 - description: Indica se o código está presente na CNAE 2.0 - - name: indicador_cnae_2_1 - description: Indica se o código está presente na CNAE 2.1 - - name: indicador_cnae_2_2 - description: Indica se o código está presente na CNAE 2.2 - - name: indicador_cnae_2_3 - description: Indica se o código está presente na CNAE 2.3 - name: br_bd_diretorios_brasil__cnae_2_3_subclasses description: Diretório da Classificação Nacional de Atividades Econômicas - Subclasses 2.3. @@ -667,8 +486,6 @@ models: tags: [diretorio] combination_of_columns: [id_distrito] columns: - - name: ano - description: Ano - name: id_distrito description: ID Distrito - IBGE 9 Dígitos - name: nome @@ -684,8 +501,6 @@ models: tags: [diretorio] combination_of_columns: [id_distrito] columns: - - name: ano - description: Ano - name: id_distrito description: ID Distrito - IBGE 9 Dígitos - name: nome @@ -701,8 +516,21 @@ models: tags: [diretorio] combination_of_columns: [id_distrito] columns: - - name: ano - description: Ano + - name: id_distrito + description: ID Distrito - IBGE 9 Dígitos + - name: nome + description: Nome do Distrito + - name: id_municipio + description: ID Município - IBGE 7 Dígitos + - name: sigla_uf + description: Sigla da Unidade da Federação + - name: br_bd_diretorios_brasil__distrito_2022 + description: Diretório de distritos de 2022. + tests: + - dbt_utils.unique_combination_of_columns: + tags: [diretorio] + combination_of_columns: [id_distrito] + columns: - name: id_distrito description: ID Distrito - IBGE 9 Dígitos - name: nome @@ -804,3 +632,39 @@ models: description: ID da subatividade econômica - name: descricao description: Descrição da subatividade econômica + - name: br_bd_diretorios_brasil__cnae_2 + description: Insert table description here + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [subclasse] + - not_null_proportion_multiple_columns: + at_least: 0.95 + columns: + - name: subclasse + description: Subclasse da CNAE + - name: descricao_subclasse + description: Descrição da subclasse da CNAE + - name: secao + description: Seção da Classificação de Atividades Econômicas (CNAE) + - name: descricao_secao + description: Descrição da Seção + - name: divisao + description: Divisão da CNAE + - name: descricao_divisao + description: Descrição da divisão + - name: grupo + description: Grupo da CNAE + - name: descricao_grupo + description: Descrição do grupo + - name: classe + description: Classe da CNAE + - name: descricao_classe + description: Descrição da classe + - name: indicador_cnae_2_0 + description: Indica se o código está presente na CNAE 2.0 + - name: indicador_cnae_2_1 + description: Indica se o código está presente na CNAE 2.1 + - name: indicador_cnae_2_2 + description: Indica se o código está presente na CNAE 2.2 + - name: indicador_cnae_2_3 + description: Indica se o código está presente na CNAE 2.3