MulaiMulai sekarang secara gratis

3-tuple tersering per bab

Sekarang kita akan menggunakan sebuah kueri sebagai subkueri di dalam kueri yang lebih besar. Spark SQL mendukung fitur-fitur lanjutan SQL. Sebelumnya Anda telah mempelajari cara menemukan urutan kata yang paling umum pada keseluruhan buku yang memiliki 12 bab. Sekarang Anda akan memperoleh 3-tuple yang paling sering muncul untuk masing-masing dari 12 bab. Anda akan melakukannya dengan menggunakan window function untuk mengambil baris teratas per grup.

Terdapat sebuah tabel dengan kolom word, id, chapter.

  1. Kolom chapter berisi nomor bab.
  2. Kolom word berisi satu kata dalam dokumen.
  3. Kolom id berisi posisi kata dalam dokumen.

Kita juga memiliki kueri berikut:

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

Dari tabel ini Anda dapat menentukan bahwa baris pertama dari hasil yang diinginkan adalah:

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

Tugas Anda adalah menggunakan subquery sebagai subkueri dalam kueri yang lebih besar untuk memperoleh 3-tuple tersering per bab. Hasil yang diinginkan akan memiliki skema yang sama, tetapi hanya satu baris per bab. Gunakan ROW_NUMBER() untuk memperoleh nomor baris per baris per bab.

Latihan ini adalah bagian dari kursus

Pengantar Spark SQL dalam Python

Lihat Kursus

Petunjuk latihan

  • Dapatkan 3-tuple tersering per bab.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

#   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()
Edit dan Jalankan Kode