Charger plusieurs tables avec des jointures

Ingestion de données rationalisée avec pandas

Amany Mahfouz

Instructor

Clés

  • Les enregistrements d'une base ont des identifiants uniques, ou clés

Données d'appels 311, avec la colonne unique_key en surbrillance. Les clés uniques sont des nombres.

Ingestion de données rationalisée avec pandas

Clés

  • Les enregistrements d'une base ont des identifiants uniques, ou clés

Données d'un répertoire de cours, avec la colonne course_code en surbrillance. Les codes combinent des sigles et des nombres.

Ingestion de données rationalisée avec pandas

Clés

  • Les enregistrements d'une base ont des identifiants uniques, ou clés

Données d'un répertoire de cours, avec la colonne instructor_id en surbrillance. Les valeurs sont des entiers à 9 chiffres.

Ingestion de données rationalisée avec pandas

Clés

Table Professor, avec la colonne id en surbrillance. Les valeurs sont des entiers à 9 chiffres comme les instructor_ids du répertoire de cours.

Ingestion de données rationalisée avec pandas

Clés

Données du répertoire de cours avec la colonne des noms des professeur·e·s ajoutée par jointure

Ingestion de données rationalisée avec pandas

Joindre des tables

Données météo, avec la colonne date en surbrillance

Données d'appels 311, avec la colonne created_date en surbrillance

Ingestion de données rationalisée avec pandas

Joindre des tables

SELECT *
  FROM hpd311calls
Ingestion de données rationalisée avec pandas

Joindre des tables

SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date;
  • Utilisez la notation pointée (table.column) avec plusieurs tables
  • Par défaut, la jointure ne renvoie que les enregistrements dont les clés figurent dans les deux tables
  • Assurez-vous que les clés de jointure ont le même type de données, sinon rien ne correspondra
Ingestion de données rationalisée avec pandas

Joindre et filtrer

/* Obtenir seulement les appels sur le chauffage/eau chaude et joindre les données météo */
SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date
 WHERE hpd311calls.complaint_type = 'HEAT/HOT WATER';
Ingestion de données rationalisée avec pandas

Joindre et regrouper

/* Obtenir le nombre d'appels par arrondissement */
SELECT hpd311calls.borough, 
         COUNT(*)
  FROM hpd311calls
 GROUP BY hpd311calls.borough;
Ingestion de données rationalisée avec pandas

Joindre et regrouper

/* Obtenir le nombre d'appels par arrondissement
   et joindre la population et le nombre de logements */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
 GROUP BY hpd311calls.borough
Ingestion de données rationalisée avec pandas

Joindre et regrouper

/* Obtenir le nombre d'appels par arrondissement
   et joindre la population et le nombre de logements */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
       JOIN boro_census 
       ON hpd311calls.borough = boro_census.borough
 GROUP BY hpd311calls.borough;
Ingestion de données rationalisée avec pandas
query = """SELECT hpd311calls.borough, 
                    COUNT(*), 
                    boro_census.total_population,
                    boro_census.housing_units
             FROM hpd311calls
                  JOIN boro_census 
                  ON hpd311calls.borough = boro_census.borough
            GROUP BY hpd311calls.borough;"""

call_counts = pd.read_sql(query, engine)
print(call_counts)
         borough  COUNT(*)  total_population  housing_units
0          BRONX     29874           1455846         524488
1       BROOKLYN     31722           2635121        1028383
2      MANHATTAN     20196           1653877         872645
3         QUEENS     11384           2339280         850422
4  STATEN ISLAND      1322            475948         179179
Ingestion de données rationalisée avec pandas

Révision

  • Ordre des mots-clés SQL
    • SELECT
    • FROM
    • JOIN
    • WHERE
    • GROUP BY
Ingestion de données rationalisée avec pandas

Passons à la pratique !

Ingestion de données rationalisée avec pandas

Preparing Video For Download...