Skip to content

Data Model

Your Name edited this page Jul 11, 2026 · 1 revision

📊 Modelo de Dados — Star Schema

Diagrama Entidade-Relacionamento (ERD)

erDiagram
    dim_indicator {
        int indicator_id PK
        string indicator_code UK
        string indicator_name
        string category
    }

    dim_location {
        int location_id PK
        string country_code UK
        string country_name
        string region_code
    }

    dim_period {
        int period_id PK
        int year UK
        string decade_group
    }

    dim_sex {
        int sex_id PK
        string sex_code UK
        string sex_name
    }

    fct_observations {
        int observation_id PK
        string observation_key UK
        int indicator_id FK
        int location_id FK
        int period_id FK
        int sex_id FK
        float value
    }

    dim_indicator ||--o{ fct_observations : ""
    dim_location ||--o{ fct_observations : ""
    dim_period ||--o{ fct_observations : ""
    dim_sex ||--o{ fct_observations : ""
Loading

Dicionário de Dados

fct_observations — Tabela Fato

Grão: uma observação de saúde por ID único de observação. Materialização: incremental (merge por observation_id). Cardinalidade: ~500K linhas.

Coluna Tipo Descrição
observation_id int PK natural da fonte SQLite
observation_key varchar Surrogate key (hash SHA-256)
indicator_id int FK → dim_indicator.indicator_id
location_id int FK → dim_location.location_id
period_id int FK → dim_period.period_id
sex_id int FK → dim_sex.sex_id (0 = UNK)
value float Valor numérico da observação

dim_indicator — Dimensão de Indicadores

Cardinalidade: ~3.000 indicadores.

Coluna Tipo Descrição
indicator_id int PK
indicator_code string Código único (ex: NCDMORT3070)
indicator_name string Nome descritivo
category string Categoria (ex: NCD, AIR)

dim_location — Dimensão Geográfica

Cardinalidade: ~220 países/regiões.

Coluna Tipo Descrição
location_id int PK
country_code string Código ISO (ex: BRA, USA)
country_name string Nome do país
region_code string Região da OMS (ex: AMR, EUR)

dim_period — Dimensão Temporal

Cardinalidade: ~70 períodos (anos).

Coluna Tipo Descrição
period_id int PK
year int Ano da observação
decade_group string Agrupamento por década (before_2000, 2000s, 2010s, 2020s)

dim_sex — Dimensão de Sexo

Cardinalidade: 4 valores.

Coluna Tipo Descrição
sex_id int PK
sex_code string MLE (Male), FMLE (Female), BTSX (Both sexes), UNK (Unknown)
sex_name string Nome descritivo

Modelagem no dbt

graph LR
    subgraph Sources [SQLite Raw]
        SRC_IND[dim_indicators]
        SRC_LOC[dim_locations]
        SRC_PER[dim_periods]
        SRC_SEX[dim_sex]
        SRC_FACT[fact_observations]
    end

    subgraph Staging [dbt Staging Views]
        STG_IND[stg_indicators]
        STG_LOC[stg_locations]
        STG_PER[stg_periods]
        STG_SEX[stg_sex]
        STG_OBS[stg_observations]
    end

    subgraph Marts [dbt Marts]
        DM_IND[dim_indicator]
        DM_LOC[dim_location]
        DM_PER[dim_period]
        DM_SEX[dim_sex]
        FT_OBS[fct_observations]
    end

    SRC_IND --> STG_IND --> DM_IND
    SRC_LOC --> STG_LOC --> DM_LOC
    SRC_PER --> STG_PER --> DM_PER
    SRC_SEX --> STG_SEX --> DM_SEX
    SRC_FACT --> STG_OBS --> FT_OBS

    DM_IND --> FT_OBS
    DM_LOC --> FT_OBS
    DM_PER --> FT_OBS
    DM_SEX --> FT_OBS
Loading

Testes de Dados (32)

Tipo Quantidade O que verifica
unique 8 Chaves primárias e códigos sem duplicatas
not_null 14 Campos obrigatórios preenchidos
relationships 4 Integridade referencial (FKs)
accepted_values 2 sex_code e decade_group com valores válidos

Clone this wiki locally