CommencerCommencer gratuitement

3-uplets les plus fréquents par chapitre

Nous allons maintenant utiliser une requête comme sous-requête dans une requête plus large. Spark SQL prend en charge des fonctionnalités avancées de SQL. Vous avez appris précédemment à trouver les séquences de mots les plus courantes sur l’ensemble d’un livre comportant 12 chapitres. Vous allez maintenant obtenir le 3-uplet le plus fréquent pour chacun des 12 chapitres. Pour cela, vous utiliserez une fonction de fenêtre afin de récupérer la première ligne par groupe.

Il existe une table avec les colonnes word, id, chapter.

  1. La colonne chapter correspond au numéro d’un chapitre.
  2. La colonne word correspond à un mot isolé du document.
  3. La colonne id correspond à la position du mot dans le document.

Nous avons également la requête suivante :

subquery = """
SELECT chapter, w1, w2, w3, COUNT(*) as count
FROM
(
    SELECT
    chapter,
    word AS w1,
    LEAD(word, 1) OVER(PARTITION BY chapter ORDER BY id ) AS w2,
    LEAD(word, 2) OVER(PARTITION BY chapter ORDER BY id ) AS w3
    FROM text
)
GROUP BY chapter, w1, w2, w3
ORDER BY chapter, count DESC
"""
spark.sql(subquery).show(5)
+-------+---+-----+----+-----+
|chapter| w1|   w2|  w3|count|
+-------+---+-----+----+-----+
|      1| up|   to| the|    6|
|      1|one|   of| the|    6|
|      1| in|front|  of|    5|
|      1| up|  and|down|    5|
|      1| it|  was|   a|    5|
+-------+---+-----+----+-----+
only showing top 5 rows

À partir de ce tableau, vous pouvez déterminer que la première ligne du résultat attendu sera :

+-------+---+-----+----+-----+
|chapter| w1|   w2|  w3|count|
+-------+---+-----+----+-----+
|      1| up|   to| the|    6|
+-------+---+-----+----+-----+

Votre tâche consiste à utiliser subquery comme sous-requête dans une requête plus large pour obtenir le 3-uplet le plus fréquent par chapitre. Le résultat attendu aura le même schéma, mais avec une seule ligne par chapitre. Utilisez ROW_NUMBER() pour obtenir le numéro de ligne par ligne et par chapitre.

Cet exercice fait partie du cours

Introduction à Spark SQL en Python

Afficher le cours

Instructions

  • Récupérez le 3-uplet le plus fréquent par chapitre.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

#   Most frequent 3-tuple per chapter
query = """
SELECT chapter, w1, w2, w3, count FROM
(
  SELECT
  chapter,
  ____() OVER (PARTITION BY chapter ORDER BY ____ DESC) AS row,
  w1, w2, w3, count
  FROM ( %s )
)
WHERE row = ____
ORDER BY chapter ASC
""" % subquery

spark.sql(query).show()
Modifier et exécuter le code