Come specificare il delimiter in un datapackage frictionless
A cura di
Dennis Angemi
| issue
#249
| guida/e
Andrea Borruso
Use case
Se hai un file csv (sia esso data.csv
)
nome,altezza
pippo,150
e vuoi descriverlo come parte di un datapackage lanciando il comando di frictionless
frictionless describe --type "package" data.csv
otterrai in output
resources:
- name: data
type: table
path: data.csv
scheme: file
format: csv
encoding: utf-8
mediatype: text/csv
schema:
fields:
- name: nome
type: string
- name: altezza
type: integer
Essendo data.csv
un file csv che ha la virgola (,
) come separatore di campo, i metadati prodotti da frictionless non danno nessuna indicazione relativa al delimiter
. Se invece si vuole forzarne comunque la scrittura, si può lanciare
frictionless describe --type "package" --dialect '{"csv": {"delimiter": ","}}' data.csv
che produce
resources:
- name: data
type: table
path: data.csv
scheme: file
format: csv
encoding: utf-8
mediatype: text/csv
dialect:
csv:
delimiter: ','
schema:
fields:
- name: nome
type: string
- name: altezza
type: integer
Si noti che l’opzione --dialect
accetta in questo caso un inline JSON object '{"csv": {"delimiter": ","}}'
.
Tip: alias
Ok, il comando
frictionless describe --type "package" --dialect '{"csv": {"delimiter": ","}}'
è perfetto ma è di una lunghezza imbarazzante. Se vogliamo usare lo stesso comando digitando meno caratteri sul terminale possiamo creare un alias
in questo modo:
- lancia
nano ~/.bashrc
- individua la porzione di testo dedicata agli alias (
# Alias definitions.
) - copia e incolla questo codice al di sotto della porzione individuata al punto precedente
alias fdcsv='frictionless describe --type "package" --dialect '\''{"csv": {"delimiter": ","}}'\'''
puoi farlo selezionando il codice, per poi dare
CTRL+C
per copiare, recarti sul terminale e dareCTRL+SHIFT+V
per incollare. - salva le modifiche con
CTRL+O
e poiINVIO
- chiudi il file con
CTRL+X
- chiudi il terminale e riaprilo.
Adesso puoi ottenere lo stesso risultato di prima semplicemente lanciando
fdcsv data.csv