Skip to content

Commit cb11f41

Browse files
authored
docs: add mart table_rules examples (#58)
1 parent 09249e0 commit cb11f41

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

docs/config-schema.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,98 @@ Note pratiche:
155155
| `ranges` | `dict[str, RangeRule]` | `{}` |
156156
| `min_rows` | `int \| null` | `null` |
157157

158+
Note pratiche:
159+
160+
- `clean.validate` controlla il parquet CLEAN complessivo del dataset/anno
161+
- `mart.validate.table_rules` controlla invece ogni tabella MART per nome
162+
- le chiavi di `table_rules` devono corrispondere ai `name` dichiarati in `mart.tables`
163+
- se una regola punta a una tabella non dichiarata, il validator la segnala come orphan rule
164+
165+
Esempio minimo corretto:
166+
167+
```yaml
168+
mart:
169+
tables:
170+
- name: mart_summary
171+
sql: sql/mart/mart_summary.sql
172+
required_tables:
173+
- mart_summary
174+
validate:
175+
table_rules:
176+
mart_summary:
177+
min_rows: 1
178+
```
179+
180+
Esempio tipico con piu' vincoli su una tabella:
181+
182+
```yaml
183+
mart:
184+
tables:
185+
- name: mart_summary
186+
sql: sql/mart/mart_summary.sql
187+
required_tables:
188+
- mart_summary
189+
validate:
190+
table_rules:
191+
mart_summary:
192+
required_columns:
193+
- anno
194+
- totale
195+
not_null:
196+
- anno
197+
- totale
198+
primary_key:
199+
- anno
200+
ranges:
201+
totale:
202+
min: 0
203+
min_rows: 1
204+
```
205+
206+
Esempio completo con due tabelle:
207+
208+
```yaml
209+
clean:
210+
validate:
211+
primary_key:
212+
- anno
213+
- comune
214+
not_null:
215+
- anno
216+
217+
mart:
218+
tables:
219+
- name: mart_summary
220+
sql: sql/mart/mart_summary.sql
221+
- name: mart_detail
222+
sql: sql/mart/mart_detail.sql
223+
required_tables:
224+
- mart_summary
225+
- mart_detail
226+
validate:
227+
table_rules:
228+
mart_summary:
229+
required_columns:
230+
- anno
231+
- totale
232+
primary_key:
233+
- anno
234+
min_rows: 1
235+
mart_detail:
236+
required_columns:
237+
- anno
238+
- comune
239+
primary_key:
240+
- anno
241+
- comune
242+
```
243+
244+
Errori comuni:
245+
246+
- mettere `required_columns`, `not_null` o `primary_key` direttamente sotto `mart.validate` invece che dentro `table_rules.<nome_tabella>`
247+
- usare come chiave di `table_rules` un nome diverso da quello dichiarato in `mart.tables`
248+
- aspettarsi che `clean.validate` valga automaticamente anche per le tabelle MART
249+
158250
## cross_year
159251

160252
`cross_year` definisce output opzionali multi-anno. Non entra nel loop annuale di `raw/clean/mart`.

0 commit comments

Comments
 (0)