- Catégories :
RESAMPLE¶
Renvoie un ensemble de données qui comprend à la fois les lignes d’entrée et les lignes générées pour les points de données manquants, compte tenu d’une granularité temporelle définie par l’utilisateur.
Syntaxe¶
Paramètres requis¶
FROM object_referenceSpécifie le nom d’une table ou d’une autre référence d’objet contenant l’ensemble des données d’entrée, tel qu’une sous-requête. Pour plus d’informations sur les références des objets, consultez FROM.
USING time_series_columnSpécifie la colonne qui contient les valeurs temporelles des séries temporelles. La colonne doit être un Type de données de date et d’heure ou un type de données numériques. Par exemple, les valeurs d’horodatage UNIX peuvent être stockées dans les colonnes NUMBER(38,0), où
1743447600est équivalent à2025-3-31 12:00:00.INCREMENT BY time_series_constantSpécifie une constante INTERVAL ou une constante numérique, selon le type de données de la colonne USING. Cette constante représente la largeur de chaque intervalle de temps. Toutes les tranches sont alignées par rapport au 1er janvier 1970 à minuit (
1970-01-01 00:00:00). La fonction TIME_SLICE utilise le même alignement ; pour plus d’informations, voir les notes sur l’utilisation de TIME_SLICE <label-time_slice_usage_notes>.Lorsque le paramètre USING spécifie une colonne de date ou d’heure, l’expression INCREMENT BY doit être une constante INTERVAL.
Lorsque le paramètre USING spécifie une colonne numérique, l’expression INCREMENT BY doit également être numérique.
Le point de départ dune série temporelle générée est basé sur l’heure minimal de la
time_series_constant.Si cette constante est une constante numérique, elle doit être positive (supérieure à 0).
Paramètres facultatifs¶
[ AS ] alias_nameSpécifie un nom alternatif pour la référence de l’objet. L’alias peut être utilisé dans n’importe quelle autre sous-clause à l’intérieur de la clause FROM. Les noms d’alias doivent suivre les règles de Identificateurs d’objet.
PARTITION BY partition_columnPartitionne le jeu de résultats sur une ou plusieurs colonnes d’entrée et génère de nouvelles lignes dans chaque partition.
METADATA_COLUMNS {function} [ [ AS ] {alias_name} ]Ajoute une ou plusieurs colonnes de métadonnées au jeu de résultats rééchantillonné. Pour ajouter les colonnes, appelez une ou les deux fonctions suivantes :
IS_GENERATED()Ajoute une colonne
is_generatedau jeu de résultats qui indique quelles lignes sont nouvelles (générées par l’opération RESAMPLE) et quelles lignes existaient déjà.BUCKET_START()Ajoute une colonne
bucket_startau jeu de résultats. Cette colonne renvoie la valeur qui marque le début du compartiment actuel ou de l’intervalle que l’opération RESAMPLE produit, en fonction des valeurs de la colonne spécifiée dans la clause USING. Vous pouvez utiliser la colonne BUCKET_START pour identifier à quel intervalle appartient une ligne particulière après le rééchantillonnage.
Si vous spécifiez les deux colonnes de métadonnées, séparez-les par une virgule.
Les colonnes générées peuvent avoir des alias. Les noms d’alias doivent suivre les règles de Identificateurs d’objet.
Notes sur l’utilisation¶
Une constante INTERVAL dans la clause INCREMENT BY doit remplir les conditions suivantes :
La constante doit être égale ou supérieure à une
second. Les unités plus petites (millisecond,microsecond,nanosecond) ne sont pas prises en charge.Lorsque la colonne USING est un type de données DATE, vous ne pouvez pas spécifier une unité dans l’intervalle qui est plus granulaire que
day(hour,minute,second). Par exemple, les constantes'INTERVAL 1 day, 2 hours'et'INTERVAL 25 hours'ne sont pas autorisées.Pour éviter toute ambiguïté, certaines parties de date ne peuvent pas être mélangées. Les parties de date prises en charge se répartissent en trois groupes discrets :
year,quarter,monthweekday,hour,minute,second
Par exemple, les intervalles suivants, qui empiètent sur plusieurs groupes, ne sont pas autorisés :
INTERVAL '1 week, 3 days'INTERVAL '2 weeks, 12 hours'INTERVAL '3 months, 1 week'
En ce qui concerne les jointures, la construction RESAMPLE fonctionne de la même manière que la construction SAMPLE / TABLESAMPLE. Le rééchantillonnage s’applique à une seule table, pas à toutes les tables précédentes ni à l’expression entière antérieure à la clause RESAMPLE. Pour rééchantillonner le résultat dune jointure, utilisez une sous-requête pour la jointure, puis rééchantillonnez la table résultante. Voir Échantillonnage avec jointures.
La clause RESAMPLE est évaluée avant que les conditions de la clause WHERE soient appliquées. Si vous voulez rééchantillonner un ensemble de données filtré, filtrez-le d’abord (par exemple, en créant une nouvelle table que vous pouvez rééchantillonner ou en utilisant une sous-requête calculée d’abord à l’intérieur de la requête RESAMPLE principale). La requête suivante rééchantillonne la table entière, puis supprime tout sauf les lignes pour
AtlantaetBoston.Une réécriture potentielle avec une sous-requête serait :
Lorsque des lignes rééchantillonnées sont générées, elles contiennent des valeurs NULL pour les colonnes qui ne sont pas partitionnées. Si vous utilisez une clause WHERE pour filtrer les colonnes qui ne sont pas partitionnées, votre filtre peut être appliqué aux lignes générées de manière inattendue.
Par exemple, étant donné que la requête suivante ne dispose pas de clause PARTITION BY, elle ne fonctionne pas comme prévu. Dans les lignes générées,
cityetcountysont NULL. La clause WHERE filtre alors toutes les lignes générées ; seules les lignes d’origine qui correspondent aux critères de filtrage sont conservées.Pour résoudre le problème, la requête suivante est partitionnée par
cityetcounty. La clause RESAMPLE génère des lignes pour des combinaisons decityetcountyqui existent dans les données sources. La condition de la clause WHERE préserve les lignes générées appropriées, carcityetcountyont des valeurs non-NULL dans ces lignes.En comparaison,
Exemples¶
Les exemples suivants montrent comment utiliser la construction RESAMPLE dans les requêtes.
Exemple de RESAMPLE utilisant une colonne numérique¶
L’exemple suivant a un horodatage UNIX dans le tableau source. Cette colonne numérique est spécifiée dans la clause RESAMPLE en tant que colonne USING. Créez et chargez la table suivante :
À présent, exécutez la requête RESAMPLE suivante.
La requête suivante échoue, car l’expression INCREMENT BY doit être une constante numérique positive lorsque la colonne USING est numérique :
Exemple de RESAMPLE qui renvoie uniquement les lignes générées¶
L’exemple suivant illustre la table march_temps (telle que créée dans Utilisation de la clause RESAMPLE) et comprend des colonnes de métadonnées nommées generated_row et bucket_start dans le résultat :
La requête suivante renvoie uniquement les lignes générées à partir de la table march_temps_every_five_mins :
Exemple de RESAMPLE qui utilise BUCKET_START() pour agréger des lignes rééchantillonnées¶
L’exemple suivant utilise la colonne de métadonnées bucket_start pour agréger les lignes rééchantillonnées. La requête compte le nombre d’observations par ville qui ont la même heure de début de compartiment, étant donné un jeu de résultats rééchantillonné qui est incrémenté par intervalle d’un jour. Pour exécuter cet exemple, créez la table march_temps, comme décrit dans Utilisation de la clause RESAMPLE.
Exemple de RESAMPLE qui utilise BUCKET_START() pour filtrer les lignes non uniformes¶
Vous pouvez utiliser la colonne de métadonnées bucket_start pour filtrer les données non uniformes d’un jeu de résultats rééchantillonné. Par exemple :
Cette requête rééchantillonne la table, puis supprime deux lignes d’origine qui ne sont pas conformes à l’intervalle de 5 minutes (celles avec des valeurs 09:49:00 et 10:18:00).