ClickHouse/docs/fr/sql-reference/functions/index.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

6.2 KiB
Raw Blame History

machine_translated machine_translated_rev toc_folder_title toc_priority toc_title
true f865c9653f Functions 32 Introduction

Fonction

Il y a au moins* deux types de fonctions - des fonctions régulières (elles sont simplement appelées “functions”) and aggregate functions. These are completely different concepts. Regular functions work as if they are applied to each row separately (for each row, the result of the function doesnt depend on the other rows). Aggregate functions accumulate a set of values from various rows (i.e. they depend on the entire set of rows).

Dans cette section, nous discutons des fonctions classiques. Pour les fonctions dagrégation, voir la section “Aggregate functions”.

* - Il existe un troisième type de fonction arrayJoin la fonction appartient à; les fonctions de table peuvent également être mentionnées séparément.*

Typage Fort

Contrairement à SQL standard, ClickHouse a une forte typage. En dautres termes, il ne fait pas de conversions implicites entre les types. Chaque fonction fonctionne pour un ensemble spécifique de types. Cela signifie que vous devez parfois utiliser des fonctions de conversion de type.

Élimination Des Sous-expressions Courantes

Toutes les expressions dune requête qui ont le même AST (le même enregistrement ou le même résultat danalyse syntaxique) sont considérées comme ayant des valeurs identiques. De telles expressions sont concaténées et exécutées une fois. Les sous-requêtes identiques sont également éliminées de cette façon.

Types De résultats

Toutes les fonctions renvoient un seul retour comme résultat (pas plusieurs valeurs, et pas des valeurs nulles). Le type de résultat est généralement défini uniquement par les types darguments, pas par les valeurs. Les Exceptions sont la fonction tupleElement (lopérateur A. N) et la fonction toFixedString.

Constant

Pour simplifier, certaines fonctions ne peuvent fonctionner quavec des constantes pour certains arguments. Par exemple, le bon argument de Lopérateur LIKE doit être une constante. Presque toutes les fonctions renvoient une constante pour des arguments constants. Lexception est les fonctions qui génèrent des nombres aléatoires. Le now function renvoie des valeurs différentes pour les requêtes qui ont été exécutées à des moments différents, mais le résultat est considéré comme une constante, car la constance nest importante que dans une seule requête. Une expression constante est également considérée comme une constante (par exemple, la moitié droite de Lopérateur LIKE peut être construite à partir de plusieurs constantes).

Les fonctions peuvent être implémentées de différentes manières pour des arguments constants et non constants (un code différent est exécuté). Mais les résultats pour une constante et pour une colonne vraie Ne contenant que la même valeur doivent correspondre les uns aux autres.

Le Traitement NULL

Les fonctions ont les comportements suivants:

  • Si au moins lun des arguments de la fonction est NULL le résultat de la fonction est également NULL.
  • Comportement spécial spécifié individuellement dans la description de chaque fonction. Dans le code source de ClickHouse, ces fonctions ont UseDefaultImplementationForNulls=false.

Constance

Functions cant change the values of their arguments any changes are returned as the result. Thus, the result of calculating separate functions does not depend on the order in which the functions are written in the query.

Erreur De Manipulation

Certaines fonctions peuvent lancer une exception si les données ne sont pas valides. Dans ce cas, la requête est annulée et un message derreur est retourné au client. Pour le traitement distribué, lorsquune exception se produit sur lun des serveurs, les autres serveurs aussi tenté dinterrompre la requête.

Évaluation Des Expressions dargument

Dans presque tous les langages de programmation, lun des arguments peut pas être évalué pour certains opérateurs. Ce sont généralement les opérateurs &&, ||, et ?:. Mais dans ClickHouse, les arguments des fonctions (opérateurs) sont toujours évalués. En effet, des parties entières de colonnes sont évaluées à la fois, au lieu de calculer chaque ligne séparément.

Exécution De Fonctions Pour Le Traitement De requêtes distribuées

Pour le traitement de requête distribué, autant détapes de traitement de requête que possible sont effectuées sur des serveurs distants, et le reste des étapes (fusion des résultats intermédiaires et tout ce qui suit) sont effectuées sur le serveur demandeur.

Cela signifie que les fonctions peuvent être effectuées sur différents serveurs. Par exemple, dans la requête SELECT f(sum(g(x))) FROM distributed_table GROUP BY h(y),

  • si un distributed_table a au moins deux fragments, les fonctions g et h sont effectuées sur des serveurs distants, et la fonction f est effectuée sur le serveur demandeur.
  • si un distributed_table a un seul fragment, tous les f, g, et h les fonctions sont exécutées sur le serveur de ce fragment.

Le résultat dune fonction habituellement ne dépendent pas le serveur sur lequel elle est exécutée. Cependant, parfois cest important. Par exemple, les fonctions qui fonctionnent avec des dictionnaires utilisent le dictionnaire qui existe sur le serveur sur lequel elles sexécutent. Un autre exemple est l hostName fonction, qui renvoie le nom du serveur sur lequel il sexécute afin de GROUP BY par les serveurs dans un SELECT requête.

Si une fonction dans une requête est effectuée sur le demandeur serveur, mais vous devez lexécuter sur des serveurs distants, vous pouvez lenvelopper dans un any fonction dagrégation ou lajouter à une clé dans GROUP BY.

Article Original