1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Úvod do Spark SQL v Pythonu

Connected

cvičení

Nejčastější 3-tice podle kapitoly

Teď použijeme dotaz jako poddotaz v rámci většího dotazu. Spark SQL podporuje pokročilé funkce SQL. Dříve ses naučil/a, jak najít nejčastější slovní sekvence v celé knize o 12 kapitolách. Nyní získáš nejčastější 3-tici pro každou z těchto 12 kapitol. K tomu využiješ okenní funkci, která pro každou skupinu vrátí první řádek.

Máš k dispozici tabulku se sloupci word, id, chapter.

  1. Sloupec chapter odpovídá číslu kapitoly.
  2. Sloupec word odpovídá jednomu slovu v dokumentu.
  3. Sloupec id odpovídá pozici slova v dokumentu.

Máme také následující dotaz:

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

Z této tabulky lze určit, že první řádek požadovaného výsledku bude:

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

Tvým úkolem je použít subquery jako poddotaz v rámci většího dotazu a získat nejčastější 3-tici pro každou kapitolu. Výsledek bude mít stejné schéma, ale s jedním řádkem na kapitolu. K získání čísla řádku v rámci každé kapitoly použij ROW_NUMBER().

Pokyny

100 XP
  • Získej nejčastější 3-tici pro každou kapitolu.