Big Data en Databanken


Home 4BSW1 4BSW2 4MTLAT/4LAT 4MWW1 4MWW2 4NWE2 5BWE 5EWI/5LWI/5WWI1 5WWI2 About

1. Big Data

En hoe zit het mee de data die we door ons smartphones achterlaten?

2. Het Limiet van Excel

excel_limit.jpg

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.

doel vandaag: Gebruik SQLite en verbinding met Excel.

3.2. Installatie en Gebruik

3.3. Verbinding met Excel

ODBC verbinding: http://www.ch-werner.de/sqliteodbc

Gegevensbron:

Draaitabel:

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 ;)






Date: 2024-04-19 Fri 00:00

Author: Falk Mielke