Nedlasting av data om kjøretøy
-
@sven_bruun
Kva verktøy er det du brukar? Det er gjerne ulike begrensingar frå verktøy til verktøy.
Begrensinga mange møter på er i Excel, som ikkje kan jobbe med meir enn litt over 1 million rader.Støtte i dagens datahotell
Det stemmer at datahotellet ikkje har støtte for å laste ned utsnitt av datasett. Dersom ein gjer utsnitt (filtrerer), så kan ein via API-et hente ut 100 oppføringar om gangen, men for så store datasett egnar ikkje dette seg.Grunnen til at dagens datahotell ikkje støtter dette er på den eine sida at det ville vere ressurskrevjande for datahotellet å ha ein slik funksjon, og at dagens datahotell ikkje har hatt noko vesentleg utvikling på mange år. I Datafabrikken jobbar vi med ny infrastruktur som skal erstatte dagens datahotell på sikt.
Moglege verktøy å bruke
Klogg er eit verktøy for å opne svært store filer. Nyttig for å opne og sjå på store reine tekstfiler (som CSV) som ein ikkje elles får opna i vanlege tekst-editorar. Ein kan gjere fritekst-søk i filene, men det har ikkje noko spesiell støtte for CSV-filer.
Modern CSV er eit skrivebordsprogram for å jobbe med CSV-filer, og ser ut til å ha støtte for store filer. For å jobbe med store filer ser det ut til at ein treng betal-versjonen.
q er eit verktøy for kommandolinja som lar ein skrive SQL-spørringar på filer. Muleg q kan oppfylle behovet, eller at ein ved hjelp av q kan filtrere datasettet ned til ein størrelse som gjer at ein kan jobbe vidare med det i ditt foretrukne verktøy.
Har ikkje prøvd dei to sistnemde med dette datasettet. Skal prøve det ut og oppdatere posten.
-
@sven_bruun sa i Nedlasting av data om kjøretøy:
Når man prøver å laste ned csv-data om kjøretøy så får man så store filer at mine verktøy ikke greier å behandle dem (flere GB).
Løsningen ser ikke ut til å støtte at man kun laster ned de dataene man spesifiserer i filteret på visningssiden? Noen tips til hvordan dette kan løses?Kan du seie meir om kva du vil gjere med dataene?
Tenker det er to måtar å angripe dette på:
-
Gjere det du ønskjer med dataene i andre verktøy enn dei du vanlegvis brukar
-
Bruke andre verktøy til å hente ut ein del av datasettet som er så liten at den går an å jobbe med i dei vanlege verktøya.
-
-
Jeg kan ambefalle q (http://harelba.github.io/q/) som en enkelt SQL databasen direkte mot CSV filen. Som sagt vi jobber mye med kjøretøy databasen og har flere interne API. Kanskje vi kan hjelpe med.
-
Målet er å lage noe statistikk rundt enkelte kjøretøymodeller. Har brukt Microsoft Access og Excel, og begge har begrensning på antall rader. Å kjøre filen gjennom grep er en mulighet for å gjøre dem mindre før import, men filtreringen der er jo ganske simpel.
-
Her er oppskrift på korleis du filtrerer ut ei delmengde av datasettet ved hjelp av q, så du kan jobbe vidare med det i andre verktøy.
Forutsetningar: q er installert og du har lasta ned kjøretøy-datasettet (kjoretoy.csv)
Først kan du sjekke kor mange rader utvalget gir. Her med merkenamn = "BMW", som i skjermbildet i første posten din.
q -C readwrite -H -O --delimiter=\; "SELECT COUNT(*) FROM kjoretoy.csv WHERE tekn_merkenavn = 'BMW'"
Svaret er 286 833 treff, og det er godt under grensa på ca. 1 million rader i Excel.
Neste steg er å lagre delmengda til ei ny fil (kjoretoy_bmw.csv):
q -C read -H -O --delimiter=\; "SELECT * FROM kjoretoy.csv WHERE tekn_merkenavn = 'BMW'" > kjoretoy_bmw.csv
I første kommandoen opprettar ein også ei cache-fil (parameter: -C readwrite) som gjer at vidare kommandoar på samme datasett går mykje fortare ved bruk av cache (parameter: -C read). Første kommandoen tok ca. 10 minutt hos meg, mens 2. kommando tok eit halvt minutt. Dersom eg køyrer første kommandoen på nytt med cache, så tar det rundt 5 sekund.
Cache-fila tar ein del diskplass - om lag like mykje som sjølve datasettet.
OBS! Dersom ein opnar ei CSV-fil direkte i Excel, så vil Excel gjette kva datatypar det enkelte felt/kolonne har. Det kan føre til at data blir endra til feil datatype (f.eks. tal blir datoar). For å unngå at Excel rotar til dataene, kan ein først opne Excel, og deretter importere CSV-fila. Brønnøysundregistrene har skrive tips om dette på sine nettsider (under "Korrigere formatfeil i CSV-dokumentet").
-
Fungerer dessverre ikke hos meg. Får feilmelding. Kan det være fordi det ser ut til å være noe grums i starten av csv filen?
query error: no such column: tekn_merkenavn
Warning - There seems to be a "no such column" error, and -H (header line) exists.
Please make sure that you are using the column names from the header line and not the default (cXX) column names. Another issue might be that the file contains a BOM. Files that are encoded with UTF8 and contain a BOM can be read by specifying -e utf-9-sig in the command line. Support for non-UTF8 encoding will be provided in the future.Har så prøvd med
men da får jeg feilmelding: Encoding utf-9-sig could not be found
-
@sven_bruun sa i Nedlasting av data om kjøretøy:
Fungerer dessverre ikke hos meg. Får feilmelding. Kan det være fordi det ser ut til å være noe grums i starten av csv filen?
Ser ut til at det manglar semikolon på delimiter-parameteret. Kan dette vere feilen?
«--delimiter=\» skal vere «--delimiter=\;»Om det ikkje fungerer, så kan du prøve å laste ned fila utan BOM.
Dersom ein brukar parameteret "?download" ved nedlasting av heile datasettet frå Datahotellet, så får ein med BOM (Byte Order Mark). Å ha med BOM ser ut til å hjelpe dersom ein vil opne fila direkte i Excel. Dersom ein ikkje har behov for BOM, så bør ein laste ned utan.Dei to alternative nedlastinglenkene er:
https://hotell.difi.no/download/vegvesen/kjoretoy?download - med BOM
https://hotell.difi.no/download/vegvesen/kjoretoy - utan BOM -
Prøvde med et semikolon der først, men da fikk jeg feilmeldingen:
Delimiter must be one character only -
@sven_bruun sa i Nedlasting av data om kjøretøy:
Prøvde med et semikolon der først, men da fikk jeg feilmeldingen:
Delimiter must be one character onlyDet ein må gjere er å oppgje semikolon som separator i q-kommandoen. Eg køyrte kommandoen på min Macbook, og måtte nytte skråstrek for å unnsleppe (escape) semikolon som fungerer som skilje mellom to separate kommandoar. Ut frå feilmeldinga frå q som du nemner, så har tydelegvis q fått inn meir enn eitt teikn. Har ikkje noko godt råd for korleis å få det til hos deg om det ikkje fungerer med kun semikolon eller med skråstrek i tillegg.
-
Eg spurte også på Twitter om tips til korleis jobbe med store CSV-filer og fekk mange svar:
https://twitter.com/livarb/status/1480534725429276672Har ikkje rukke å oppsummere svara her - endå.
-
Jeg har brukt Go med kun standard-biblioteket en del de siste årene for første behandling av store CSV-filer (og sammenstillng av Excel gjennom excelize biblioteket). Go er minne-effektivt med utf-8 internt, og med litt parallell kjøring kan man iterere relativt hurtig på noen GB. I senere tid er Copilot tjenesten til github nyttig og gjør at man kan skrive kommentarer som "UFT-16 with BOM transformer encoding" fremfor å lete i dokumentasjonen (Men, det blir jo litt kodelinjer, så det er ikke noe man alltid ønsker å dra frem)
Dette er egentlig ikke noen erstatning for Pandas i python eller tidyverse i R.
Google BigQuery er ganske rimelig når datasettet blir stort.
-
-
@robert-sasak sa i Nedlasting av data om kjøretøy:
Jeg kan ambefalle q (http://harelba.github.io/q/) som en enkelt SQL databasen direkte mot CSV filen. Som sagt vi jobber mye med kjøretøy databasen og har flere interne API. Kanskje vi kan hjelpe med.
-
@sven_bruun Bruker linken https://hotell.difi.no/download/vegvesen/kjoretoyinfo?download til å analysere bilparken, men det ser ikke ut til at denne informasjonen er vedlikeholdt lenger. Hvor kan jeg finne fila med alle biler?