Skip to content

pipeline: mart multi-year (tutte con years) — run per-anno fallisce e il multi-year non parte #445

Description

@Gabrymi93

Problema

Un candidate con tutte le tabelle mart dichiarate mart.tables[].years (multi-year) non può completare il run: il multi-year mart non viene mai eseguito.

Riproduzione

candidates/iva-regionale (dataset-incubator, branch feat/iva-regionale-mart-standard): 3 tabelle mart, tutte con years: [2015..2024].

toolkit run -c candidates/iva-regionale/dataset.yml

Risultato: ogni anno run=ok validate=failed, e nessun output multi-year a data/mart/{dataset}/{name}.parquet.

Causa (analisi del flusso)

  1. cmd_run.py:324: il layer mart per-anno viene eseguito solo se cfg.has_single_year_mart → con solo mart multi-anno è skippato (corretto).
  2. Ma la validazione mart per-anno non viene registrata: validations["mart"] resta {} in run_context.
  3. cmd_run.py:993-995: all_passed = all(ctx.validations.get(layer, {}).get("passed", False) ...)validations["mart"]["passed"] = False (default) → run marcato failed.
  4. cmd_run.py:1016: il multi-year parte solo se results["status"] == "passed" → mai raggiunto.

Loop: il multi-year (che produrrebbe le mart mancanti) è condizionato a un run "passed" che richiede proprio quelle mart.

Fix atteso

Quando has_single_year_mart è False (tutte le mart multi-year):

  • la validazione mart per-anno deve risultare passed (skippata, non fallita), oppure
  • run() deve considerare "passed" senza la validazione mart per-anno quando non ci sono mart per-anno da validare.

Suggerimento: in run_year, quando il layer mart è skippato perché not has_single_year_mart, registrare set_validation("mart", {"passed": True, "skipped": True, ...}) — così all_passed resta coerente e il multi-year parte.

Impatto

Blocca l'uso del pattern mart.tables[].years (documentato in config-schema.md §"output multi-anno", sostituto di cross_year). Nessun candidate lo usava prima — iva-regionale è il primo.

Riferimenti

  • toolkit/cli/cmd_run.py: righe 324, 993-995, 1016
  • toolkit/core/run_context.py: set_validation
  • toolkit/tests/test_mart_multi_year.py: test esistente usa tabelle miste (single + multi) — non copre il caso "solo multi-year"
  • Candidate: candidates/iva-regionale/ (branch feat/iva-regionale-mart-standard)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions