Fonctions logiques
La liste ci-dessous répertorie les fonctions logiques utilisables dans des expressions.
Fonction | Description |
---|---|
Case | L'instruction de cas (case) se présente sous deux formes différentes. Simple : case Arg1 when Arg2 then Arg3 else Arg4 end L'expressionArg1 est évaluée et siArg1 est égal àArg2,Arg3 est renvoyé. Plusieurs expressions when ou then peuvent être saisies et sont évaluées de gauche à droite. Recherchée : case when Arg1 then Arg2 else Arg3 end RenvoieArg2 siArg1=true etArg3 siArg1=false. Plusieurs expressions when ou then peuvent être saisies et sont évaluées de gauche à droite. Plus d'informations sont disponibles ci-dessous. Exemple : case when 1 < 2 then "a" when 1 < 3 then "b" else "c" end case [Column] when 3 then "a" when 2 then "b" else "c" end pour plus d'exemples, voir ci-dessous et la rubrique Colonnes calculées basées sur des conditions. |
If(Arg1,Arg2,Arg3) | RenvoieArg2 siArg1=true etArg3 siArg1=false.Arg1 est de type booléen et correspond en général au résultat d'une comparaison.Arg2 etArg3 peuvent être de tout type, mais ils doivent être du même type ou null. Les deuxième et troisième arguments traitent uniquement les sous-ensembles des lignes, ce qui a un impact sur les méthodes d'accumulation et basées sur les colonnes. Plus d'informations sont disponibles ci-dessous. Exemples : If([Count] > 3, "many", "few") If(true, null, null) -> (Vide) If(true, 1, null) -> 1 If(false, null, 2) -> 2 If(null, 1, 2) -> (Vide) If(1 < 2, "Small", "Big")-> Small If([Column] Is Null,"0","has value") pour plus d'exemples, voir ci-dessous et la rubrique Colonnes calculées basées sur des conditions. |
Is Not Null | Utilisé dans une instructionIf ouCase pour déterminer si une expression génère ou non une valeur vide (valeur null). Exemple : If([Column] Is Not Null, "value was not null", "value was null") si une expression comprend des valeurs vides ou manquantes (valeurs null), vous pouvez utiliser la fonctionSN (voir Fonctions de conversion) pour remplacer ces valeurs par la valeur spécifiée. |
Is Null |
Utilisé dans une instructionIf ouCase pour déterminer si une expression génère ou non une valeur vide (valeur null). Exemple : If([Column] Is Null, "value was null", "value was not null") si une expression comprend des valeurs vides ou manquantes (valeurs null), vous pouvez utiliser la fonctionSN (voir Fonctions de conversion) pour remplacer ces valeurs par la valeur spécifiée. |
Informations supplémentaires sur l'utilisation de « if » dans les expressions :
Lorsque vous utilisez une instruction If dans une expression, la condition du premier argument limite les valeurs à évaluer dans le troisième argument. Prenons l'exemple suivant avec une colonne contenant des entiers :
Si l'on insère une colonne calculée à l'aide de l'expression suivante :
if(Col1 < 2, Max(Col1), Max(Col1))
Une nouvelle colonne avec deux valeurs différentes est générée ; l'une affichant la valeur max. de toutes les valeurs inférieures à 2 et l'autre affichant la valeur max. pour les autres valeurs (correspondant aussi à la valeur max. de l'ensemble de la colonne) :
Le rôle de la fonctionIf est de diviser la colonne en deux groupes, puis de continuer l'évaluation de l'expression avec les nouveaux groupes.
Si vous utilisez l'expressionPercentile à la place, la manière dont la première condition divise la colonne aura un impact sur les résultats obtenus :
Si l'on insère deux colonnes à l'aide des deux expressions suivantes :
if (Col2 < 4, 0, Percentile(Col2, 70))
if (Col2 < 6, 0, Percentile(Col2, 70))
Le résultat obtenu est le suivant :
La valeur du centile varie selon la manière dont la fonction If a regroupé les données.Informations supplémentaires sur l'utilisation des expressions CASE :
Si vous utilisez des expressions Case, la condition qui suit « when » est calculée pour l'ensemble de la colonne. L'argument qui suit « then » est calculé pour les lignes définies par la condition « when ». Si l'expression contient plusieurs paires « when- then », l'une des conditions « then » est limitée par toutes les précédentes conditions ainsi que par la dernière.
Exemple avec une colonne d'entiers :
Si l'on insère deux colonnes calculées, appelées Case Min et Case Max, à l'aide des expressions suivantes :
Case Min :
case when [Col1]<Avg([Col1]) then Min([Col1]) when [Col1]<(Avg([Col1]) + 1) then Min([Col1]) else Min([Col1]) end
Case Max :
case when [Col1] < Avg([Col1]) then Max([Col1]) when [Col1] < (Avg([Col1]) + 1) then Max([Col1]) else Max([Col1]) end
Le résultat sera le suivant :