• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 20/10/2020

N'oubliez pas l'agrégation !

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Oh non, il ne faut surtout pas oublier l’agrégation !  Pourquoi ? Parce que l'agrégation n'est pas une opération faisant partie de l'algèbre relationnelle. 

Néanmoins, elle est extrêmement importante ! ;)

A quoi sert l'agrégation ?

On utilise l'agrégation lorsque l'on veut calculer un résultat qui porte sur plusieurs lignes d'une table. On dit que l'on agrège ces lignes, c'est-à-dire que l'on forme des agrégats pour effectuer sur eux une opération.

Par exemple, si je pose la question suivante...

Quelle est la masse moyenne de chaque couleur de pomme ?

... il s'agit de calculer une valeur pour chaque agrégat :

  • une valeur (la masse moyenne) qui porte sur plusieurs pommes (toutes les pommes vertes)

  • la valeur de la masse moyenne portant sur les pommes jaunes

  • la valeur de la masse moyenne portant sur les pommes rouges

  • etc.

Vous aurez compris qu'il y aura autant de valeurs de masse moyenne calculées que de couleurs de pommes.

Vous sentez déjà l'importance de l'agrégation, n'est-ce-pas ?

Pour faire une belle agrégation, il faut deux étapes, et donc deux ingrédients :

  1. un groupe d'attributs de partitionnement,

  2. une (ou des) fonction(s) d'agrégation.

Les deux éléments qui constituent l'agrégation

Le partitionnement

Si je choisis de partitionner mes pommes par couleur, cela signifie que je veux former des groupes de pommes (on appelle ces groupes des agrégats), toutes les pommes d'un même groupe devant avoir la même couleur.

Je peux également partitionner sur plusieurs attributs. Par exemple, disons que j'ajoute à ma table pomme un attribut abîmée, attribut booléen qui vaut VRAI si la pomme est abîmée. Je peux partitionner mes pommes par les attributs couleur et abîmée. Ainsi, au sein d'un même groupe de pommes, la couleur de celles-ci et la valeur de leur attribut abîmée seront identiques :

Partitionnemennt selon les attributs [ couleur, abîmée ]
Partitionnement selon les attributs [ couleur, abîmée ]

La fonction d'agrégation

Une fois les agrégats formés, il faut bien en faire quelque chose !

C'est là qu'intervient la fonction d'agrégation. :zorro: Son rôle est de prendre en entrée un groupe de plusieurs lignes, d'effectuer un calcul sur celles-ci, puis de retourner une unique valeur pour chacun des groupes.

Par exemple, on peut appliquer la fonction qui calculera la masse moyenne de chaque groupe de pommes : d'abord le groupe des pommes jaunes abîmées, puis le groupe des pommes jaunes non abîmées, etc.

La fonction d'agrégation MOYENNE qui s'applique à chacun des agrégats
La fonction d'agrégation MOYENNE qui s'applique à chacun des agrégats

En général, une fonction d'agrégation prend en entrée une liste et renvoie une unique valeur. Par exemple, pour calculer le prix moyen au kilo des pommes, la fonction moyenne prendra en entrée la liste des masses des pommes de l'agrégat, et retournera la moyenne de cette liste. C'est ce qui se passe sur l'image ci-dessus.

Le résultat

Voici donc le résultat d'une agrégation avec partitionnement selon les attributs couleur et abîmée, en appliquant deux fonctions d'agrégation :

  1. la fonction moyenne (en anglais average, notée avg) sur la masse des pommes,

  2. la fonction compter (en anglais count), qui compte le nombre de pommes de l'agrégat.

Le résultat de l'agrégation
Le résultat de l'agrégation

Grâce à ce résultat, on peut dire que la masse moyenne des 2 pommes jaunes non abîmées est de 151.5 grammes. C'est la classe, non ? :soleil:

Aller (beaucoup) plus loin : le Map Reduce

Dans cette section, on va aller beaucoup plus loin que nécessaire ! On anticipe, pour le jour où vous serez confronté au problème du Big Data, dans lequel les données à traiter sont très volumineuses.

Lorsque les données sont trop volumineuses, on demande souvent à plusieurs ordinateurs (des serveurs) de les traiter en parallèle, pour que cela aille plus vite ! Seulement, il faut bien un serveur qui se charge de coordonner les autres, et de répartir les données de manière intelligente vers les serveurs parallélisés. L'une des manières de faire, c'est d'utiliser la technique du Map Reduce.

En Map Reduce, on découpe l'information en petits morceaux. Chacune de ces parties contient une clé et une valeur. On définit ensuite une fonction appelée reduce. Au moment de l'exécution du calcul, tous les morceaux d'informations qui ont la même clé seront dirigés vers un même serveur parallélisé. Ce serveur applique ensuite la fonction reduce à toutes les valeurs des morceaux qui lui sont parvenues avec la même clé.

Sachez que le Map Reduce fonctionne exactement de la même manière qu'une agrégation, selon cette correspondance :

Map Reduce

Agrégation

Morceau d'information

1 ligne d'une table

Clé

Attributs de partitionnement

Valeur

Attributs envoyés à la fonction d'agrégation

Fonction Reduce

Fonction d'agrégation

Jetez à nouveau un coup d’œil sur le graphique ci-dessus qui explique le partitionnement selon les attributs. La partie droite de ce graphique montre une table fractionnée en plusieurs parties. En Map Reduce, chacune de ces parties est envoyée sur un serveur différent. Ensuite, chaque serveur appliquera la fonction reduce, qui est, par exemple, la fonction moyenne.

C'est aussi simple que cela !

En résumé

  • Les deux composantes de l'agrégation sont :

    • les attributs de partitionnement,

    • la/les fonction(s) d'agrégation.

  • Une fonction d'agrégation basique prend plusieurs valeurs en entrée, et renvoie une unique valeur.

  • Le résultat d'une agrégation donne une table avec moins de lignes (autant de lignes que d'agrégats)...

  • ... et ces lignes ne représentent pas les mêmes objets.

Exemple de certificat de réussite
Exemple de certificat de réussite