Skip to content

[data] mundo_cites_comercio.especies_ameacadas#1129

Draft
tricktx wants to merge 3 commits intomainfrom
mundo_cites_comercio_especies_ameacadas
Draft

[data] mundo_cites_comercio.especies_ameacadas#1129
tricktx wants to merge 3 commits intomainfrom
mundo_cites_comercio_especies_ameacadas

Conversation

@tricktx
Copy link
Copy Markdown
Contributor

@tricktx tricktx commented Jun 11, 2025

Template Pull Requests - Pipeline

Nomeação do Pull Request

A nomeação de cada Pull Request (PR) deve seguir o seguinte padrão:

  • O título de cada Pull Request (PR) deve começar com uma das seguintes palavras-chave, entre colchetes. Além disso, marque a palavra-chave que melhor descreve o seu PR atual:
    • [Feature]: Para novas funcionalidades.
    • [Data]: Para subida de novos dados em produção.
    • [Bugfix]: Para correções de bugs.
    • [Refactor]: Para mudanças no código que não alteram a funcionalidade.
    • [Docs]: Para atualizações na documentação.
    • [Test]: Para mudanças relacionadas a testes.
    • [Chore]: Para tarefas menores e de manutenção.
    • [Deactivate]: Para desativar o schedule da Pipeline

  • Exemplos de título:
    • [docs] br_me_caged
    • [Feature] br_cgu_servidores_publicos

Draft:

  • Ao abrir o PR, deverá coloca-lo como draft

Descrição do PR:

  • Explique de maneira clara e concisa o objetivo deste PR. O que foi alterado? Qual o problema que ele resolve?
    • Motivação/Contexto:

Detalhes Técnicos:

  • Detalhe as mudanças mais técnicas, como ajustes na pipeline, scripts ou modelo de dados utilizado.

    • Principais alterações na pipeline/scripts:
    • Mudanças nos dados e no schema:
    • Impacto no desempenho:
  • Se alguma parte do código precisar de alguma atenção a mais, comente na linha sinalizando para os revisores.

Teste e Validações:

  • Relate os testes e validações relacionado aos dados/script:

    • Testado localmente
    • Testado na Cloud

    Caso haja algo relacionado aos testes que vale a pena informar:

Riscos e Mitigações:

  • Identifique os riscos potenciais desta mudança e como mitigar esses Riscos

    • Riscos conhecidos:
    • Planos de rollback:

Dependencias:

  • Liste quaisquer dependências externas, como bibliotecas, outros PRs ou mudanças que precisam ser feitas antes deste merge.
    • Dependências:
    • Nenhuma dependencias adicional

Revisadores:

  • Quando o PR estiver pronto para ser revisado, retire o Draft através do Ready for reviews, marque os revisadores de repositório, envie o PR no nosso discord na aba Correções de PRs, arquiteturas e afins e marque a @equipe_dados:
    • Revisadores recomendados no github:
      • basedosdados/dados

@leovnoliveira
Copy link
Copy Markdown
Collaborator

leovnoliveira commented Jun 16, 2025

Fala, pessoal!

Conforme alinhado, realizei as seguintes modificações referentes à validação do schema.yml da tabela CITES:

  • Adicionei testes de chave única (unique_combination_of_columns).
  • Adicionei o teste not_null_proportion_multiple_columns, com threshold ajustado para 45%, considerando as colunas essenciais, conforme análise local feita via Pandas (por falta de acesso ao ambiente de staging).
    • Atualização adicional: Também realizei modificações no arquivo SQL (mundo_cites_comercio__especies_ameacadas.sql) para:
  • Corrigir o nome da coluna de apendice_cities para apendice_cites, padronizando conforme o schema.

Motivo de entregar via comentário:
Infelizmente, não tenho permissão de push direto no repositório principal, apenas no meu fork. Por isso, estou registrando as modificações aqui para serem incorporadas na branch principal por alguém com acesso de escrita. Se precisarem do notebook ou dos arquivos auxiliares, só avisar que posso compartilhar.

Qualquer ajuste ou dúvida, fico à disposição!

@leovnoliveira
Copy link
Copy Markdown
Collaborator

leovnoliveira commented Jun 16, 2025

#models/mundo_cites_comercio/schema.yml

---
version: 2
models:
  - name: mundo_cites_comercio__especies_ameacadas
    description: Base de Dados de comércio internacional de animais silvestres administrada
      pelo UNEP-WCMC (UN Environment Programme – World Conservation Monitoring Centre)Add commentMore actions
      para o secretariado da CITES (Convention on International Trade in Endangered
      Species of Wild Fauna and Flora). Reúne registros oficiais de comércio internacional
      de espécies ameaçadas desde 1975, enviados anualmente por países signatários.
      Com mais de 23 milhões de entradas, é a fonte mais abrangente e reconhecida
    tests:
      - dbt_utils.unique_combination_of_columns:
          combination_of_columns:
            - ano
            - apendice_cites
            - nome_cientifico
            - classe_taxonomica
            - ordem_taxonomica
            - familia_taxonomica
            - genero_taxonomico
            - pais_importador
            - pais_exportador
            - pais_origem
            - quantidade_importada_reportada
            - quantidade_exportada_reportada
            - termo
            - unidade_de_medida
            - finalidade
            - fonte
      - not_null_proportion_multiple_columns:
          at_least: 0.45

  # restante do schema continua igual

@leovnoliveira
Copy link
Copy Markdown
Collaborator

#models/mundo_cites_comercio/mundo_cites_comercio__especies_ameacadas.sql
mundo_cites_comercio__especies_ameacadas

{{
    config(
        alias="especies_ameacadas",
        schema="mundo_cites_comercio",
        materialized="table",
    )
}}
select
    safe_cast(ano as int64) ano,
    safe_cast(apendice_cites as string) apendice_cites,

# ... restante do código continua igual

@tricktx
Copy link
Copy Markdown
Contributor Author

tricktx commented Jun 17, 2025

Fazendo os testes unitários da tabela do @leovnoliveira, vou fazendo uma thread dos erros para irmos consertando aos poucos.

  1. Relationships - Pais Importador
12:50:28  Failure in test relationships_mundo_cites_comercio__especies_ameacadas_pais_importador__sigla_pais_iso2__ref_br_bd_diretorios_mundo__pais_ (models/mundo_cites_comercio/schema.yml)
12:50:28    Got 28111 results, configured to fail if != 0
12:50:28  
12:50:28    compiled Code at target/compiled/basedosdados/models/mundo_cites_comercio/schema.yml/relationships_mundo_cites_come_cef4644190b083b8ee58c234c371fa50.sql
with child as (
    select pais_importador as from_field
    from `basedosdados-dev`.`mundo_cites_comercio`.`especies_ameacadas`
    where pais_importador is not null
),

parent as (
    select sigla_pais_iso2 as to_field
    from `basedosdados-dev`.`br_bd_diretorios_mundo`.`pais`
)

select distinct 
    from_field

from child
left join parent
    on child.from_field = parent.to_field

where parent.to_field is null

image

  1. Pais de Origem
12:50:28  Failure in test relationships_mundo_cites_comercio__especies_ameacadas_pais_origem__sigla_pais_iso2__ref_br_bd_diretorios_mundo__pais_ (models/mundo_cites_comercio/schema.yml)
12:50:28    Got 95916 results, configured to fail if != 0
12:50:28  
12:50:28    compiled Code at target/compiled/basedosdados/models/mundo_cites_comercio/schema.yml/relationships_mundo_cites_come_084485cb5ce3a7606fdaab8f19114b4c.sql
with child as (
    select pais_origem as from_field
    from `basedosdados-dev`.`mundo_cites_comercio`.`especies_ameacadas`
    where pais_origem is not null
),

parent as (
    select sigla_pais_iso2 as to_field
    from `basedosdados-dev`.`br_bd_diretorios_mundo`.`pais`
)

select distinct
    from_field

from child
left join parent
    on child.from_field = parent.to_field

where parent.to_field is null

image

  1. Pais Exportador
12:50:28  Failure in test relationships_mundo_cites_comercio__especies_ameacadas_pais_exportador__sigla_pais_iso2__ref_br_bd_diretorios_mundo__pais_ (models/mundo_cites_comercio/schema.yml)
12:50:28    Got 32005 results, configured to fail if != 0
12:50:28  
12:50:28    compiled Code at target/compiled/basedosdados/models/mundo_cites_comercio/schema.yml/relationships_mundo_cites_come_3e2b0d960225c05b2e22167e04e5a196.sql
with child as (
    select pais_exportador as from_field
    from `basedosdados-dev`.`mundo_cites_comercio`.`especies_ameacadas`
    where pais_exportador is not null
),

parent as (
    select sigla_pais_iso2 as to_field
    from `basedosdados-dev`.`br_bd_diretorios_mundo`.`pais`
)

select distinct
    from_field

from child
left join parent
    on child.from_field = parent.to_field

where parent.to_field is null

image

  1. not_null_proportion_multiple_columns - Existem colunas com menos de 45% preenchidas, precisamos verificar isso.
12:50:28  Failure in test not_null_proportion_multiple_columns_mundo_cites_comercio__especies_ameacadas_0_45 (models/mundo_cites_comercio/schema.yml)
12:50:28    Got 2 results, configured to fail if != 0
12:50:28  
12:50:28    compiled Code at target/compiled/basedosdados/models/mundo_cites_comercio/schema.yml/not_null_proportion_multiple_c_22d9c8bae963a0f4ef45ba38cfeed6b2.sql

@leovnoliveira
Copy link
Copy Markdown
Collaborator

Boa, @tricktx! Obrigado pelas validações! Segue o que encontrei quanto aos códigos ISO que não deram match com a br_bd_diretorios_mundo.pais:sigla_pais_iso2.

XX - Unknown
HS - Introduction from the sea
XV - Various
DD - Former East Germany
AM - Armenia (AN possível typo)
YU - Former Yugoslavia
ZC - Former Czechoslovakia
PC - Former Pacific Trust Territory
CS - Former Czech Republic
YD -
NT -
SU -
KV -

ps: Em brano não há informação na guideline da CITES

Source: Cite Trades Guideline

@leovnoliveira
Copy link
Copy Markdown
Collaborator

Quanto ao teste de proporção de valores nulos estou estudando aqui... estranho meu teste com o Pandas ter dado valores diferentes do que o seu direito do dbt e BigQuery

@leovnoliveira
Copy link
Copy Markdown
Collaborator

leovnoliveira commented Jun 18, 2025

YD - Antigo Iémen Democrático, atual YD pós-1990
NT - Former North West Canada. Esse código não está mais em uso no padrão ISO-3166 atual.
SU - Antiga União Soviética (Union of Soviet Socialist Republics - USSR). Código descontinuado após 1992.
KV — Kosovo (não é oficialmente reconhecido no padrão ISO-3166, mas aparece em alguns conjuntos de dados e sistemas legados).

Soure: Wikipedia - ISO 3166-1, Wikipedia ISO 3166-3

@folhesgabriel folhesgabriel added the test-dev-model Run DBT tests in the modified models using basedosdados-dev Bigquery Project label Jul 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test-dev-model Run DBT tests in the modified models using basedosdados-dev Bigquery Project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants