Agregación, paso a paso
Usar notación por puntos o SQL es una preferencia personal. Sin embargo, como se mostró en el ejercicio en vídeo, hay casos en los que SQL es más simple. También, como viste en la lección en vídeo, hay casos en los que la notación por puntos da un resultado contraintuitivo, por ejemplo cuando una segunda agregación sobre una columna pisa una agregación anterior sobre esa misma columna. Como se menciona en el vídeo, la sintaxis básica de agg en PySpark solo puede hacer una agregación por columna cada vez.
Los siguientes ejercicios calculan la hora de la primera salida para cada línea de tren.
Las dos primeras consultas coinciden. Sin embargo, las dos siguientes no. ¿Puedes averiguar por qué?
Este ejercicio forma parte del curso
Introducción a Spark SQL en Python
Instrucciones del ejercicio
- Rellena los huecos para que el primer par de comandos muestre el mismo resultado.
- El cuarto resultado, llamado
result, es un intento ingenuo de replicar la línea anterior. Sin embargo, es contraintuitivamente diferente. ¿En qué? Rellena el hueco para imprimir el nombre de la segunda columna deresult.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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[____])