Repository navigation
Data Model
Your Name edited this page Jul 11, 2026
·
1 revision
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 : ""
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 |
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) |
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) |
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) |
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 |
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
| 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 |