Pemilihan Lanjutan II: SQL
Seperti disebutkan sebelumnya, saat Anda menggunakan antarmuka dplyr, sparklyr mengonversi kode Anda menjadi SQL sebelum meneruskannya ke Spark. Sebagian besar waktu, inilah yang Anda inginkan. Namun, Anda juga dapat menulis SQL mentah untuk menyelesaikan tugas yang sama. Sebagian besar waktu, ini bukan ide yang baik karena kodenya lebih sulit ditulis dan lebih sulit di-debug. Namun, jika Anda ingin kode Anda portabel—yakni juga dapat digunakan di luar R—hal ini bisa berguna. Misalnya, alur kerja yang cukup umum adalah menggunakan sparklyr untuk bereksperimen dengan pemrosesan data, lalu beralih ke SQL mentah di lingkungan produksi. Dengan menulis SQL mentah sejak awal, Anda dapat menyalin dan menempelkan kueri saat berpindah ke produksi.
Kueri SQL ditulis sebagai string, lalu dikirim ke dbGetQuery() dari paket DBI. Polanya sebagai berikut.
query <- "SELECT col1, col2 FROM some_data WHERE some_condition"
a_data.frame <- dbGetQuery(spark_conn, query)
Perhatikan bahwa tidak seperti kode dplyr yang telah Anda tulis, dbGetQuery() akan selalu mengeksekusi kueri dan langsung mengembalikan hasilnya ke R. Jika Anda ingin menunda pengambilan data, Anda dapat menggunakan dbSendQuery() untuk mengeksekusi kueri, lalu dbFetch() untuk mengambil hasilnya. Itu adalah penggunaan tingkat lanjut, tidak dibahas di sini. Perhatikan juga bahwa fungsi DBI mengembalikan data.frame, bukan tibble, karena DBI adalah paket level yang lebih rendah.
Jika Anda ingin mempelajari lebih lanjut tentang menulis kode SQL, ikuti kursus Introduction to SQL.
Latihan ini merupakan bagian dari kursus
Pengantar Spark dengan sparklyr di R
Instruksi latihan
Koneksi Spark telah dibuat untuk Anda sebagai spark_conn. Sebuah tibble yang terhubung ke metadata trek yang disimpan di Spark telah didefinisikan sebelumnya sebagai track_metadata_tbl, dan dapat diakses dalam kueri SQL sebagai track_metadata.
- Lengkapi kueri untuk memilih semua kolom dari data frame Spark
track_metadatadenganyearkurang dari 1935 dandurationlebih besar dari 300 detik. - Panggil
dbGetQuery()untuk mengeksekusi kueri, tetapkan hasilnya keresults, lalu lihat output-nya.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# Write SQL query
query <- "SELECT ___ FROM ___ WHERE ___ AND ___"
# Run the query
(results <- ___(___, ___))