Kom igångKom igång gratis

Avancerat urval II: SQL

Som nämnts tidigare konverterar sparklyr din dplyr-kod till SQL innan den skickas till Spark. Det är oftast precis vad du vill. Du kan dock också skriva rå SQL för att utföra samma uppgift. I de flesta fall är det onödigt krångligt – koden är svårare att skriva och felsöka. Men om du vill att koden ska vara portabel – det vill säga användbar även utanför R – kan det vara praktiskt. Ett vanligt arbetssätt är till exempel att använda sparklyr för att experimentera med databearbetning och sedan växla till rå SQL i en produktionsmiljö. Genom att skriva rå SQL från början kan du enkelt kopiera och klistra in dina frågor när du går över till produktion.

SQL-frågor skrivs som strängar och skickas till dbGetQuery() från DBI-paketet. Mönstret ser ut så här:

query <- "SELECT col1, col2 FROM some_data WHERE some_condition"
a_data.frame <- dbGetQuery(spark_conn, query)

Observera att till skillnad från dplyr-koden du har skrivit, kommer dbGetQuery() alltid att köra frågan och returnera resultaten till R omedelbart. Om du vill fördröja returen av data kan du använda dbSendQuery() för att köra frågan och sedan dbFetch() för att hämta resultaten. Det är mer avancerad användning som inte tas upp här. Notera också att DBI-funktioner returnerar data.frames i stället för tibbles, eftersom DBI är ett lägre-nivå-paket.

Vill du lära dig mer om att skriva SQL-kod? Ta kursen Introduction to SQL.

Den här övningen är en del av kursen

Introduktion till Spark med sparklyr i R

Visa kurs

Övningsinstruktioner

En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till spårmetadata lagrad i Spark har fördefinieras som track_metadata_tbl och kan nås i SQL-frågor via track_metadata.

  • Fyll i frågan för att välja alla kolumner från Spark-dataramen track_metadata där year är mindre än 1935 och duration är större än 300 sekunder.
  • Anropa dbGetQuery() för att köra frågan, tilldela resultaten till results och visa sedan utdatan.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# Write SQL query
query <- "SELECT ___ FROM ___ WHERE ___ AND ___"

# Run the query
(results <- ___(___, ___))
Redigera och kör kod