Partager via


Vue d’ensemble des fonctions de fenêtre

Les fonctions de fenêtre fonctionnent sur plusieurs lignes (enregistrements) dans un jeu de lignes à la fois. Contrairement aux fonctions d’agrégation, les fonctions de fenêtre nécessitent que les lignes du jeu de lignes soient sérialisées (elles ont un ordre spécifique). Les fonctions de fenêtre peuvent dépendre de l’ordre pour déterminer le résultat.

Les fonctions de fenêtre ne peuvent être utilisées que sur des ensembles sérialisés. Le moyen le plus simple de sérialiser un jeu de lignes consiste à utiliser l’opérateur sérialiser. Cet opérateur « fige » l’ordre des lignes de manière arbitraire. Si l’ordre des lignes sérialisées est important sur le plan sémantique, utilisez l’opérateur de tri pour forcer un ordre particulier.

Le processus de sérialisation est associé à un coût non trivial. Par exemple, cela peut empêcher le parallélisme des requêtes dans de nombreux scénarios. Par conséquent, n’appliquez pas la sérialisation inutilement. Si nécessaire, réorganisez la requête pour effectuer la sérialisation sur le plus petit jeu de lignes possible.

Ensemble de lignes sérialisées

Un jeu de lignes arbitraire (tel qu’une table ou la sortie d’un opérateur tabulaire) peut être sérialisé de l’une des manières suivantes :

  1. En triant l’ensemble de lignes. Consultez la liste ci-dessous des opérateurs qui émettent des jeux de lignes triées.
  2. À l’aide de l’opérateur sérialiser.

De nombreux opérateurs tabulaires sérialisent la sortie chaque fois que l’entrée est déjà sérialisée, même si l’opérateur ne garantit pas lui-même que le résultat est sérialisé. Par exemple, cette propriété est garantie pour l’opérateur d’extension, l’opérateur de projet et l’opérateur where.

Opérateurs qui émettent des jeux de lignes sérialisés par tri

Opérateurs qui conservent la propriété de jeu de lignes sérialisée