- カテゴリ:
ウィンドウ関数 (一般)
INTERPOLATE_BFILL、INTERPOLATE_FFILL、INTERPOLATE_LINEAR¶
時系列データセットの行を更新し、周辺の値に基づいて欠損値のギャップを埋めます。
次の補間ウィンドウ関数を呼び出すことができます。
INTERPOLATE_BFILL:次の監視された行に基づいて行のギャップを埋めます。
INTERPOLATE_FFILL:以前に観察された行に基づいて行のギャップを埋めます。
INTERPOLATE_LINEAR:前の値と次の値の線形補間に基づいて行のギャップを埋めます。この関数は数値のみをサポートします。
これらの関数には同じ ウィンドウ関数構文 があります。明示的なウィンドウフレームはサポートしていません。
構文¶
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 入力式は 地理空間データ型 をサポートしていません。
パラメーター¶
OVER標準ウィンドウ関数 OVER 句。ウィンドウ関数の構文と使用法 をご参照ください。補間関数の場合、PARTITIONBY 句はオプションですが、ORDERBY 句は必須です。明示的なウィンドウフレームを指定することはできません。
INTERPOLATE_LINEAR 関数は1つの ORDERBY 式のみを持つことができ、それは数値、DATE または TIMESTAMP 式(すべての TIMESTAMP バリアントを含む)でなければなりません。
戻り値¶
これらの関数は、入力式のデータ型と同じデータ型を返します。
例¶
次の例では、単純なクエリで補間関数を使用する方法を示します。
2つの補間関数の例¶
次の例では、同じクエリ内の再サンプリングされた temperature 値と2つの異なる補間 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