Vue d’ensemble
Les fonctions arithmétiques s’appliquent à deux opérandes quelconques de typeUInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32 ou Float64.
Avant d’effectuer l’opération, les deux opérandes sont convertis dans le type de résultat. Le type de résultat est déterminé comme suit (sauf indication contraire
dans la documentation de la fonction ci-dessous) :
- Si les deux opérandes font au plus 32 bits, la taille du type de résultat sera celle du type immédiatement supérieur au plus grand des deux
opérandes (promotion de la taille des entiers). Par exemple,
UInt8 + UInt16 = UInt32ouFloat32 * Float32 = Float64. - Si l’un des opérandes fait 64 bits ou plus, la taille du type de résultat sera la même que celle du plus grand des deux opérandes. Par
exemple,
UInt32 + UInt128 = UInt128ouFloat32 * Float64 = Float64. - Si l’un des opérandes est signé, le type de résultat le sera aussi, sinon il sera non signé. Par exemple,
UInt32 * Int32 = Int64ouUInt32 * UInt32 = UInt64.
abs
Introduit dans : v1.1.0 Calcule la valeur absolue dex. N’a aucun effet si x est de type non signé. Si x est de type signé, renvoie un nombre non signé.
Syntaxe
x— Valeur dont on veut obtenir la valeur absolue
x
Exemples
Exemple d’utilisation
Query
Response
avg2
Introduit dans : v25.11.0 Calcule et renvoie la moyenne des arguments fournis. Prend en charge les types numériques et temporels. Syntaxex1, x2]— Accepte deux valeurs pour en calculer la moyenne.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
byteSwap
Introduit dans : v23.10.0 Inverse les octets d’un entier, c.-à-d. modifie son ordre des octets. L’exemple ci-dessous peut être décomposé comme suit :- Convertissez l’entier en base 10 dans son équivalent au format hexadécimal en big-endian, c.-à-d. 3351772109 -> C7 C7 FB CD (4 octets)
- Inversez les octets, c.-à-d. C7 C7 FB CD -> CD FB C7 C7
- Reconvertissez le résultat en entier en supposant un format big-endian, c.-à-d. CD FB C7 C7 -> 3455829959 Un cas d’utilisation de cette fonction est l’inversion des adresses IPv4 :
x— Un nombre entier.(U)Int*
x avec l’ordre des octets inversé. (U)Int*
Exemples
Exemple d’utilisation
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
divide
Introduit dans : v1.1.0 Calcule le quotient de deux valeursa et b. Le type de résultat est toujours Float64.
La division entière est assurée par la fonction intDiv.
La division par
0 renvoie inf, -inf ou nan.x— Dividende -y— Diviseur
Query
Response
Query
Response
divideDecimal
Introduit dans : v22.12.0 Effectue la division de deux valeurs décimales. La valeur résultante sera de type Decimal256. L’échelle du résultat peut être explicitement spécifiée à l’aide de l’argumentresult_scale (const Integer dans l’intervalle [0, 76]). Si elle n’est pas spécifiée, l’échelle du résultat correspond à l’échelle maximale des arguments fournis.
Cette fonction est nettement plus lente que
divide.
Si vous n’avez pas réellement besoin d’une précision contrôlée et/ou d’un calcul rapide, envisagez d’utiliser divide.x— Première valeur : Decimal. -y— Deuxième valeur : Decimal. -result_scale— Échelle du résultat. Type Int/UInt.
Decimal256
Exemples
Exemple 1
Query
Response
Query
Response
divideOrNull
Introduit dans : v25.5.0 Identique àdivide, mais renvoie NULL en cas de division par zéro.
Syntaxe
x— Dividende -y— Diviseur
Query
Response
gcd
Introduit dans : v1.1.0 Renvoie le plus grand commun diviseur de deux valeurs, a et b. Une exception est levée en cas de division par zéro ou lorsqu’un plus petit nombre négatif est divisé par moins un. Syntaxex— Premier entier -y— Deuxième entier
x et y.
Exemples
Exemple d’utilisation
Query
Response
ifNotFinite
Introduit dans : v20.3.0 Vérifie si une valeur en virgule flottante est finie. Vous pouvez obtenir un résultat similaire en utilisant l’opérateur ternaire :isFinite(x) ? x : y.
Syntaxe
xsixest une valeur finie.ysixn’est pas une valeur finie.
Query
Response
intDiv
Introduit dans : v1.1.0 Effectue une division entière dex par y. En d’autres termes, cette fonction
calcule le quotient arrondi à l’entier inférieur.
Le résultat a la même largeur que le dividende (le premier paramètre).
Une exception est levée en cas de division par zéro, lorsque le quotient ne tient pas
dans la plage de valeurs du dividende, ou lors de la division du plus petit nombre négatif par moins un.
Syntaxe
x— Opérande de gauche. -y— Opérande de droite.
x par y
Exemples
Division entière de deux nombres flottants
Query
Response
Query
Response
intDivOrNull
Introduit dans : v25.5.0 Identique àintDiv, mais renvoie NULL en cas de division par zéro ou lors de la division du plus petit nombre négatif par moins un.
Syntaxe
x par y, ou NULL.
Exemples
Division entière par zéro
Query
Response
Query
Response
intDivOrZero
Introduit dans : v1.1.0 Identique àintDiv, mais renvoie zéro en cas de division par zéro ou lors de la division du plus petit nombre négatif par moins un.
Syntaxe
Query
Response
Query
Response
isFinite
Introduit dans : v1.1.0 Renvoie1 si l’argument Float32, Float64 ou BFloat16 n’est ni infini ni NaN,
sinon cette fonction renvoie 0.
Syntaxe
1 si x n’est ni infini ni NaN, sinon 0.
Exemples
Tester si un nombre est fini
Query
Response
isInfinite
Introduit dans : v1.1.0 Renvoie1 si l’argument de type Float32, Float64 ou BFloat16 est infini ; sinon, cette fonction renvoie 0.
Notez que 0 est également renvoyé pour un NaN.
Syntaxe
1 si x est infini, sinon 0 (y compris pour NaN).
Exemples
Vérifier si un nombre est infini
Query
Response
isNaN
Introduit dans : v1.1.0 Renvoie1 si l’argument de type Float32, Float64 ou BFloat16 est NaN, sinon 0.
Syntaxe
1 si NaN, sinon 0
Exemples
Exemple d’utilisation
Query
Response
kqlBin
Introduced in: v26.8.0 Arrondit une valeur à l’inférieur, vers un multiple deroundTo, comme le fait bin() en Kusto Query Language.
La règle dépend des types des arguments : un nombre est arrondi arithmétiquement, une durée (qui
est un Interval) est arrondie selon une durée, et une date-heure est arrondie selon une durée. Un date-heure
KQL est un DateTime64 ; les porteurs plus étroits DateTime et Date sont rejetés, car
ils ne peuvent pas représenter tous les bins qu’un date-heure KQL peut produire.
Cette fonction sous-tend bin() lorsque dialect = 'kusto'. Elle n’est pas destinée à être appelée directement
depuis SQL.
Syntax
value— Un nombre, une durée ou une date-heure (unDateTime64). -roundTo— La taille du bin.
value arrondi à l’inférieur au multiple de roundTo le plus proche.
Exemples
number
Query
Response
Query
Response
Query
Response
kqlBinAt
Introduit dans : v26.8.0 Arrondit une valeur à l’inférieur, au multiple debinSize le plus proche compté à partir de fixedPoint, comme le fait la fonction bin_at() du Kusto Query Language. Les bins peuvent s’aligner avant ou après le point de référence.
La règle dépend des types d’arguments : un nombre est arrondi arithmétiquement, une durée (qui est un Interval) est arrondie par une durée à partir d’une durée, et une date-heure est arrondie par une durée comptée à partir d’un point de référence de type date-heure. Une date-heure KQL est un DateTime64 ; les types porteurs plus restreints DateTime et Date sont rejetés, car ils ne peuvent pas représenter tous les bins qu’une date-heure KQL peut produire.
Cette fonction implémente bin_at() lorsque dialect = 'kusto'. Elle n’est pas destinée à être appelée directement depuis SQL.
Syntaxe
value— Un nombre, une durée ou une date-heure (unDateTime64). -binSize— La taille du bin. -fixedPoint— Le point à partir duquel les bins sont comptés.
value arrondi vers le bas au multiple de binSize le plus proche, compté à partir de fixedPoint.
Exemples
number
Query
Response
Query
Response
kqlDateTimeBinAt
Introduit dans : v26.8.0 Arrondit une valeur date-heure à l’inférieur, sur un multiple d’une durée calculé à partir d’un point de référence date-heure. Syntaxevalue— La date-heure à arrondir. -binSize— La taille du bin de durée. -fixedPoint— Le point de référence de date-heure.
kqlDivide
Introduced in: v26.8.0 La division telle que la définit le Kusto Query Language : deux opérandes entiers donnent un entier, donc7 / 2 vaut 3, tandis que deux opérandes de type durée (qui sont des valeurs Interval) donnent leur
ratio réel, donc 15ms / 10ms vaut 1.5. Toute autre combinaison de types d’opérandes est divisée
comme avec divide.
Cette fonction sous-tend l’opérateur / lorsque dialect = 'kusto'. Elle n’est pas destinée à être appelée
directement depuis SQL.
Syntaxe
x— Le dividende. -y— Le diviseur.
intDiv(x, y) lorsque les deux arguments sont des integers, le rapport des ticks des intervalles lorsque les deux sont des intervalles, divide(x, y) dans les autres cas.
Exemples
integers
Query
Response
Query
Response
Query
Response
kqlMultiply
Introduced in: v26.8.0 La multiplication telle que définie par le Kusto Query Language : une durée (unInterval) est mise à l’échelle par un
nombre placé de part et d’autre, si bien que 2 * 1h vaut deux heures. Deux arguments sans intervalle se multiplient comme
avec multiply.
Cette fonction sous-tend l’opérateur * lorsque dialect = 'kusto'. Elle n’est pas destinée à être appelée
directement depuis SQL.
Syntaxe
x— Un nombre ou une durée. -y— Un nombre, ou une durée lorsquexest un nombre.
Query
Response
Query
Response
kqlRangeCount
Introduced in: v26.8.0 Le nombre de rows produites par la sourcerange du Kusto Query Language : floor((to - from) / step) + 1, sans jamais être inférieur à zéro. Les limites et le step sont des nombres, ou des datetimes
espacés d’une durée (un Interval), ou encore des durées ; les formes temporelles sont comptées en
nanosecondes entières, ce qu’aucune division ClickHouse unique ne permet d’exprimer. Les integers et les
decimals sont comptés de façon exacte, et non via Float64.
Cette fonction sous-tend la source range lorsque dialect = 'kusto'. Elle n’est pas destinée à être appelée
directement depuis SQL.
Syntaxe
from— La première valeur de la plage. -to— La valeur que la plage ne dépasse pas. -step— L’écart entre deux valeurs consécutives.
Query
Response
Query
Response
lcm
Introduit dans : v1.1.0 Renvoie le plus petit multiple commun de deux valeursx et y.
Une exception est levée en cas de division par zéro ou lors de la division du plus petit nombre négatif par moins un.
Syntaxe
x et y. (U)Int*
Exemples
Exemple d’utilisation
Query
Response
max2
Introduit dans : v21.11.0 Renvoie la plus grande des deux valeurs numériquesx et y.
Syntaxe
x— Première valeur(U)Int8/16/32/64,Float*,BFloat16ouDecimaly— Deuxième valeur(U)Int8/16/32/64,Float*,BFloat16ouDecimal
x et y. Float64
Exemples
Exemple d’utilisation
Query
Response
midpoint
Introduit dans : v25.11.0 Calcule et renvoie la valeur moyenne des arguments fournis. Prend en charge les types numériques et temporels. Syntaxex1[, x2, ...]— Accepte une valeur unique ou plusieurs valeurs pour en calculer la moyenne.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
min2
Introduit dans : v21.11.0 Renvoie la plus petite de deux valeurs numériquesx et y.
Syntaxe
x— Première valeur(U)Int8/16/32/64ouFloat*ouBFloat16ouDecimaly— Deuxième valeur(U)Int8/16/32/64ouFloat*ouBFloat16ouDecimal
x et y. Float64
Exemples
Exemple d’utilisation
Query
Response
minus
Introduit dans : v1.1.0 Calcule la différence entre deux valeursa et b. Le résultat est toujours signé.
Comme avec plus, il est possible de soustraire un integer à une date ou à une date avec heure.
En outre, la soustraction entre des dates avec heure est prise en charge, ce qui produit la différence de temps entre elles.
Il est également possible de soustraire un Time ou un Time64 d’un DateTime ou d’un DateTime64 ;
la valeur temporelle est appliquée comme un décalage en secondes. DateTime moins Time produit
un DateTime, tandis que toute combinaison impliquant DateTime64 ou Time64 produit un DateTime64
avec la scale maximale des deux arguments.
Syntaxe
x— Diminuende. -y— Soustrahende.
Query
Response
Query
Response
modulo
Introduit dans : v1.1.0 Calcule le reste de la division de deux valeurs a par b. Le type du résultat est un entier si les deux entrées sont des entiers. Si l’une des entrées est un nombre à virgule flottante, le type du résultat est Float64. Le reste est calculé comme en C++. Une division tronquée est utilisée pour les nombres négatifs. Une exception est levée en cas de division par zéro ou lors de la division d’un nombre négatif minimal par moins un. Syntaxemod
Arguments
a— Le dividende -b— Le diviseur (modulo)
Query
Response
moduloLegacy
Introduit dans : v1.1.0 Calcule le reste d’une division. Il s’agit de l’implémentation legacy du modulo qui utilise l’opérateur% de C++, ce qui peut produire des résultats négatifs lorsque les arguments sont négatifs. Cette fonction existe pour assurer la rétrocompatibilité avec l’ancienne logique de partitionnement des tables. Utilisez modulo ou positiveModulo pour obtenir le comportement standard.
Syntaxe
(U)Int* ou Float*
Exemples
Utilisation de base
Query
Response
moduloOrNull
Introduit dans : v25.5.0 Calcule le reste de la division dea par b. Comme la fonction modulo, sauf que moduloOrNull renvoie NULL
lorsque l’opération lèverait sinon une exception en virgule flottante. Pour les arguments en virgule flottante, cela se produit uniquement lorsque le
diviseur est 0 ; pour les arguments entiers, cela couvre également la valeur négative minimale modulo -1 (par ex. -128 % -1 pour Int8).
Syntaxe
modOrNull
Arguments
Valeur renvoyée
Renvoie le reste de la division de x par y, ou NULL lorsque l’opération entraînerait une exception en virgule flottante :
lorsque le diviseur est égal à zéro, ou, pour des arguments entiers, lors du calcul de la valeur négative minimale modulo -1.
Exemples
moduloOrNull avec zéro
Query
Response
Query
Response
moduloOrZero
Introduit dans : v20.3.0 Comme modulo, mais renvoie zéro au lieu d’une exception pour les résultats integer lorsque l’opération lèverait sinon une exception. Pour les résultats à virgule flottante, un diviseur nul produitNaN.
Syntaxe
a % b. Pour les résultats integer, renvoie 0 là où l’opération lèverait normalement une exception.
Pour les résultats en virgule flottante, un diviseur nul produit NaN.
Exemples
Diviseur entier nul
Query
Response
Query
Response
multiply
Introduit dans : v1.1.0 Calcule le produit des deux valeursx et y.
Syntaxe
Query
Response
multiplyDecimal
Introduit dans : v22.12.0 Effectue la multiplication de deux nombres décimaux. La valeur de résultat est de type Decimal256. La scale du résultat peut être spécifiée explicitement à l’aide de l’argumentresult_scale (constante entière dans l’intervalle [0, 76]). Si elle n’est pas spécifiée, la scale du résultat correspond à la scale maximale des arguments fournis.
Ces fonctions sont nettement plus lentes que
multiply.
Si vous n’avez pas réellement besoin d’une précision contrôlée et/ou d’un calcul rapide, envisagez d’utiliser multiplya— Première valeur.Decimalb— Deuxième valeur.Decimalresult_scale— Échelle du résultat.(U)Int*
Decimal256
Exemples
Exemple d’utilisation
Query
Response
Query
Response
Query
Response
Query
Response
negate
Introduit dans : v1.1.0 Retourne l’opposé de l’argumentx. Le résultat est toujours de type signé.
Syntaxe
x— La valeur à opposer.
Query
Response
plus
Introduit dans : v1.1.0 Calcule la somme de deux valeursx et y. Alias : x + y (opérateur).
Il est possible d’additionner un entier et une date ou une date avec heure. La première
opération incrémente le nombre de jours de la date, la seconde
incrémente le nombre de secondes de la date avec heure.
Il est également possible d’additionner une date et une heure. L’addition d’un Date et d’un Time
produit un DateTime. L’addition d’un Date et d’un Time64, ou d’un Date32 et
d’un Time ou Time64, produit un DateTime64.
L’ajout d’un Time ou d’un Time64 à un DateTime ou un DateTime64 applique la valeur
d’heure comme un décalage en secondes. DateTime plus Time produit un DateTime,
et toute combinaison impliquant DateTime64 ou Time64 produit un DateTime64
avec la scale maximale des deux arguments.
Syntaxe
x— Opérande de gauche. -y— Opérande de droite.
Query
Response
Query
Response
Query
Response
positiveModulo
Introduit dans : v22.11.0 Calcule le reste de la division dex par y. Comme la fonction
modulo, à ceci près que positiveModulo renvoie toujours un nombre non négatif.
Syntaxe
positive_modulo, pmod
Arguments
x— Le dividende.(U)Int*ouFloat*ouDecimaly— Le diviseur (modulo).(U)Int*ouFloat*ouDecimal
x et le plus grand entier inférieur ou égal à
x divisible par y.
Exemples
Exemple d’utilisation
Query
Response
positiveModuloOrNull
Introduit dans : v25.5.0 Calcule le reste de la division dea par b. Similaire à la fonction positiveModulo, à ceci près que positiveModuloOrNull renvoie NULL
lorsque l’opération provoquerait autrement une exception en virgule flottante. Pour les arguments à virgule flottante, cela se produit uniquement lorsque le
diviseur est 0 ; pour les arguments entiers, cela couvre également la valeur négative minimale modulo -1 (par exemple -128 % -1 pour Int8).
Syntaxe
positive_modulo_or_null, pmodOrNull
Arguments
x— Le dividende.(U)Int*/Float32/64. -y— Le diviseur (modulo).(U)Int*/Float32/64.
x et le plus grand entier inférieur ou égal à
x divisible par y, ou NULL lorsque l’opération lèverait une exception en virgule flottante : lorsque le diviseur est égal à zéro ou,
pour les arguments entiers, lors du calcul de la valeur négative minimale modulo -1.
Exemples
positiveModuloOrNull par zéro
Query
Response
Query
Response
sqr
Introduit dans : v26.7.0 Calcule le carré d’une valeurx.
Syntaxe
x par lui-même.
Exemples
Mise au carré d’un nombre
Query
Response