집계, 단계별로 살펴보기
점 표기법을 쓸지 SQL을 쓸지는 개인의 선호에 달려 있어요. 하지만 영상 연습에서 보셨듯이, SQL이 더 간단한 경우가 있습니다. 또한 영상 강의에서 시연한 것처럼, 점 표기법은 같은 열에 대해 두 번째 집계를 수행하면 이전 집계를 덮어써서 직관에 반하는 결과가 나올 수도 있어요. 영상에서 언급했듯이, pyspark의 agg 기본 문법은 한 번에 각 열에 대해 단일 집계만 수행할 수 있습니다.
다음 연습에서는 각 노선별 첫 출발 시각을 계산합니다.
첫 두 개의 쿼리는 일치합니다. 하지만 다음 두 개는 일치하지 않아요. 왜 그런지 설명할 수 있나요?
이 연습은 강의의 일부입니다
Python에서 Spark SQL 입문
연습 안내
- 빈칸을 채워서 첫 번째 명령어 쌍이 동일한 결과를 보여주도록 하세요.
- 네 번째 결과인
result는 이전 줄을 순진하게 복제하려는 시도지만, 직관과 다르게 결과가 나옵니다. 어떻게 다른가요? 빈칸을 채워result의 두 번째 열 이름을 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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[____])