OFFSET |
Déplacement |
| BigQuery |
Syntaxe
|
array_expression[OFFSET(zero_based_offset)]
|
Paramètres
| Nom |
Description |
| zero_based_offset |
Ce paramètre permet de spécifier la position (l'index) de l'élément que vous souhaitez récupérer dans un tableau. L'indexation est basée sur zéro, ce qui signifie que le premier élément du tableau est à l'index 0, le deuxième à l'index 1, et ainsi de suite. Si l'index fourni est en dehors des limites du tableau, une erreur est générée. |
Description
Cette fonction permet demander la valeur d'un élément par sa position dans un tableau.
Remarques
- Indexation basée sur zéro (zero-based indexing) : La fonction OFFSET commence à compter les éléments d'un tableau à partir de l'indice 0. Cela signifie que
tableau[OFFSET(0)] renvoie le premier élément, ce qui peut dérouter ceux habitués à des langages comme SQL standard ou
Excel utilisant une indexation à partir de 1.
- Permet un accès direct aux éléments des tableaux : OFFSET permet de récupérer un élément spécifique d'un tableau en fonction de sa position. C'est un
moyen rapide et simple d'accéder à une valeur précise sans avoir à parcourir ou transformer l'ensemble du tableau.
- Doit être utilisé avec précaution pour éviter les erreurs hors limites : Si vous tentez d'accéder à un index inexistant (par exemple, OFFSET(5) dans
un tableau de 3 éléments), BigQuery génère une erreur d'exécution. Il est donc recommandé de valider la taille du tableau ou d'utiliser SAFE_OFFSET.
- Complété par la version sécurisée SAFE_OFFSET : Pour éviter les erreurs liées à un index hors limites, BigQuery propose aussi SAFE_OFFSET, retournant
NULL au lieu de générer une erreur si l'index est invalide. Cela permet d'écrire des requêtes plus robustes.
- Utilisable uniquement sur des expressions de type ARRAY : La fonction OFFSET ne peut s'utiliser que sur des colonnes ou expressions de type
tableau (ARRAY). Elle ne fonctionne pas sur des chaînes ou des ensembles standards, ce qui limite son usage aux contextes avec des structures de données spécifiques.
- Très utile dans les transformations ou les sous-requêtes imbriquées : On l'utilise souvent dans les CTE ou les transformations avec des colonnes ARRAY
pour extraire un ou plusieurs éléments à des positions fixes, comme le premier ou deuxième élément d'une liste groupée.
- Supporte aussi l'accès dynamique avec des expressions numériques : L'indice passé à OFFSET peut être une valeur numérique constante ou une expression
(comme i + 1), ce qui permet un usage dynamique, par exemple dans une boucle ou un WITH OFFSET dans les requêtes ARRAY.
- Ne doit pas être confondu avec la clause OFFSET utilisée dans les requêtes SQL : Il est important de ne pas confondre la fonction OFFSET(array) avec
la clause SQL OFFSET n utilisée pour ignorer les premières lignes d'un résultat. Les deux ont des noms identiques mais des usages totalement différents.
Dernière mise à jour : Jeudi, le 18 Juin 2020