LAST_VALUE 함수
LAST_VALUE 함수
Apache Pinot의 LAST_VALUE 윈도우 함수는 윈도우 안의 마지막 행에서 값을 반환해요. 파티션별로 마지막에 오는 값을 알고 싶거나, IGNORE NULLS로 누락 값을 채워 넣고 싶을 때 유용해요.
출처: 문서
본문
LAST_VALUE 함수는 윈도우 안의 마지막 행에서 값을 반환하는 윈도우 함수예요.
시그니처
LAST_VALUE(expression) [IGNORE NULLS | RESPECT NULLS] OVER ()
기본 동작은 RESPECT NULLS예요. IGNORE NULLS 옵션을 지정하면 함수는 각 윈도우에서 마지막 null이 아닌 행을 반환해요 (그런 행이 없으면 null).
예시 1
이 예시는 선수의 마지막 해에 출전한 경기 수를 계산해요.
SELECT playerName,
yearID,
numberOfGames,
LAST_VALUE(numberOfGames) OVER (
PARTITION BY playerName
ORDER BY yearID ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
FROM baseballStats;
출력:
| playerName | yearID | numberOfGames | EXPR$3 |
|---|---|---|---|
| p1 | 2000 | 10 | 12 |
| p1 | 2001 | 15 | 12 |
| p1 | 2002 | 12 | 12 |
| p2 | 1990 | 120 | 124 |
| p2 | 1991 | 124 | 124 |
| p3 | 2006 | 30 | 15 |
| p3 | 2007 | 25 | 15 |
| p3 | 2009 | 20 | 15 |
| p3 | 2010 | 15 | 15 |
예시 2
이 예시는 IGNORE NULLS 옵션을 이용해 (null로 표현되는) 누락 값들을 "gapfill"로 채워요. 여기서는 기본 윈도우 프레임인 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW를 사용한다는 점을 주의하세요.
SELECT ts,
reading,
LAST_VALUE(reading) IGNORE NULLS OVER (
ORDER BY ts
) AS imputedReading
FROM telemetryData;
출력:
| ts | reading | imputedReading |
|---|---|---|
| 2014-01-01 00:00:00.0 | 10.0 | 10.0 |
| 2014-01-01 00:30:00.0 | 12.0 | 12.0 |
| 2014-01-01 01:00:00.0 | 12.5 | 12.5 |
| 2014-01-01 01:30:00.0 | null | 12.5 |
| 2014-01-01 02:00:00.0 | null | 12.5 |
| 2014-01-01 02:30:00.0 | 11.5 | 11.5 |
| 2014-01-01 03:00:00.0 | null | 11.5 |
| 2014-01-01 03:30:00.0 | 11.0 | 11.0 |