SAFE_OFFSET |
Déplacement sécuritaire |
| BigQuery |
Syntaxe
|
array_expression[SAFE_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. Contrairement à OFFSET standard, SAFE_OFFSET ne provoque pas d'erreur si l'index fourni est en dehors des limites du tableau; il retourne plutôt NULL. |
Description
Cette fonction permet demander la valeur d'un élément par sa position dans un tableau et retourne NULL si la position n'existe pas.
Remarques
- Accès sécurisé aux éléments de tableau : La fonction SAFE_OFFSET est conçue pour éviter les erreurs lorsqu'on tente d'accéder à un index inexistant dans
un tableau. Si l'index est hors limites, au lieu de générer une erreur comme OFFSET, elle retourne simplement NULL, ce qui améliore la stabilité des requêtes.
- Indexation basée sur zéro : Comme avec OFFSET, SAFE_OFFSET utilise une indexation commençant à 0. Cela signifie que pour récupérer le premier élément
d'un tableau, on utilise SAFE_OFFSET(0). Cette convention est courante en programmation, mais il est important de s'en souvenir pour éviter les décalages d'unité.
- Évite les interruptions de requêtes sur des données irrégulières : Dans les cas où les tableaux n'ont pas tous la même taille, l'usage de SAFE_OFFSET
permet de traiter uniformément toutes les lignes sans craindre une interruption pour dépassement d'index. Cela est crucial dans les analyses massives ou hétérogènes.
- Retourne NULL de manière prédictive et contrôlable : Plutôt que de forcer le traitement à échouer, SAFE_OFFSET signale les anomalies via une valeur NULL.
Cela permet de repérer les cas problématiques en ajoutant des clauses comme WHERE result IS NULL, tout en évitant les échecs.
- Utile pour le traitement de tableaux dynamiques : Lorsque la taille du tableau n'est pas connue à l'avance, SAFE_OFFSET est un excellent outil pour
interroger des éléments potentiels sans devoir valider manuellement la longueur du tableau au préalable.
- Peut être combinée avec ARRAY_LENGTH() pour un contrôle plus fin : Pour une logique plus complexe, on peut combiner SAFE_OFFSET avec ARRAY_LENGTH() pour
parcourir les éléments existants d'un tableau tout en évitant les dépassements. Cela permet des boucles ou itérations SQL plus fiables.
- S'intègre facilement dans des expressions conditionnelles : Grâce à son retour NULL en cas d'erreur, SAFE_OFFSET peut être utilisé dans une clause
IF ou COALESCE pour fournir une valeur par défaut quand l'élément demandé n'est pas disponible.
- Favorise une écriture défensive des requêtes : L'utilisation de SAFE_OFFSET montre une approche préventive dans l'écriture SQL. Elle est fortement
recommandée dans les environnements de production, notamment quand les données sont issues de sources peu fiables ou très variables.
Dernière mise à jour : Jeudi, le 18 Juin 2020