Child-poverty coverage gap (kommune)
Atlas view
Child-poverty coverage gap (kommune)
api_v1.coverage_gap_barnefattigdomChild poverty per kommune for the latest year of SSB 08764, as a share and as counts.
First 5 rows ·
api_v1.coverage_gap_barnefattigdomsnapshot 2026-05-12
| kommune_nr | kommune_name | fylke_name | year | value_pct | personer |
|---|---|---|---|---|---|
| 0301 | Oslo | Oslo | 2024 | 13 | 130343 |
| 1101 | Eigersund | Rogaland | 2024 | 8.6 | 3270 |
| 1103 | Stavanger | Rogaland | 2024 | 9.9 | 31018 |
| 1106 | Haugesund | Rogaland | 2024 | 11.8 | 7358 |
| 1108 | Sandnes | Rogaland | 2024 | 9 | 19802 |
Built from
This Atlas view joins data from the following upstream sources. Click through for provenance, methodology, and citation.
Showing direct dbt parents. See full lineage in /lineage/ →
Columns
| Column | Description |
|---|---|
| kommune_nr | 4-digit zero-padded kommune code. FK to dim_kommune; only active kommuner are included. Unique within this view. |
| kommune_name | Joined from fact_kommune_indicators (originally from dim_kommune). |
| fylke_name | Joined from fact_kommune_indicators (originally from dim_fylke). NULL for kommuner whose fylke_nr isn't in dim_fylke (rare — Svalbard 21xx). |
| year | The latest year for ssb-08764/EUskala60. Same value across all rows; carried on each row so the consumer reads it without a separate query. |
| value_pct | EU-skala 60 % share — the percent of children under 18 in low-income households (defined as < 60 % of national median equivalised income). NULL when upstream suppressed the cell. |
| personer | DENOMINATOR, NOT A COUNT OF POOR CHILDREN. Every person under 18 in the kommune that year — SSB 08764 ContentsCode 'Personer', whose own metadata reads "Persons under 18 years of age", unit persons. The number of children in low-income households is personer * value_pct / 100. It is not published as a column; derive it. This description said "number of children under 18 in low-income households" until 2026-09-19, which is false by roughly ninefold and about child poverty. A consumer building on the published API summed the column, got 1,097,107 against a national under-18 population of about 1.1 million, and caught it (urb-agents #1250, #1251). Derived correctly the same sum is 124,670, near the ~11 % national rate. Nothing in the data contradicted the wrong reading: the column is plausible, non-null and internally consistent, and only summing it and recognising the total gives it away. The view description two entries above was right the whole time, so the contract disagreed with itself. NULL when upstream suppressed the cell. |
| barn_i_lavinntekt | Children under 18 in low-income households — the number most consumers come here for. DERIVED as personer * value_pct / 100, rounded. SSB does not publish this. Table 08764 carries the total and the shares only, so every consumer has to compute it, and one got it wrong because the `personer` description claimed to be this column already (urb-agents #1250, #1251). Added on Terje's authorisation rather than renaming `personer`, so the consumer that found the defect keeps working. ESTIMATE, NOT A COUNT. value_pct is published to one decimal, so the true value lies within ±0.05 % of personer: about ±65 children for Oslo, ±4 for a kommune of 7 000. Do not present it as SSB's own figure. NULL when either input was suppressed upstream. |
Sample query
Live PostgREST query that returns the first 5 rows. URL adapts to the current host — local dev shows api-atlas.localhost; the deployed site shows the configured API base.
https://api-atlas.urbalurba.com/coverage_gap_barnefattigdom?limit=5
About this view
Child poverty per kommune for the latest year of SSB 08764, as a share and as counts.
One row per active kommune for the latest year of SSB 08764 child
poverty data, combining the EUskala60 share (% of children in
low-income households) with the Personer count (number of
children). Backs the barnefattigdom map page (atlas-frontend
/coverage-gap/barnefattigdom).
First member of the mart_coverage_gap_<topic> family. Future
coverage-gap maps follow the same shape: latest year per kommune,
one row per kommune, value(s) pivoted out of contents_code into
named columns. PostgREST projects this view as a single endpoint;
consumers don't filter, they read the whole map dataset in one
request.
Inactive kommuner are excluded so the map renders today's
kommune set. NULL values are kept in place — Map.tsx renders
them as "no data".