Start forespørgsel om data med dette enkle forespørgselssprog

Arbejde med data bliver en stadig vigtigere færdighed på den moderne arbejdsplads.

Data er ikke længere domænet for analytikere og softwareingeniører. Med dagens teknologi kan enhver arbejde med data for at analysere tendenser og informere deres beslutningstagning.

Et grundlæggende koncept, når du arbejder med data, er at 'spørge' om et datasæt. Dette er bogstaveligt talt at stille spørgsmål om et sæt data. Et forespørgselssprog er et softwaresprog, der giver en syntaks til at stille sådanne spørgsmål.

Hvis du ikke har nogen erfaring med at skrive forespørgsler, kan de virke lidt skræmmende. Men med lidt øvelse kan du mestre det grundlæggende.

Sådan kan du komme i gang i Google Sheets.

Google Visualization API Query Language

Du bruger muligvis allerede Google Sheets til meget af dit daglige arbejde. Måske er du fortrolig med at bruge den til at generere diagrammer og grafer.

Google Visualization API Query Language er den magi, der fungerer bag kulisserne for at gøre dette muligt.

Men vidste du, at du kan få adgang til dette sprog gennem QUERY()funktionen? Det kan være et effektivt værktøj til at arbejde med store ark med data.

Der er mange ligheder mellem forespørgselssproget og SQL.

I begge tilfælde definerer du et datasæt med kolonner og rækker og vælger forskellige kolonner og rækker ved at specificere forskellige kriterier og betingelser.

I denne artikel kommer eksemplets data fra en stor CSV-fil, der indeholder internationale fodboldresultater mellem 1872 og 2019. Du kan downloade dataene fra Kaggle.

Upload et CSV-ark i et nyt Google-ark. Du kan vælge alle data med Ctrl + A (eller Cmd + A på Mac).

Fra menubåndet skal du vælge Data> Navngivne områder ... og kalde det valgte område ligesom 'data'. Dette gør det lettere at arbejde med.

Nu er du klar til at starte forespørgsel på dataene. Opret en ny fane i regnearket, og i celle A1 skal du oprette en ny QUERY()formel.

Få alle England-kampe

Denne første forespørgsel finder alle rækkerne i datasættet, hvor England enten er hjemmeholdet eller udeholdet.

Den QUERY()formel tager mindst to argumenter. Den første er det navngivne interval, hvilket vil være datasættet, der spørges. Den anden er en streng, der indeholder den aktuelle forespørgsel.

=QUERY(data, "SELECT * WHERE B = 'England' OR C = 'England'")

Lad os nedbryde dette.

SELECT *beder om at returnere alle kolonner i datasættet. Hvis du kun ville have kolonne A, B og C, ville du skrive SELECT A, B, C.

Dernæst inkluderer du et filter for kun at finde rækker, hvor kolonne B eller kolonne C indeholder holdet 'England'. Sørg for at bruge enkelt-citater til strenge inde i forespørgslen. Dobbeltcitater bruges til at åbne og lukke selve forespørgslen.

Denne formel returnerer alle de rækker, hvor England har spillet. Hvis du vil søge efter et andet hold, skal du blot ændre betingelsen i filteret.

Tæl alle venskabskampe

Lad os derefter tælle, hvor mange venskabskampe der er i datasættet.

=QUERY(data, "SELECT COUNT(A) WHERE F = 'Friendly'")

Dette gør brug af Query Language's COUNT()funktion. Dette er et eksempel på en samlet funktion. Samlede funktioner opsummerer mange rækker i en.

For eksempel er der i dette datasæt 16.716 rækker, hvor kolonne F er lig 'Friendly'. I stedet for at returnere alle disse rækker returnerer forespørgslen en enkelt række - som tæller dem i stedet.

Andre eksempler på samlede funktioner inkluderer MAX(), MIN()og AVG(). I stedet for at returnere alle de rækker, der matcher forespørgslen, finder den deres maksimale, minimums- og gennemsnitsværdier i stedet.

Gruppér efter turnering

Samlede funktioner kan gøre mere, hvis du bruger en GROUP BYerklæring ved siden af ​​dem. Denne forespørgsel finder ud af, hvor mange kampe der er spillet af hver turneringstype.

=QUERY(data, "SELECT F, COUNT(A) GROUP BY F")

Denne forespørgsel grupperer datasættet efter hver af værdierne i kolonne F. Det tæller derefter, hvor mange rækker der er i hver gruppe.

Du kan bruge GROUP BYi mere end en kolonne. For eksempel for at finde ud af, hvor mange kampe der er spillet i hvert land efter turnering, skal du bruge forespørgslen nedenfor:

=QUERY(data, "SELECT H, F, COUNT(A) GROUP BY H, F")

Lad os prøve noget mere avanceret filtrering.

Få alle England vs Tyskland kampe

Du kan angive mere kompleks filter logik at bruge ANDog ORsøgeord. For læsbarhed kan det hjælpe med at bruge parenteser omkring hver del af filteret.

For eksempel for at finde alle kampe mellem England og Tyskland:

=QUERY(data, "SELECT * WHERE (B = 'England' AND C = 'Germany') OR (C = 'England' AND B ='Germany')")

Dette filter har to kriterier - det ene hvor England er hjemmehold og Tyskland er væk, og det andet omvendt.

Brug af datavalidering gør det nemt at vælge to hold i datasættet.

Derefter kan du skrive en forespørgsel, der bruger værdierne for forskellige celler i filteret. Husk at bruge enkelt-anførselstegn til at identificere strenge i forespørgslen og dobbelt-anførselstegn for at åbne og lukke forskellige stykker af forespørgslen.

=QUERY(data, "SELECT * WHERE (B = '"&B1&"' AND C = '"&B2&"') OR (C = '"&B1&"' AND B ='"&B2&"')")

På udkig efter tendenser

Samlede funktioner og filtre gør kraftfulde værktøjer, når de bruges i kombination. Når du er fortrolig med, hvordan de fungerer, kan du begynde at søge efter alle mulige interessante tendenser i dit datasæt.

For eksempel finder forespørgslen nedenfor de gennemsnitlige mål pr. Spil, hvert år siden 1900.

=QUERY(data, "SELECT YEAR(A), AVG(D) + AVG(E) WHERE YEAR(A) >= 1900 GROUP BY YEAR(A)")

Hvis du plotter forespørgselsresultatet som en linjegraf, kan du straks begynde at se tendenser over tid.

Bestilling af resultaterne

Nogle gange er du ikke interesseret i at finde alle de matchende rækker i et datasæt. Ofte vil du gerne sortere dem efter nogle kriterier. Måske vil du kun finde de ti bedste poster.

Denne forespørgsel finder de ti mest højest scorende kampe i datasættet.

=QUERY(data, "SELECT * ORDER BY (D+E) DESC LIMIT 10")

Bemærk ORDER BYerklæringen. Dette sorterer rækkerne efter de angivne kolonner. Her sorterer forespørgslen output efter antallet af scorede mål i spillet.

Den DESCsøgeord indikerer at sortere i faldende rækkefølge (den ASCsøgeordet ville have sorteret dem i stigende rækkefølge).

Endelig LIMITbegrænser nøgleordet output til et givet antal rækker (i dette tilfælde ti).

Det ser ud til, at der har været nogle smukke ensidige spil i Oceanien!

Hvilke byer har været vært for flest verdensmesterskabskampe?

Og nu til et sidste eksempel for at bringe alt sammen og få din fantasi i gang.

Denne forespørgsel finder de ti bedste byer, der har været vært for flest FIFA verdensmesterskabskampe.

=QUERY(data, "SELECT G, COUNT(A) WHERE F = 'FIFA World Cup' GROUP BY G ORDER BY COUNT(A) DESC LIMIT 10")

Nu er det din tur

Forhåbentlig har du fundet denne artikel nyttig. Hvis du er fortrolig med logikken i hvert eksempel, er du klar til at prøve ægte SQL.

Dette introducerer begreber som JOINS, indlejrede forespørgsler og WINDOW-funktioner. Når du mestrer disse, vil din magt til at manipulere data gå gennem taget.

Der er et antal steder at starte med at lære SQL. Prøv de interaktive eksempler på w3schools!