Syntaxe
|
array_expression[ORDINAL(one_based_offset)]
|
Paramètres
| Nom |
Description |
| one_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 un, ce qui signifie que le premier élément du tableau est à l'index 1, le deuxième à l'index 2, 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 à partir de 1 (one-based indexing) : Contrairement à la fonction OFFSET, ORDINAL utilise une indexation basée sur 1. Cela signifie que le
premier élément d'un tableau est accessible via ORDINAL(1) et non ORDINAL(0), ce qui peut être plus naturel pour de nombreux utilisateurs.
- Fonction dédiée aux tableaux de type ARRAY : ORDINAL s'applique uniquement aux colonnes ou expressions de type ARRAY. Elle permet d'extraire un élément
précis en se basant sur sa position ordinale dans le tableau, ce qui est utile pour traiter des résultats groupés ou imbriqués.
- Retourne une erreur si l'index est invalide : Si vous utilisez un index supérieur à la taille du tableau, la fonction génère une erreur d'exécution. Par
exemple, demander ORDINAL(5) sur un tableau de 3 éléments provoque une erreur - contrairement à SAFE.ORDINAL retournant NULL.
- Complémentaire à OFFSET avec une différence d'index : ORDINAL(1) est équivalent à OFFSET(0), ORDINAL(2) à OFFSET(1),... Cette différence doit être prise
en compte selon la manière dont les données sont manipulées, notamment lorsqu'on passe d'un système à l'autre ou qu'on convertit du code.
- Souvent plus intuitif pour les non-développeurs : Comme beaucoup de gens comptent à partir de 1 naturellement, ORDINAL est généralement plus intuitif à
lire et à utiliser dans des requêtes destinées à des utilisateurs métier ou à des analystes non techniques.
- Utile dans les transformations complexes de tableaux : On l'emploie notamment lors de l'extraction de positions fixes dans des tableaux imbriqués, comme
récupérer le 3e produit le plus vendu dans une liste triée, ou le 2e score le plus élevé dans un tableau de performances.
- Peut être combiné avec UNNEST et WITH OFFSET : ORDINAL fonctionne très bien avec les structures utilisant UNNEST, notamment quand on souhaite
croiser la position logique (ORDINAL) et la valeur réelle de l'élément dans une jointure ou une agrégation avancée.
- Existe aussi en version sécurisée : SAFE.ORDINAL : Pour éviter les erreurs hors limites, BigQuery propose une version sécurisée appelée
SAFE.ORDINAL, retournant NULL si l'indice n'est pas valide, ce qui est plus sûr dans les requêtes complexes ou avec des données imprévisibles.
Dernière mise à jour : Jeudi, le 18 Juin 2020