ComeçarComece de graça

Filtragem de dados

Agora que você já tem um pouco de conhecimento em SQL, fica mais fácil falar sobre as operações análogas usando DataFrames do Spark.

Vamos dar uma olhada no método .filter(). Como você deve imaginar, essa é a versão do Spark equivalente à cláusulaWHERE do SQL. O.filter()método aceita como entrada uma expressão que viria logo após aWHEREcláusula de uma expressão SQL, na forma de uma string, ou uma coluna do Spark com 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 da seguinte formaSELECT * FROM flights WHERE air_time > 120: Spark.filter()aceita qualquer expressão que possa ser usada na WHEREcláusula de uma consulta SQL (neste caso, "air_time > 120"), desde que seja passada como uma string. Observa que, nesse caso, não mencionamos o nome da tabela na string — assim como não faríamos na consulta 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

Fundamentos do PySpark

Ver curso

Instruções do exercício

  • Use o método .filter() para encontrar todos os voos com mais de 1.000 milhas nos dois sentidos:

    • Primeiro, passa uma string SQL que.filter() verifique 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 completando 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 o código