Agregação, passo a passo
Escolher entre notação por ponto ou SQL é uma preferência pessoal. No entanto, como mostrado no vídeo, há casos em que SQL é mais simples. Também como demonstrado na aula em vídeo, há situações em que a notação por ponto gera um resultado contraintuitivo, como quando uma segunda agregação em uma coluna sobrescreve uma agregação anterior nessa mesma coluna. Como mencionado no vídeo, a sintaxe básica de agg no PySpark só consegue fazer uma única agregação por coluna de cada vez.
Os exercícios a seguir calculam o horário da primeira partida de cada linha de trem.
As duas primeiras consultas coincidem. Já as duas últimas, não. Você consegue descobrir por quê?
Este exercício faz parte do curso
Introdução ao Spark SQL em Python
Instruções do exercício
- Preencha as lacunas para que o primeiro par de comandos exiba resultados idênticos.
- O quarto resultado, chamado
result, é uma tentativa ingênua de replicar a linha anterior. No entanto, ele é diferente de forma contraintuitiva. Como? Preencha a lacuna para imprimir o nome da segunda coluna deresult.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Give the identical result in each command
spark.sql('SELECT train_id, MIN(time) AS start FROM schedule GROUP BY train_id').show()
df.groupBy('____').agg({'time':'____'}).withColumnRenamed('____', 'start').show()
# Print the second column of the result
spark.sql('SELECT train_id, MIN(time), MAX(time) FROM schedule GROUP BY train_id').show()
result = df.groupBy('train_id').agg({'time':'min', 'time':'max'})
result.show()
print(result.columns[____])