brunch

You can make anything
by writing

C.S.Lewis

by Sand Apr 07. 2022

Pyspark Window 함수 이해하기

데이터 값에 순위를 주고 싶을 때 

Pyspark 의 Window 함수는 그룹 된 행들을 대상으로 작업을 수행헤 각 그룹된 행들에 대한 하나의 값을 반환한다. 주로 데이터프레임의 순위 (rank)나 행 순서 (row number) 를 구할 때 사용된다. 자주 사용하는 만큼 보다 더 확실히 이해하고자 여기에 정리해보고자 한다. 


늘 그렇듯 마이 스파크 베스트프렌드이신 spark by example을 참고했다 (출처: https://sparkbyexamples.com/pyspark/pyspark-window-functions/


선행작업: Window.PartitionBy(칼럼명)


그룹된 행들을 대상으로 실행하는 함수인만큼 우선 Window.PartitionBy()를 통해 행들을 특정 기준에 따라 묶는 기준이 선행되어야 한다. 


만약 순위를 주는 작업이라면 어떤 기준에 따라 순위를 부여할지도 정해야 한다. 

Window.PartitionBy(칼럼명).orderBy(기준)



Window 함수들 


여태 작업하면서 다음과 같이 window 값을 주로 사용해왔다. 주로 1번을 많이 썼는데 오늘 처음으로 2번과 같은 코드도 작성할 기회가 생겼다. 


1. 파티션된 값에 따라 순위를 붙이고 싶을 때: 

w = Window.PartitionBy("col").orderBy(F.col("col").asc())

DataFrame = DataFrame.withColumn("rank", dense_rank().over(w))


2. 파티션된 값에 따라 가장 첫 번째 값을 파티션된 그룹에 붙이고 싶을 때:

w = Window.PartitionBy("col").orderBy(F.col("col").asc())

DataFrame = DataFrame.withColumn("name", F.first().over(w))


기록 끝. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari