Big Data en Databanken
1. Big Data
- “Wat is Big Data en wat heb ik er aan?”
- https://techjury.net/blog/how-much-data-is-created-every-day
- In 2022, users send around 650 million Tweets per day.
- 41.666.667 million messages are sent daily on Whatsapp. (Source: Finances Online) Pro Tipp: use “Signal”
- Facebook? 150.000 messages and 147.000 images are sent and received on Facebook every day.
- Instagram users post about 347.222 stories every day.
- 1.388.889 voice calls and messages are sent out daily.
- Netflix users stream 404.444 hours of video content every day.
- https://www.earthlink.net/blog/how-much-data-is-created-and-used-every-day
- 3.800.000 google searches per minute
- 3.500.000 emails per second
- https://www.demandsage.com/smartphone-usage-statistics
- The average smartphone user uses 19,08 GB of internet monthly as of 2023.
En hoe zit het mee de data die we door ons smartphones achterlaten?
- https://www.nature.com/articles/sdata2018286
- https://gizmodo.com/apple-iphone-ipad-privacy-problems-data-gathering-1849855092
- Ten Arguments:
- Jaron Lanier “Ten Arguments for Deleting Your Social Media Accounts Right Now”, https://www.jaronlanier.com/tenarguments.html; insider-boek onder meer over hoe de tech-websites geld verdienen
2. Het Limiet van Excel
maar: excel kan externe gegevensbronnen gebruiken!
- ODC: “Office Data Connection”
- ODBC: “Open DataBase Connectivity”
- SQL: “Structured Query Language”
- RDB: “Relational DataBase”
- frontend: programma dat de data weergeeft
- backend: programma wat de data beheerd en verwerkt
Excel is een frontend. Bijna alle websites zijn ook een frontend naar grote datastructuren.
3. SQL
3.1. Opdracht
Een programmeertaal om de gegevens in relationele databanken te beheren.
- https://nl.wikipedia.org/wiki/Relationele_database
- Verschillende “dialecten” (zoals Vlaams/Nederlands): SQLite, postgreSQL, mySQL, …
doel vandaag: Gebruik SQLite en verbinding met Excel.
3.2. Installatie en Gebruik
Download: https://sqlite.org/download.html
Gebruik van SQLite: 2016.padjo.org/tutorials/sqlite-data-starterpacks
DBBrowser: https://sqlitebrowser.org
3.3. Verbinding met Excel
4. … of toch geen Excel!
In voorbereiding voor de lessen bleek het dat Excel bijna geen verbindingen met (goede) gratis-databank-serverprogramma’s meer toelaat.
Ik had een postgreSQL- en een mySQL server voorbereidt, en het is ingewikkeld of niet mogelijk om ze aan excel te koppelen.
Dit is de intentie van Microsoft: met hun dure (en slechte) MS SQL server lukt het heel snel.
Ik heb in afspraak met jullie klastitularis besloten om het thema te veranderen. Hieronder voor geïnteresseerden nog een kleine uitblik. Laat je niet ontmoedigen:
Bijna het hele internet draait momenteel op SQL-Servers. Het is de moeite waard om te leren of ten minste een beetje te verstaan!
5. Voorbeeld-SQL-query
Hier de anatomie van een SQL-aanvraag, in een notendop.
Dit is op basis van het dataset Pizza (10/11/2023).
SELECT category, pt.name as pizza, -- count(DISTINCT order_id) AS quantity, round(sum(price * quantity),2) AS revenue FROM order_details AS od LEFT JOIN pizzas AS pi ON od.pizza_id = pi.pizza_id LEFT JOIN pizza_types AS pt ON pi.pizza_type_id = pt.pizza_type_id -- LIMIT 100 GROUP BY category, pizza ORDER BY category, pizza, order_id, order_details_id ASC ;
De Pizza-database is hier, om te proberen:
Gebruik graag de SQLite DBBrowser om een query uit te voeren!
6. Data Excel naar SQL
Een simple en snelle manier om data naar een database te krijgen is via een programmeertaal (bv. python):
import pandas as PD xl_file = "5BWE_pizza.xlsx" from sqlalchemy import create_engine # engine = create_engine("mariadb+pymysql://gebruiker:wachtwoord@server_adres/database") engine = create_engine("sqlite:///pizza.db") # , echo=False for sheet, index in [('pizza_types', 'pizza_type_id'), ('pizzas', 'pizza_id'), ('orders', 'order_id'), ('order_details', 'order_details_id')]: data = PD.read_excel(xl_file, sheet_name = sheet).set_index(index, inplace = False) data.to_sql(name=sheet, con=engine, if_exists='replace', index_label=index) print(data)
… maar als je python kan, dan heb je helemaal geen Excel meer nodig ;)
vorige les \(\quad\) volgende les