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+Cper copiare, recarti sul terminale e dareCTRL+SHIFT+Vper incollare. - salva le modifiche con
CTRL+Oe 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