ANY_VALUE |
N'importe quel valeur |
| BigQuery |
Syntaxe
|
ANY_VALUE(expression) [OVER (...)]
|
Paramètres
| Nom |
Description |
| expression |
Ce paramètre permet d'indiquer l'expression ou la colonne dont on souhaite obtenir une valeur arbitraire (n'importe quelle valeur) parmi les lignes du groupe ou de l'ensemble de données. |
Description
Cette fonction permet de demander n'importe quel valeur dans une entrée ou NULL dans un enregistrement de données.
Remarques
- La fonction ANY_VALUE retourne une valeur arbitraire parmi les lignes d'un groupe, sans garantir de cohérence ou d'ordre : Elle est utile lorsqu'on a
besoin de récupérer une valeur d'un champ sans qu'elle soit nécessairement la première, la dernière ou une valeur agrégée (comme MIN ou
MAX). Cela peut optimiser les requêtes dans des cas où la valeur précise n'est pas importante.
- ANY_VALUE peut être utilisé dans les agrégations où certaines colonnes ne sont pas inclues dans la clause GROUP BY : Par exemple, dans une requête qui
agrège sur une colonne A mais souhaite inclure une colonne B non agrégée, ANY_VALUE(B) peut servir à éviter une erreur SQL tout en retournant une valeur représentative,
bien que non déterministe.
- Le résultat retourné par ANY_VALUE n'est pas défini, c'est-à-dire que sa valeur peut changer entre deux exécutions si l'ordre des lignes change : Il ne
faut donc pas utiliser cette fonction si le résultat exact est important ou si l'on attend une valeur spécifique. Elle est réservée aux cas où l'indifférence sur la
valeur obtenue est acceptable.
- La fonction est souvent utilisée dans les requêtes avec des agrégations complexes ou des jointures, notamment pour éviter des erreurs comme
"column must appear in the GROUP BY clause" : Elle agit comme un compromis entre performance et précision lorsque seule une des valeurs possibles est
nécessaire à des fins secondaires (par exemple pour affichage ou étiquette).
- ANY_VALUE peut être combinée avec OVER() pour être utilisée comme fonction de fenêtre : Dans ce cas, elle retourne une valeur arbitraire dans la fenêtre
définie. Cela peut servir dans les calculs analytiques lorsqu'on veut récupérer un exemple de valeur dans une partition de données, sans frais de calculs élevés.
- L'utilisation de ANY_VALUE peut améliorer les performances par rapport à des fonctions comme MIN, MAX ou FIRST_VALUE, car elle ne trie pas les données :
Comme elle ne garantit pas un ordre, BigQuery peut retourner rapidement une valeur arbitraire sans effectuer d'opérations coûteuses. Cela en fait un bon choix
dans des tableaux de synthèse volumineux à but exploratoire.
- La fonction peut retourner NULL si toutes les lignes dans le groupe ont une valeur nulle pour l'expression donnée : C'est un comportement standard, mais
à prendre en compte si l'on souhaite toujours obtenir une valeur non nulle. Il peut être utile de filtrer les NULL ou de combiner avec IFNULL ou COALESCE.
- Même si son nom peut laisser penser à une forme d'aléatoire, ANY_VALUE n'est pas équivalent à RAND() ou SAMPLE : Elle retourne une des valeurs existantes,
mais sans garantie de sélection spécifique ou aléatoire. Elle n'introduit donc pas de hasard statistique dans l'échantillon, contrairement aux fonctions explicitement
conçues pour cela.
Dernière mise à jour : Jeudi, le 18 Juin 2020