- 카테고리:
윈도우 함수 (일반)
INTERPOLATE_BFILL, INTERPOLATE_FFILL, INTERPOLATE_LINEAR¶
주변 값을 기반으로 누락된 값 사이를 채우기 위해 시계열 데이터 세트의 행을 업데이트합니다.
다음과 같은 보간 윈도우 함수를 호출할 수 있습니다.
INTERPOLATE_BFILL: 다음으로 관찰된 행을 기준으로 행 공백을 채웁니다.
INTERPOLATE_FFILL: 이전에 관찰된 행을 기반으로 행 공백을 채웁니다.
INTERPOLATE_LINEAR: 이전 값과 다음 값의 선형 보간을 기반으로 행 공백을 채웁니다. 이 함수는 숫자 값만 지원합니다.
이러한 함수는 :doc:`윈도우 함수 구문</sql-reference/functions-window-syntax>`이 동일합니다. 명시적 윈도우 프레임은 지원하지 않습니다.
구문¶
INTERPOLATE_BFILL( <expr> )
OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )
INTERPOLATE_FFILL( <expr> )
OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )
INTERPOLATE_LINEAR( <expr> )
OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )
인자¶
expr공백을 채우려는 열을 정의하는 표현식입니다.
INTERPOLATE_LINEAR 입력 표현식은 숫자 데이터 타입이어야 합니다.
INTERPOLATE_BFILL 및 INTERPOLATE_FFILL 입력 표현식은 :doc:`지리 공간 데이터 타입</sql-reference/data-types-geospatial>`을 지원하지 않습니다.
매개 변수¶
OVER표준 윈도우 함수 OVER 절입니다. 윈도우 함수 구문 및 사용법 섹션을 참조하십시오. 보간 함수의 경우, PARTITION BY 절은 선택 사항이지만, ORDER BY 절은 필수입니다. 명시적 윈도우 프레임을 지정할 수 없습니다.
INTERPOLATE_LINEAR 함수는 하나의 ORDER BY 표현식만 포함할 수 있으며, 이는 숫자, DATE 또는 TIMESTAMP 표현식(모든 TIMESTAMP 베리언트)이여야 합니다.
반환¶
이러한 함수는 입력 표현식의 데이터 타입과 동일한 데이터 타입을 반환합니다.
예¶
다음 예제에서는 간단한 쿼리에서 보간 함수를 사용하는 방법을 보여줍니다.
두 개의 보간 함수가 있는 예제¶
다음 예제에서는 동일한 쿼리에서 리샘플링된 temperature 값 및 두 개의 서로 다른 보간된 temperature 값을 반환합니다. (테이블 ``march_temps_every_five_mins``는 이 항목의 앞부분에서 만들었습니다.)
SELECT observed,
temperature,
INTERPOLATE_BFILL(temperature) OVER (PARTITION BY city, county ORDER BY observed) bfill_temp,
INTERPOLATE_FFILL(temperature) OVER (PARTITION BY city, county ORDER BY observed) ffill_temp,
city,
county
FROM march_temps_every_five_mins
ORDER BY observed;
+-------------------------+-------------+------------+------------+------------------+----------------+
| OBSERVED | TEMPERATURE | BFILL_TEMP | FFILL_TEMP | CITY | COUNTY |
|-------------------------+-------------+------------+------------+------------------+----------------|
| 2025-03-15 09:45:00.000 | NULL | 48 | NULL | Big Bear City | San Bernardino |
| 2025-03-15 09:49:00.000 | 48 | 48 | 48 | Big Bear City | San Bernardino |
| 2025-03-15 09:50:00.000 | NULL | 49 | 48 | Big Bear City | San Bernardino |
| 2025-03-15 09:50:00.000 | 44 | 44 | 44 | South Lake Tahoe | El Dorado |
| 2025-03-15 09:55:00.000 | 49 | 49 | 49 | Big Bear City | San Bernardino |
| 2025-03-15 09:55:00.000 | 46 | 46 | 46 | South Lake Tahoe | El Dorado |
| 2025-03-15 10:00:00.000 | NULL | 51 | 49 | Big Bear City | San Bernardino |
| 2025-03-15 10:00:00.000 | NULL | 52 | 46 | South Lake Tahoe | El Dorado |
| 2025-03-15 10:05:00.000 | NULL | 51 | 49 | Big Bear City | San Bernardino |
| 2025-03-15 10:05:00.000 | NULL | 52 | 46 | South Lake Tahoe | El Dorado |
| 2025-03-15 10:10:00.000 | 51 | 51 | 51 | Big Bear City | San Bernardino |
| 2025-03-15 10:10:00.000 | 52 | 52 | 52 | South Lake Tahoe | El Dorado |
| 2025-03-15 10:15:00.000 | NULL | 54 | 51 | Big Bear City | San Bernardino |
| 2025-03-15 10:15:00.000 | 54 | 54 | 54 | South Lake Tahoe | El Dorado |
| 2025-03-15 10:18:00.000 | 54 | 54 | 54 | Big Bear City | San Bernardino |
+-------------------------+-------------+------------+------------+------------------+----------------+
bfill_temp 열은 모든 행에 대해 의미 있는 값을 반환하지만, ``ffill_temp``는 첫 번째 행에 대해 NULL을 반환합니다. INTERPOLATE_FFILL 함수가 NULL 이외의 결과를 반환하려면 이전 값이 필요합니다. INTERPOLATE_BFILL 함수에는 다음 값만 필요합니다.
명시적 윈도우 프레임에 대해 예상되는 오류의 예제¶
보간 함수는 명시적 윈도우 프레임을 지원하지 않으므로 다음 쿼리는 오류를 반환합니다.
SELECT observed, temperature,
INTERPOLATE_BFILL(temperature)
OVER (PARTITION BY city, county ORDER BY observed ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) bfill_temp,
city, county
FROM march_temps_every_five_mins
ORDER BY observed;
002303 (0A000): SQL compilation error: error line 1 at position 111
Sliding window frame unsupported for function INTERPOLATE_BFILL