- Catégories :
Fonctions de fenêtre (Général)
INTERPOLATE_BFILL, INTERPOLATE_FFILL, INTERPOLATE_LINEAR¶
Met à jour les lignes d’un ensemble de données de séries chronologiques pour remplir les valeurs manquantes en fonction des valeurs environnantes.
Vous pouvez appeler les fonctions de fenêtre d’interpolation suivantes :
INTERPOLATE_BFILL : Remplissez les lignes en fonction de la ligne suivante observée.
INTERPOLATE_FFILL : Remplissez les lignes en fonction de la ligne précédente observée.
INTERPOLATE_LINEAR : Remplissez les lignes en fonction de l’interpolation linéaire des valeurs précédentes et suivantes. Cette fonction ne prend en charge que les valeurs numériques.
Ces fonctions ont la même syntaxe de fonction de fenêtre. Elles ne prennent pas en charge les cadres de fenêtres explicites.
Syntaxe¶
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 } ] )
Arguments¶
exprExpression qui définit la colonne que vous souhaitez remplir.
L’expression d’entrée INTERPOLATE_LINEAR doit être un type de données numérique.
Les expressions d’entrée INTERPOLATE_BFILL et INTERPOLATE_FFILL ne prennent pas en charge les types de données géospatiales.
Paramètres¶
OVERClause OVER de fonction de fenêtre standard. Voir Syntaxe et utilisation des fonctions de fenêtre. Pour les fonctions d’interpolation, la clause PARTITION BY est facultative, mais la clause ORDER BY est obligatoire. Vous ne pouvez pas spécifier un cadre de fenêtre explicite.
La fonction INTERPOLATE_LINEAR ne peut avoir qu’une seule expression ORDER BY, et doit être une expression numérique, DATE, ou TIMESTAMP (y compris toutes les variantes TIMESTAMP).
Renvoie¶
Ces fonctions renvoient le même type de données que le type de données de l’expression d’entrée.
Exemples¶
Les exemples suivants montrent comment utiliser les fonctions d’interpolation dans des requêtes simples.
Exemple avec deux fonctions d’interpolation¶
L’exemple suivant renvoie des valeurs temperature rééchantillonnées et deux valeurs temperature interpolées dans la même requête. (La table march_temps_every_five_mins a été créée plus tôt dans cette rubrique).
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 |
+-------------------------+-------------+------------+------------+------------------+----------------+
La colonne bfill_temp renvoie une valeur significative pour chaque ligne, mais ffill_temp renvoie NULL pour la première ligne. La fonction INTERPOLATE_FFILL requiert une valeur précédente pour renvoyer un résultat non NULL. La fonction INTERPOLATE_BFILL ne nécessite qu’une valeur suivante.
Exemple d’une erreur attendue pour un cadre de fenêtre explicite¶
La requête suivante renvoie une erreur car les fonctions d’interpolation ne prennent pas en charge les cadres de fenêtres explicites :
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