Pipeline run · 8 phases

User-configurable phases marked ✎ · the rest are built-in invariants
PHASE 1 ✎
Fetch
SCB BE0101N1
PHASE 2 ✎
Field Mapping
5 mappings
PHASE 3 ✎
Transform
3 steps
PHASE 4
Authority Filter
built-in · config ↗
PHASE 5
Boundary
built-in · config ↗
PHASE 6 ✎
Validation
4 rules
PHASE 7
Enrichment
built-in · config ↗
PHASE 8
Promotion
if clean

Phase 1 · Fetch — Data Source

exactly one per Pipeline
SourceYear-range predicateQuery filter
SCB BE0101N1 pxweb_api 1990 – present {"Region":"agg:Kommun","Kon":"1+2","Alder":"tot"} Edit

To add another source table for the same Indicator, create a separate Pipeline writing to the same Indicator (e.g. for a different year range).

Phase 2 · Field Mapping

+ Add mapping
Source fieldSchema dimension
Regionmuncod_nordregio
Tidyear
Konsex
Alderage_group
valuepopulation

Phase 3 · Transform Chain

+ Add step

Order matters. Drag to reorder. Each step is a typed Rust plugin with a JSON config schema.

1. NormaliseCodes applies Source Code Overrides
prefix=SE · pad_length=4 · use_overrides_from=SCB BE0101N1
2. HarmoniseRefDate
source_anchor=Dec-31 · target_anchor=Jan-1 · shift=+1y
3. ComputeOutput
column=population · expression=value
Hint: built-in Authority Filter and Boundary Reconciliation are not Transform Steps — they always run as Phase 4 & Phase 5.

Phase 6 · Validation Rules

+ Add rule
#RuleSeverityConfig
1NotNullerrorcolumn=populationEdit
2NonNegativeerrorcolumn=populationEdit
3YearOnYearSwingwarn → quarantinemax_pct_delta=15Edit
4CompletenessPerCountrywarnexpected=290 munis · tolerance=0Edit

Dependencies

none — derivation pipelines list dependencies here

Approval policy

On promote
requires_approval_on_quarantine (R1 default) — clean runs auto-promote; runs with quarantines wait in Job Approval.
Boundary view
both views written; default reconstructed