1 Importeren van data
In Excel is Power Query beschikbaar onder de groep Gegevens ophalen en transformeren in het lint Gegevens. Hiermee kun je verbindingen maken met meerdere gegevensbronnen en daarna die gegevens structureren (bijvoorbeeld een kolom verwijderen, een gegevenstype wijzigen) of de gegevens omzetten (transformeren) naar wat anders. Uiteindelijk komen de gegevens dan in een Excel werkblad beschikbaar. Alle stappen die je met de Power Query Editor uitvoert worden in een script vastgelegd.
Deze aanbevolen werkwijze heeft de volgende voordelen:
- De oorspronkelijke gegevens blijven onveranderd.
- Omdat de uitgevoerde acties in een script zijn vastgelegd heb je tevens een vorm van documentatie van wat je met de gegevens gedaan hebt.
- In het script kun je eenvoudig een stap wijzigen, ongedaan maken of een nieuwe stap toevoegen.
- Wanneer er wijzigingen of aanvullingen in de brondata komen hoef je de query alleen maar opnieuw uit te voeren waarna de gewijzigde gegevens in het werkblad verschijnen.
1.1 Gegevens ophalen en transformeren
Om Gegevens ophalen en transformeren in Excel te gebruiken, maak je eigenlijk een query in de werkmap. Met een query kun je een verbinding maken met een breed scala aan beschikbare gegevensbronnen, een voorbeeld van de gegevens bekijken en de gegevens transformeren.
De eerste stap is het maken van een verbinding met een gegevensbron. Wanneer de verbinding is gemaakt, krijg je een voorbeeld van de gegevens te zien. Daarna kun je stappen toevoegen om de gegevens te structureren en te transformeren. Hiervoor wordt een Query Editor gestart om een aantal instructies te maken die de acties uitvoeren. De laatste stap is het laden van de gegevens als een tabel in een werkblad.
- Je hebt ook de mogelijkheid om de gegevens te laden in het ingebouwde gegevensmodel.
- Je kunt de query later ook wijzigen en/of de gegevens vernieuwen.
Voor het maken van een query gebruik je de tab Gegevens in het lint, waarna je een van de mogelijke acties in de Gegevens ophalen en transformeren groep kiest.
Er zijn knoppen voor het ophalen van gegevens uit tekst/csv, web en een Excel tabel/bereik. Deze gegevensbronnen en nog veel meer zijn beschikbaar via de knop Gegevens ophalen.
De groep Query’s en verbindingen heeft een knop voor het vernieuwen van query’s en een knop om bestaande query’s en verbindingen te bekijken en te beheren.
1.2 Importeren van een tekst/csv bestand
Veel gegevens in externe bronnen zijn beschikbaar als tekst (bestandstype .txt
) of via komma (of karakter) gescheiden waarden (bestandstype .csv
).
Taak 1.1 Hulpbestand: SalesJan2009.csv
Open in Excel een nieuwe lege werkmap.
Kies tab Gegevens > Uit tekst/CSV (groep Gegevens ophalen en transformeren).
Blader naar het bestand
SalesJan2009.csv
en klik Importeren. Een voorbeeld van de gegevens wordt getoond.
Klik op Gegevens transformeren. De Query Editor wordt gestart in een nieuw venster. In de rechterzijbalk Queryinstellingen zie je onder Toegepaste Stappen de stappen die reeds zijn uitgevoerd.
Selecteer de kolommen
Account_Aangemaakt
enLaatste_Login
door op de kolomkop te klikken met ingedrukte CTRL toets. Kies dan Kolommen verwijderen (groep Kolommen beheren) > Kolommen verwijderen. De kolommen worden verwijderd en de stap is toegevoegd aan Toegepaste Stappen.
Controleer dat kolom
Transactie_Datum
het juiste gegevenstype heeft. Zo niet, wijzig deze dan via Gegevenstype (groep Transformeren) > Datum/Tijd. Wanneer er een dialoogscherm komt met de vraag of de bestaande conversie vervangen moet worden, kies dan voor Vervangen van de huidige conversie.In kolom
Naam
beginnen de meeste namen met een hoofdletter, maar niet allemaal. Dat dient gecorrigeerd te worden. Selecteer kolomNaam
, rechtermuisklik en kies Transformeren > Elk Woord Met Een Hoofdletter.Kies Sluiten en laden(groep Sluiten) > Sluiten en laden. De gegevens worden in een Excel tabel in een nieuw werkblad opgeslagen. Je kunt nu met de gegevens werken en de Excel map voor later gebruik opslaan.
Het is altijd mogelijk om de query achteraf te wijzigen. Selecteer hiervoor een cel in de tabel en kies tab Query > Bewerken (groep Bewerken). De Query Editor wordt weer opgestart. Van hieruit kun je tevens de gegevens vernieuwen, alle stappen worden dan herhaald.
1.3 Importeren van een webtabel
In webpagina’s tref je vaak tabellen. Bekijk maar eens de pagina Europees kampioenschap voetbal mannen. Power Query in Excel kan deze tabellen herkennen en importeren. In deze taak ga je uit de tabel Erelijst
de kolommen Jaar
en Winnaar
importeren voor de jaren waarvoor ook een winnaar bekend is.
Taak 1.2 Import tabel Wikipedia
Open een nieuwe lege werkmap.
Kies tab Gegevens > Van het web (groep Gegevens ophalen en transformeren). Er wordt een dialoogvenster weergegeven waarin de URL van de webpagina moet worden ingevoerd.
- Voer voor de URL in
https://nl.wikipedia.org/wiki/Europees_kampioenschap_voetbal_mannen
en klik OK.
Er wordt een verbinding met de webpagina gemaakt. Wanneer de verbinding gerealiseerd is wordt een Navigator venster getoond waarin een lijst met alle tabellen in de webpagina te zien is. Door op een tabel te klikken verschijnt aan de rechterkant van het venster een voorbeeld van de gegevens.
- Selecteer tabel
Erelijst[bewerken]
en klik dan op de knop Gegevens transformeren. De Query Editor wordt gestart in een nieuw venster. Aan de rechterkant onder Queryinstellingen en onder Toegepaste Stappen zie je de stappen die reeds zijn toegepast.
Vervolgens kun je de gegevens naar behoefte structureren, wijzigen en opschonen.
Selecteer de kolommen
Jaar
enWinnaar
door op deze kolomkoppen te klikken met ingedrukte CTRL toets. Kies dan Kolommen verwijderen (groep Kolommen beheren) > Andere kolommen verwijderen.Selecteer kolom
Jaar
en kies Waarden vervangen (groep Transformeren). Het dialoogvenster Waarden vervangen wordt weergegeven.
Type
Details
in het tekstvak Te zoeken waarde, laat het tekstvak Vervangen door leeg. Klik daarna op OK.Selecteer kolom
Winnaar
en klik op de filter keuzepijl in de kolomkop. Deselecteer de optie leeg en klik OK.Kies Sluiten en laden(groep Sluiten) > Sluiten en laden. De gegevens worden in een Excel tabel in een nieuw werkblad opgeslagen. Je kunt nu met de gegevens werken en de Excel map voor later gebruik opslaan.
1.4 Importeren uit een Access database
In een database zit de data in tabellen die meestal aan elkaar gekoppeld zijn. Via queries in de database kun je ook nog eens bepaalde gegevens selecteren en eventueel berekeningen op gegevens uitvoeren. In deze oefening wordt gewerkt met de eenvoudige database olympischesporten.accdb.
Deze database bevat de Engelstalige en Nederlandstalige namen van de olympische sporten en disciplines voor de twee versies van de spelen (zomer, winter), alsmede de afkorting van de sportbond, het beginjaar en het eventuele eindjaar van de disciplines.
De door het IOC gebruikte definitie van sport is een verzameling van disciplines die door één sportbond worden vertegenwoordigd. Zo vallen onder de sport “Volleybal” de disciplines “Zaalvolleybal” en “Beachvolleybal”, vertegenwoordigd door de sportbond FIVB (Fédération Internationale de Volleyball).
1.4.1 Uit een query
Taak 1.3 Hulpbestand: olympischesporten.accdb
Open in Excel een nieuwe lege werkmap.
Kies tab Gegevens > Gegevens ophalen (groep Gegevens ophalen en transformeren) > Uit database > Uit Microsoft Access-database.
Blader naar het bestand
olympischesporten.accdb
en klik Importeren. Het dialoogvenster Navigator verschijnt waarin je de gewenste items uit de database kunt selecteren.
Selecteer de query
NL sporten en disciplines
waarna in het rechterdeel van het venster een voorbeeld van de gegevens verschijnt.Kies Laden > Laden. De gegevens worden in een tabel in een nieuw werkblad geladen.
1.4.2 Uit tabellen
Taak 1.4 Hulpbestand: olympischesporten.accdb
Kies tab Gegevens > Gegevens ophalen (groep Gegevens ophalen en transformeren) > Uit database > Uit Microsoft Access-database.
Blader naar het bestand
olympischesporten.accdb
en klik Importeren. Het dialoogvenster Navigator (Figuur 1.8) verschijnt weer.Vink het selectievakje Meerdere items selecteren aan en selecteer daarna de twee tabellen
Discipline
enSport
.Kies Laden > Laden. Je ziet nu de gegevens niet in het werkblad verschijnen, ze zitten wel in het gegevensmodel.
Wanneer je twee of meer tabellen tegelijk importeert wordt er automatisch een gegevensmodel gemaakt. Deze integreert de geïmporteerde tabellen waarbij de bestaande relaties tussen de tabellen gebruikt worden. Je kunt dit met Power Pivot bekijken en bewerken. Dit gaat als volgt.
Kies tab Power Pivot > Beheren. Er verschijnt nu een nieuw venster Power Pivot voor Excel met linksonder de tabbladen voor de geïmporteerde tabellen. Wanneer je de relatie wilt zien kies je in dit venster voor Diagramweergave (groep Weergave). Wanneer je alles bekeken hebt kun je dit venster weer sluiten.
1.4.3 Analyse
Voor het analyseren van de gegevens wordt een draaitabel gebruikt.
Taak 1.5 Analyse met draaitabel
Kies Invoegen > Draaitabel. Zorg er voor dat het gebruik van het gegevensmodel geselecteerd is (zie Figuur 1.9).
Testvragen
Hoeveel disciplines waren er in het beginjaar van de zomerspelen?
Hoeveel disciplines zijn er nu voor de zomerspelen?
Hoeveel disciplines zijn er totaal verdwenen?
Welke sport heeft de meeste disciplines?
Hoeveel nieuwe disciplines zijn er voor de zomerspelen 2020 bijgekomen?
1.5 TAAK: Marktwaarde Voetbalclub
Het Duitse bedrijf Transfermarkt publiceert veel data over clubs en spelers, waaronder ook hun inschatting van de marktwaarde van de spelers. Naast een algemene url zijn er ook landspecifieke urls’s, zo is die voor Nederland: https://www.transfermarkt.nl/
Via een webquery kun je deze gegevens met behulp van Power Query ophalen. Om analyses met Excel uit te kunnen voeren moeten deze gegevens in een daartoe geschikt formaat in een werkblad beschikbaar zijn. Dat is in dit geval redelijk complex. In deze taak wordt dat uitvoerig beschreven voor de club FC Twente, maar je kunt dit eenvoudig wijzigen voor jouw eigen favoriete club. De enige aanpassing is dan de url van de club.
1.5.1 URL voetbalclub
Om clubgegevens via een query in Excel binnen te halen moet je eerst de url van de club te weten zien te komen.
Wanneer je de Nederlandse url van Transfermarkt gebruikt is het land Nederland
al voor je geselecteerd.
Kies nu als competitie de Eredivisie
en vervolgens de club
, voor deze taak dus FC Twente. Selecteer voor deze taak geen speler. Klik nu op de knop >>
achter de clubnaam.
In de adresbalk van de browser kun je nu de url zien. Voor FC Twente is dat https://www.transfermarkt.nl/fc-twente/startseite/verein/317
. Kopieer de url en bewaar deze ergens.
1.5.2 Query maken
Open in Excel een nieuwe lege werkmap.
Kies tab Gegevens > Van het web. Voer de genoteerde URL in en klik OK.
Na een tijdje verschijnt het venster Navigator met in de linkerkant de mogelijke tabellen.
Je moet nu uitzoeken in welke tabel de gezochte informatie zit. Wanneer je een tabel selecteert krijg je in het rechterdeel een voorbeeld van de gegevens te zien.
- Selecteer
Table 0
.
Door gewijzigde omstandigheden kunnen spelers en hun marktwaarde ondertussen gewijzigd zijn.
- Klik Gegevens transformeren. Power Query Editor wordt nu opgestart met daarin de gegevens.
Verwijder de eerste twee kolommen.
Hernoem de kolom met de namen van de spelers in
Speler
.Wijzig de naam van de query in
qryfctwente
.
De inhoud van de kolommen Geb./leeftijd
en Marktwaarde
is niet zodanig dat je er in Excel goed mee kunt werken. Een geboortedatum is het handigste in de vorm dd-mm-jjjj
. En voor de marktwaarde moet alleen een getal komen. Voor dit herstructureren van gegevens leent Power Query zich uitstekend.
1.5.3 Geboortedatum
Wanneer je de gegevens in de kolom Geb./leeftijd
bekijkt dan zie dat dag, maand, jaartal en leeftijd steeds van elkaar gescheiden worden door een spatie. Dat betekent dat je de inhoud van deze kolom op basis van dit scheidingsteken kunt splitsen en over vier nieuwe kolommen kunt verdelen.
Selecteer kolom
Geb./leeftijd
en kies dan tab Transformeren > Kolom splitsen (groep Kolom Tekst) > Op scheidingsteken.Selecteer spatie als scheidingsteken en ook dat er op elke spatie gesplitst moet worden.
Klik op OK. De oude kolom is nu verdwenen en in de plaats hiervan zijn vier nieuwe kolommen gekomen met de namen
Geb./leeftijd.1
t/mGeb./leeftijd.4
.Wijzig de namen van de eerste drie kolommen in resp.
Dag
,Maand
enJaar
.
Achter de maandnaam staat een punt. Deze moet verwijderd worden anders kunnen de datumfuncties van Excel er niet mee overweg.
Selecteer kolom
Maand
en kies tab Transformeren > Waarden vervangen (groep Alle kolommen).Specificeer voor de te zoeken waarde een punt en laat het vakje voor de te vervangen waarde leeg. Klik OK.
Nu moet er uit dag, maand en jaar een nieuwe kolom met de geboortedata gemaakt worden.
Kies tab Kolom toevoegen > Aangepaste kolom en specificeer:
- Nieuwe kolomnaam:
Geboortedatum
- Aangepaste kolomformule:
= Text.From([Dag]) & "-" & [Maand] & "-" & Text.From([Jaar])
- Nieuwe kolomnaam:
- Klik op OK.
Het gegevenstype van deze kolom moet nog op Datum gezet worden.
- Zorg dat kolom
Geboortedatum
geselecteerd blijft en kies tab Start > Gegevenstype (groep Transformeren) > Datum.
1.5.4 Leeftijd
De leeftijden zijn negatief, veroorzaakt doordat in de brondata de leeftijden tussen haakjes staan. Dat kan gewijzigd worden door een nieuwe kolom Leeftijd
te maken met daarin de absolute waarde van het veld.
Kies tab Kolom toevoegen > Aangepaste kolom en specificeer:
- Nieuwe kolomnaam:
Leeftijd
- Aangepaste kolomformule:
= Number.Abs([#"Geb. / leeftijd.4"])
- Nieuwe kolomnaam:
Zodra je begint met het intypen van het woord Number
verschijnen automatisch de mogelijke functies. In plaats van de formule in te typen kun je ook de functie selecteren. En velden kun je via een dubbelklik invoegen. Deze methode is aan te raden omdat het typefouten voorkomt.
- Verwijder nu de overbodige kolommen
Dag
,Maand
,Jaar
enGeb. / leeftijd.4
.
1.5.5 Marktwaarde
De gegevens in de kolom Marktwaarde
eindigen allemaal met . €
. Dit moet eerst verwijderd worden.
Selecteer kolom
Marktwaarde
en kies tab Transformeren > Waarden vervangen (groep Alle kolommen).Specificeer voor de te zoeken waarde
. €
en laat het vakje voor de te vervangen waarde leeg. Klik OK.
De inhoud van de kolom Marktwaarde
bestaat nu uit een getal en een tekstaanduiding voor de eenheid, welke van elkaar gescheiden zijn door een spatie.
- Splits kolom
Marktwaarde
op basis van de spatie. De oude kolom wordt hierdoor vervangen door twee nieuwe kolommen:Marktwaarde.1
met het getal enMarktwaarde.2
met de eenheid.
De tekst van deze eenheid ga je nu vervangen door het overeenkomstige getal.
- Selecteer kolom
Marktwaarde.2
. Vervang nu de waardedzd
door1000
en daarna de waardemln
door1000000
. Wijzig daarna het gegevenstype van deze kolom in Geheel getal.
Nu kan er een nieuwe kolom Marktwaarde
gemaakt worden door de inhoud van de twee kolommen met elkaar te vermenigvuldigen.
Kies tab Kolom toevoegen > Aangepaste kolom en specificeer:
- Nieuwe kolomnaam:
Marktwaarde
- Aangepaste kolomformule:
= [Marktwaarde.1]*[Marktwaarde.2]
- Nieuwe kolomnaam:
Klik OK.
Verwijder de overbodig geworden kolommen
Marktwaarde.1
enMarktwaarde.2
.Wijzig gegevenstype van kolom
Marktwaarde
in Valuta.
1.5.6 Laden in Excel
De query is nu klaar en de gegevens kunnen in een Excel werkblad geladen worden.
Kies tab Startpagina > Sluiten en laden. Dit kan even duren.
Maak in het Excel werkblad de inhoud van
Marktwaarde
op als Valuta zonder decimalen.Voeg een totaalrij toe via tab Tabelontwerp > aanvinken Totaalrij (groep Opties voor tabelstijlen).
- Bewaar het bestand onder de naam marktwaarde-fctwente.xlsx, of met de naam van een andere voetbalclub wanneer je die gebruikt hebt. Je hebt dit bestand later nodig voor case Paragraaf 8.3.
Wanneer de marktwaarde van een speler wijzigt, er spelers vertrekken of bijkomen, hoef je alleen maar de query te vernieuwen via tab Gegevens > Alles vernieuwen (groep Query’s en verbindingen).
Wanneer je het bestand op een later moment weer opent, krijg je waarschijnlijk een beveiligingswaarschuwing dat externe gegevensverbindingen uitgeschakeld zijn. Je moet dan in het meldingsvenster klikken op de knop Inhoud inschakelen.
1.6 Opgaven
Oefening 1.1 Een csv bestand importeren
Open eerst het bestand
verkopen.csv
met een kale tekstverwerker (Kladblok, Notepad) om te onderzoeken hoe het bestand er uit ziet. Het is belangrijk om te weten is of er veldnamen in staan en welk scheidingssymbool gebruikt is. Meestal herkent Power Query dit zelf, maar het is toch wel nuttig om dit zelf eerst na te gaan.Importeer de gegevens via Gegevens ophalen en transformeren.
De veldnamen staan in de eerste rij. Om deze te veranderen in de kolomkoppen kies je Start > De eerste rij als veldnamen gebruiken (groep Transformeren) > De eerste rij als veldnamen gebruiken.
Door de transformatie naar veldnamen wordt ook het gegevenstype aangepast. Controleer of de kolommen naar het juiste gegevenstype zijn omgezet. Zo niet, wijzig dan het gevenstype.
- Bewaar het bestand voor later gebruik onder de naam verkopen.xlsx.
Oefening 1.2 Een Access database importeren
Open in Excel een nieuwe lege werkmap en importeer uit het bestand
snoeporders2010.accdb
de drie tabellen via Gegevens ophalen en transformeren.Maak via een draaitabel een lijngrafiek van het aantal orders per maand.
Maak via een draaitabel een kolomdiagram van het aantal orders per provincie, gesorteerd van hoog naar laag.
Oefening 1.3 AEX koersen
Zoek op het internet naar een website die de actuele beurskoersen van de bedrijven in de AEX index als een tabel in een pagina aanbiedt. Haal vervolgens deze data via Power Query in een Excel werkblad binnen.
Oefening 1.4 Nederlandse gemeenten
Deze wikipediapagina bevat een tabel van Nederlandse gemeenten met een aantal gegevens over die gemeenten.
Importeer via Power Query deze tabel in Excel en neem alleen de kolommen Gemeente, Provincie, Inwoneraantal en Oppervlakte op.
Maak een draaitabel van het aantal gemeenten per provincie. Welke provincie telt de meeste gemeentes?
Maak draaigrafiek van het inwoneraantal per provincie, gesorteerd van groot naar klein.
Maak draaigrafiek van het Land-oppervlak per provincie, gesorteerd van groot naar klein.
Bedenk een manier om met een draaitabel de bevolkingsdichtheid van elke provincie te bepalen.