ComeçarComece gratuitamente

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

Ver Curso

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 como long_flights1.

    • Em seguida, passe uma coluna de valores booleanos para .filter() que faz a mesma verificação. Salve o resultado como long_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
____.____()
____.____()
Editar e executar código