Skip to content

Aggiungi il supporto dichiarativo ai support dataset#78

Merged
Gabrymi93 merged 4 commits intomainfrom
feat/support-dataset-dichiarativo
Apr 2, 2026
Merged

Aggiungi il supporto dichiarativo ai support dataset#78
Gabrymi93 merged 4 commits intomainfrom
feat/support-dataset-dichiarativo

Conversation

@Gabrymi93
Copy link
Copy Markdown
Member

Obiettivo

Introduce il blocco top-level support: in dataset.yml per dichiarare support dataset usati dai MART senza hardcodare path assoluti nei SQL.

Cosa cambia

  • aggiunge support: al contratto di configurazione
  • richiede per ogni support entry:
    • name
    • config
    • years
  • normalizza support[].config rispetto alla directory del dataset.yml
  • espone i support risolti in toolkit inspect paths --json
  • rende disponibili nel template runtime:
    • {support.<name>.mart}
    • {support.<name>.outputs}
  • verifica a runtime che gli output MART dei support dataset esistano prima di eseguire o validare il SQL
  • estende anche il dry-run SQL, così il comportamento resta coerente con run mart

Note di implementazione

  • years resta sempre esplicito: nessun sentinel implicito
  • support.<name>.mart è uno shortcut al primo output MART risolto
  • non vengono create view automatiche per i support dataset: i join restano espliciti nel SQL

Verifica

Eseguiti con successo:

  • python -m pytest tests/test_template.py tests/test_config.py tests/test_cli_inspect_paths.py tests/test_run_dry_run.py tests/test_artifacts_policy.py

Closes #64

@Gabrymi93
Copy link
Copy Markdown
Member Author

Novità nell'ultimo aggiornamento

High

  • Validazione Univocità: Aggiunto un model_validator in ToolkitConfigModel che garantisce che ogni entry nel blocco support: abbia un name univoco. Questo evita collisioni imprevedibili nel contesto dei template Jinja/SQL (es. due support dataset entrambi chiamati popolazione).
  • Fail-fast su MART vuoti: La funzione resolve_support_payloads ora solleva un ValueError esplicito se un dataset dichiarato come supporto non ha alcuna tabella MART configurata. Prima il comportamento sarebbe stato ambiguo (ctx vuoto).
  • Controllo di Integrità Totale: Il controllo sulla presenza degli output è passato da "almeno uno presente" a "tutti i MART attesi presenti" (all_outputs_exist). Questo garantisce che se un support dataset dichiara 3 tabelle, la pipeline si fermi se anche solo una manca, prevenendo join SQL su tabelle inesistenti.

Analisi situata (Lenses v1.2)

Repo Lens: toolkit

  • Robustezza: Il passaggio a un controllo di "integrità totale" sugli output dei support dataset è un miglioramento critico. In pipeline di dati civici, una join parziale può portare a conclusioni errate difficili da individuare; fallire subito è la scelta corretta.
  • Testing: Ottima l'estensione dei test di integrazione (test_run_dry_run_fails_when_support_outputs_are_only_partially_present) che simula esattamente scenari di fallimento parziale tra dataset.

Phase Lens: pilot

  • Esperienza Utente: I messaggi di errore sono stati resi ancora più parlanti, indicando esattamente quale file dataset.yml e quale anno mancano all'appello. Questo riduce drasticamente il tempo di debugging per chi sta assemblando analisi multi-repo.

Verdict

Tip

Verdict: merge

Gli aggiornamenti hanno trasformato una buona feature in una feature robusta e sicura per la produzione. La gestione dei nomi duplicati e il controllo rigoroso sulla totalità degli output MART rendono il sistema a prova di errore.


Review effettuata seguendo la skill canonica review-pr (lab-ops v1.2).

@Gabrymi93 Gabrymi93 merged commit 376e8d5 into main Apr 2, 2026
5 checks passed
@Gabrymi93 Gabrymi93 deleted the feat/support-dataset-dichiarativo branch April 2, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: supporto dichiarativo per support dataset in dataset.yml

1 participant