Libraries:

Bij ons bedrijf verkopen we drones aan webshops of winkels die de bestellingen bezorgen via de drone. In het ERD tabel die ingeladen wordt staan de klantnummer, username, het bedrijf die is gekoppeld aan de username, de specificaties van de drone, het aantal bestelde drones door een account, de bezorglocatie en de bezorgdatum. De specificaties hebben we minimaal gehouden om het makkelijk te houden.

De relevante data in de tabel is de username, bedrijfnaam, het aantal bestellingen, de bezorglocatie en de bezorgdatum.

Deze code is nodig om SQL statements los te kunnen laten op het excel bestand.

#Onderstaande niet veranderen !
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")


#Als er in de tabel variabelen met datums voorkomen, dan moeten die aangepast worden zodat de datumvelden als teksttype worden opgeslagen en niet als datumtijd type. Zie onderstaand voorbeeld: copy_to(con, mutate_at(df, vars(ends_with("datum")), as.character), "factOrders")
#copy_to(con, mutate_at(df, vars(ends_with("datum")), as.character), "factOrders")
copy_to(con, mutate_at(df, vars(starts_with("datum")), as.character), 
        "ERD")


knitr::opts_chunk$set(connection = "con")

De tafel wordt via SQL ingeladen. De bezorgdatum wordt in excel als ‘willekeurige’ cijfers weergeven, maar in R Studio wordt het weer normaal weergeven.

select *  
from ERD
Displaying records 1 - 10
Klantnummer Username Bedrijfsnaam Specs Aantalbestellingen Bezorglocatie Bezorgdatum
1 Amazon1 Amazon Bezorgdrone 100 Los Angeles 1571184000
2 Amazon2 Amazon Bezorgdrone 100 New York 1578960000
3 Bol.com1 Bol.com Bezorgdrone 30 Amsterdam 1597276800
4 Bol.com2 Bol.com Bezorgdrone 10 Rotterdam 1602201600
5 Coolblue1 Coolblue Bezorgdrone 15 Amsterdam 1606435200
6 Coolblue2 Coolblue Bezorgdrone 15 Utrecht 1616371200
7 Zalando1 Zalando Bezorgdrone 50 Berlijn 1621987200
8 Zalando2 Zalando Bezorgdrone 20 Eindhoven 1624320000
9 Azerty1 Azerty Bezorgdrone 5 Eindhoven 1632182400
10 Azerty2 Azerty Bezorgdrone 5 Amsterdam 1636070400

De KPI’s

KPI 1: Aantal drones per bedrijf

Reden: Als we weten hoeveel drones een bedrijf besteld, weten we hoeveel drones we nog op voorraad hebben en hoeveel drones er eventueel er nog gemaakt moet worden.

Conclusie: Uit de R chunk kunnen we zien dat er een totaal van 616 drones zijn besteld en dat we die aantal moeten leveren. Uit de grafiek kunnen we zien hoeveel drones elk bedrijf heeft besteld.

x <- aggregate(Aantalbestellingen~Bedrijfsnaam, df, sum)
x
##    Bedrijfsnaam Aantalbestellingen
## 1    AliExpress                200
## 2        Amazon                200
## 3        Azerty                 10
## 4       Bol.com                 40
## 5      Coolblue                 30
## 6  De Bijenkorf                 10
## 7    MediaMarkt                 20
## 8        Praxis                  6
## 9       Wehkamp                 30
## 10      Zalando                 70
sum(df$Aantalbestellingen)
## [1] 616
bp <- ggplot(x, aes(x = "", y = Aantalbestellingen, fill = Bedrijfsnaam)) +
  geom_bar(width = 1, stat = "identity")

pie <- bp + coord_polar("y", start = 0) + geom_text(aes(label = paste0(Aantalbestellingen)), position = position_stack(vjust = 0.5))

pie = pie + labs(x = NULL, y = NULL, fill = NULL, title = "Aantal verkochte drones per bedrijf")

pie = pie + theme_classic() + theme(axis.line = element_blank(),
          axis.text = element_blank(),
          axis.ticks = element_blank(),
          plot.title = element_text(hjust = 0.5, color = "#666666"))

pie

KPI 2: Aantal bestellingen

Reden: Bij het aantal bestellingen kunnen we zien in welk deel van het jaar of welke tijdperiode we veel drones op voorraad moeten hebben en of het dan druk wordt.

Conclusie: Uit de grafiek kunnen we zien dat het in het begin best wel veel drones zijn gekocht en dus moeten we veel drones op voorraad hebben. Daarna is het een stuk minder dus is het wat minder druk, maar daarna zijn er weer veel bestellingen gemaakt en moeten we weer veel drones op voorraad hebben.

De horizontale lijn is het gemiddelde aantal bestellingen die is gemaakt.

df %>%
  select(Bezorgdatum, Aantalbestellingen)
## # A tibble: 20 x 2
##    Bezorgdatum         Aantalbestellingen
##    <dttm>                           <dbl>
##  1 2019-10-16 00:00:00                100
##  2 2020-01-14 00:00:00                100
##  3 2020-08-13 00:00:00                 30
##  4 2020-10-09 00:00:00                 10
##  5 2020-11-27 00:00:00                 15
##  6 2021-03-22 00:00:00                 15
##  7 2021-05-26 00:00:00                 50
##  8 2021-06-22 00:00:00                 20
##  9 2021-09-21 00:00:00                  5
## 10 2021-11-05 00:00:00                  5
## 11 2021-09-24 00:00:00                100
## 12 2021-08-12 00:00:00                100
## 13 2021-06-02 00:00:00                  5
## 14 2021-03-30 00:00:00                  5
## 15 2021-02-08 00:00:00                 10
## 16 2020-11-11 00:00:00                 10
## 17 2020-09-23 00:00:00                  3
## 18 2020-06-30 00:00:00                  3
## 19 2020-05-28 00:00:00                 10
## 20 2019-10-22 00:00:00                 20
ggplot(df, aes(Bezorgdatum, Aantalbestellingen)) +
  geom_line() + geom_hline(yintercept = mean(df$Aantalbestellingen), color = "blue")

KPI 3: Aantal bestellingen per specifieke stad

Reden: Als we weten hoeveel bestellingen er in een specifieke stad zijn gedaan, kunnen we ook schatten wat de leveringstijden zijn en kunnen we de kosten daarvan ook meerekenen bij de totale kosten.

Conclusie: Uit de tabel kunnen we zien dat de meeste bestellingen binnen Nederland zijn en zijn de reiskosten dus ook redelijk laag. Aan de andere kant zijn er ook veel bestellingen in het buitenland gedaan en zijn dus de reiskosten hoger om de drones naar die plekken te leveren.

aantalBestellingenPerStad <- aggregate(Aantalbestellingen~Bezorglocatie, df, sum)

aantalBestellingenPerStad
##    Bezorglocatie Aantalbestellingen
## 1      Amsterdam                 50
## 2        Berlijn                 50
## 3     Den Helder                  3
## 4      Eindhoven                 30
## 5      Groningen                 10
## 6        Hengelo                 10
## 7       Hongkong                100
## 8    Los Angeles                100
## 9     Maastricht                  3
## 10      New York                100
## 11        Peking                100
## 12     Rotterdam                 10
## 13       Tilburg                 20
## 14       Utrecht                 25
## 15        Zwolle                  5
ggplot(aantalBestellingenPerStad, aes(Bezorglocatie, Aantalbestellingen)) +
  geom_col()

KPI 4: Wanneer worden er veel of weinig drones verkocht

Reden: Hier kunnen we zien of er op een jaar veel of weinig drones zijn verkocht. Dan kunnen we zien of een groei is voor het verkopen van de drones of niet.

Conclusie: Er is een duidelijk groei voor de verkoop van de groei omdat er in 2019 maar 120 drones zijn verkocht en in 2021 315 zijn verkocht.

Jaar <- format(as.Date(df$Bezorgdatum, format="%Y/%m/%d"), "%Y")
bestellingenPerJaar <- aggregate(Aantalbestellingen~Jaar, df, sum)
bestellingenPerJaar
##   Jaar Aantalbestellingen
## 1 2019                120
## 2 2020                181
## 3 2021                315
ggplot(df, aes(Jaar, Aantalbestellingen)) +
  geom_col()

KPI 5: Aantal producten

Reden: Bij deze KPI kunnen we zien hoeveel drones elke account bestelt heeft. Dan kunnen we zien welke account, een bedrijf maar in een andere plaats, hoeveel drones bestelt heeft. Zo kunnen we ook zien of een bedrijf in een andere vestiging meer drones koopt dan in een andere plaats.

Conclusie: Uit de tabel en grafiek kunnen we halen dat bijvoorbeeld Bol.com op een andere account meer drones heeft gekocht dan de andere, maar bij Amazon is het aantal bestellingen tussen de twee account hetzelfde.

df %>%
  select(Username, Aantalbestellingen) %>%
  arrange(desc(Username))
## # A tibble: 20 x 2
##    Username     Aantalbestellingen
##    <chr>                     <dbl>
##  1 Zalando2                     20
##  2 Zalando1                     50
##  3 Wehkamp2                     20
##  4 Wehkamp1                     10
##  5 Praxis2                       3
##  6 Praxis1                       3
##  7 MediaMarkt2                  10
##  8 MediaMarkt1                  10
##  9 DeBijenkorf2                  5
## 10 DeBijenkorf1                  5
## 11 Coolblue2                    15
## 12 Coolblue1                    15
## 13 Bol.com2                     10
## 14 Bol.com1                     30
## 15 Azerty2                       5
## 16 Azerty1                       5
## 17 Amazon2                     100
## 18 Amazon1                     100
## 19 AliExpress2                 100
## 20 AliExpress1                 100
ggplot(df, aes(Username, Aantalbestellingen)) +
  geom_col()