View on GitHub

dataops

Repositório de Casos de Uso ( World Data Bank\Gapminder)

Download this project as a .zip file Download this project as a tar.gz file

Gapminder — Camada Bronze

Notebook: gapminder_BRONZE

Padrão genérico: Metodologia — Camada Bronze


Responsabilidade

Ingere o catálogo de indicadores e os dados históricos da Gapminder REST API e escreve tabelas Delta no Lakehouse Bronze. Não há ficheiros intermédios — os dados vêm directamente da API.


Fluxo de Execução

1. Ler catálogo de conceitos
   → GET /concepts
   → filtrar concept_type == "measure"
   → dicionário {indicator_id: indicator_name} (~482 indicadores)
        ↓
2. Ler dimensões geográficas
   → GET /entities/geo              → bronze_dim_geo
   → GET /entities/geo/world_4region → bronze_dim_geo_world_4region
   → GET /entities/geo/un_sdg_region → bronze_dim_geo_un_sdg_region
        ↓
3. Processar indicadores em batches de 100
   Para cada batch:
     Para cada indicator_id:
       → GET /datapoints/{indicator_id}/geo/time
       → parsear CSV: colunas geo, time, value
       → adicionar coluna indicator_id e _ingested_at
       → acumular no batch
   → escrever batch em gapminder_bronze_fact (Delta, DELETE+APPEND por batch)
        ↓
4. Escrever dimensão de conceitos
   → bronze_dim_concepts (~528 linhas)
        ↓
5. Retornar { dim_records: 528, fact_records: 3704392, new_data: 1 }

Tabelas Escritas no Bronze

Tabela Conteúdo Registos
gapminder_bronze_fact Dados históricos: geo, time, value, indicator_id, _ingested_at ~3.7M
bronze_dim_concepts Catálogo de todos os conceitos ~528
bronze_dim_geo Países e territórios ~273
bronze_dim_geo_world_4region 4 macro-regiões mundiais 4
bronze_dim_geo_un_sdg_region Regiões ONU SDG

Padrão de Escrita

Os facts são escritos em batches de 100 indicadores:

Este padrão permite reprocessamento parcial por indicator sem reescrever toda a tabela.


Logging

O ELogger regista o resultado de cada batch com:

O tempo total de Bronze é ~949s (~16 min) para os ~482 indicadores.


Resultado Devolvido ao Runner

{ "dim_records": 528, "fact_records": 3704392, "new_data": 1 }

Se new_data == 0, o runner pode condicionar os steps seguintes (Silver, Gold) via run_withouth_new_data.


← Fontes · Silver → · Home