BaşlayınÜcretsiz Başlayın

Bölüm başına en sık görülen 3'lüler

Şimdi bir sorguyu daha büyük bir sorgu içinde alt sorgu olarak kullanacağız. Spark SQL, SQL'in gelişmiş özelliklerini destekler. Daha önce 12 bölümden oluşan bir kitabın tamamında en yaygın kelime dizilerini nasıl bulacağını öğrendin. Şimdi her bir bölüm için en sık görülen 3'lüleri elde edeceksin. Bunu, her grup için en üstteki satırı almak üzere bir window function kullanarak yapacaksın.

word, id, chapter sütunlarına sahip bir tablo var.

  1. chapter sütunu bölüm numarasını ifade eder.
  2. word sütunu belgedeki tek bir kelimeyi ifade eder.
  3. id sütunu belgedeki kelimenin konumunu ifade eder.

Ayrıca şu sorguya sahibiz:

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

Bu tablodan, istenen sonucun ilk satırının şöyle olacağını anlayabilirsin:

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

Görevin, subquery ifadesini daha büyük bir sorguda alt sorgu olarak kullanarak bölüm başına en sık görülen 3'lüyü elde etmek. İstenen sonuç aynı şemaya sahip olacak, ancak bölüm başına bir satır içerecek. Bölüm bazında satır numarasını elde etmek için ROW_NUMBER() kullan.

Bu egzersiz

Python ile Spark SQL'e Giriş

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • Bölüm başına en sık görülen 3'lüyü al.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

#   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()
Kodu Düzenle ve Çalıştır