Filtragem de dados
Agora que você já entende um pouco de SQL, é mais fácil falar das operações análogas usando DataFrames do Spark.
Vamos dar uma olhada no método .filter()
. Como você deve suspeitar, essa é a contraparte do Spark da cláusula WHERE
do SQL. O método .filter()
recebe uma expressão que seguiria a cláusula WHERE
de uma expressão SQL como uma string ou uma coluna do Spark de valores booleanos (True
/False
).
Como exemplo, as duas expressões a seguir geram o mesmo resultado:
flights.filter("air_time > 120").show()
flights.filter(flights.air_time > 120).show()
Observe que, no primeiro caso, passamos uma string para .filter()
. Em SQL, escreveríamos essa tarefa de filtragem como SELECT * FROM flights WHERE air_time > 120
. O .filter()
do Spark aceita qualquer expressão que possa ser incluída na cláusula WHERE
de uma consulta SQL (neste caso, "air_time > 120"
), desde que seja passada como uma string.
Observe que, nesse caso, não fazemos referência ao nome da tabela na string, como não faríamos na solicitação SQL.
No segundo caso, na verdade passamos uma coluna de valores booleanos para .filter()
. Lembre-se de que flights.air_time > 120
retorna uma coluna de valores booleanos que tem True
no lugar dos registros de flights.air_time
que estão acima de 120, e False
caso contrário.
Lembre-se de que uma SparkSession
chamada spark
já está em seu espaço de trabalho, junto com o DataFrame flights
do Spark.
Este exercício faz parte do curso
Introdução ao PySpark
Instruções de exercício
Use o método
.filter()
para encontrar todos os voos com mais de 1.000 milhas nos dois sentidos:Primeiro, passe uma string SQL para
.filter()
que verifica se a distância é maior que 1000. Salve o resultado comolong_flights1
.Em seguida, passe uma coluna de valores booleanos para
.filter()
que faz a mesma verificação. Salve o resultado comolong_flights2
.
Use
.show()
para imprimir os cabeçalhos de ambos os DataFrames e verifique se são realmente iguais!
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# Filter flights by passing a string
long_flights1 = ____.____("____ > ____")
# Filter flights by passing a column of boolean values
long_flights2 = ____.____(____.____ > ____)
# Print the data to check they're equal
____.____()
____.____()