Dividere un CSV con valori univoci

Dividere un file CSV utilizzando i valori univoci di un suo campo.

A cura di Totò Fiandaca  | issue #170 | guida/e Andrea Borruso


Caso d’uso

Il SOle 24 Ore mette a disposizone un CSV con i dati sulla Qualità della Vita 2020, è un file CSV unico dove il campo INDICATORE contiene il Nome sintetico del fenomeno; sono 90 i fenomeni osservati nelle 107 Province italiane, quindi il file CSV ha 9630 righe (107x90). Vediamo come ottenere 90 file CSV, uno per ogni fenomeno osservato.

Soluzione con Miller

mlr --csv put '$INDICATORE=gsub($INDICATORE,"/","-")' input.csv | mlr  --csv  put -q 'tee > $INDICATORE.".csv", $*'

Note:

  • prima rimuovo da INDICATORE il carattere / e lo sostituisco con -;
  • poi sfrutto il verbo tee di Miller, che creerà dei file di output filtrando su valori di INDICATORE distinti.

in output i 90 file con nome file uguale al fenomeno osservato:

Riferimenti utili

Ultima modifica 25/03/2024: update errore (9ab61a9)