Partager via


window expression de regroupement

S’applique à :case marquée oui Databricks SQL case marquée oui Databricks Runtime

Crée une fenêtre glissante basée sur une saut sur une expression de timestamp.

Syntaxe

window(expr, width [, slide [, start] ] )

Arguments

  • expr : expression TIMESTAMP spécifiant l’objet de la fenêtre.
  • width : un littéral STRING représentant la largeur de la fenêtre sous la forme d’un littéral INTERVAL DAY TO SECOND.
  • slide : un littéral STRING facultatif représentant un décalage entre minuit et le début, exprimé sous la forme d’un littéral INTERVAL HOUR TO SECOND.
  • start : un littéral STRING facultatif représentant le début de la fenêtre suivante, exprimé sous la forme d’un littéral INTERVAL DAY TO SECOND.

Retours

Renvoie un ensemble de regroupements qui peuvent être utilisés avec des fonctions d’agrégation. Le nom de la colonne GROUP BY est window. Il est de type STRUCT<start TIMESTAMP, end TIMESTAMP>

slide doit être inférieur ou égal à width. start doit être inférieur à slide.

Si slide<width, les lignes de chaque groupe se chevauchent. Par défaut, slide est égal à width, donc les expr sont partitionnés en groupes. Le fenêtrage commence à 1970-01-01 00:00:00 UTC + start. La valeur par défaut de start est '0 SECONDS'

Exemples

> SELECT window, min(val), max(val), count(val)
  FROM VALUES (TIMESTAMP'2020-08-01 12:20:21', 17),
              (TIMESTAMP'2020-08-01 12:20:22', 12),
              (TIMESTAMP'2020-08-01 12:23:10',  8),
              (TIMESTAMP'2020-08-01 12:25:05', 11),
              (TIMESTAMP'2020-08-01 12:28:59', 15),
              (TIMESTAMP'2020-08-01 12:30:01', 23),
              (TIMESTAMP'2020-08-01 12:30:15',  2),
              (TIMESTAMP'2020-08-01 12:35:22', 16) AS S(stamp, val)
  GROUP BY window(stamp, '2 MINUTES 30 SECONDS', '30 SECONDS', '15 SECONDS');
  {2020-08-01 12:19:15, 2020-08-01 12:21:45} 12       17       2
  {2020-08-01 12:18:15, 2020-08-01 12:20:45} 12       17       2
  {2020-08-01 12:20:15, 2020-08-01 12:22:45} 12       17       2
  {2020-08-01 12:19:45, 2020-08-01 12:22:15} 12       17       2
  {2020-08-01 12:18:45, 2020-08-01 12:21:15} 12       17       2
  {2020-08-01 12:21:45, 2020-08-01 12:24:15} 8        8        1
  {2020-08-01 12:22:45, 2020-08-01 12:25:15} 8        11       2
  {2020-08-01 12:21:15, 2020-08-01 12:23:45} 8        8        1
  {2020-08-01 12:22:15, 2020-08-01 12:24:45} 8        8        1
  {2020-08-01 12:20:45, 2020-08-01 12:23:15} 8        8        1
  {2020-08-01 12:23:45, 2020-08-01 12:26:15} 11       11       1
  {2020-08-01 12:23:15, 2020-08-01 12:25:45} 11       11       1
  {2020-08-01 12:24:45, 2020-08-01 12:27:15} 11       11       1
  {2020-08-01 12:24:15, 2020-08-01 12:26:45} 11       11       1
  {2020-08-01 12:27:15, 2020-08-01 12:29:45} 15       15       1
  {2020-08-01 12:27:45, 2020-08-01 12:30:15} 15       23       2
  {2020-08-01 12:28:45, 2020-08-01 12:31:15} 2        23       3
  {2020-08-01 12:26:45, 2020-08-01 12:29:15} 15       15       1
  {2020-08-01 12:28:15, 2020-08-01 12:30:45} 2        23       3
  {2020-08-01 12:29:45, 2020-08-01 12:32:15} 2        23       2