Fonctions logiques
Cet article présente les fonctions logiques et leurs utilisations dans Tableau. Il montre également comment créer un calcul logique en se basant sur un exemple.
Pourquoi utiliser des calculs logiques
Les calculs logiques vous permettent de déterminer si une certaine condition est vraie ou fausse (logique booléenne). Par exemple, vous pouvez souhaiter catégoriser les valeurs en fonction de certains seuils.
Un calcul logique peut se présenter comme suit :
IF [Profit] > 0
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END
Fonctions et opérateurs logiques dans Tableau
AND
Syntaxe | <expr1> AND <expr2> |
Définition | Conjonction logique entre deux expressions. (Si les deux côtés sont vrais, le test logique renvoie la valeur « true ».) |
Résultat | Booléen (Vrai ou Faux) |
Exemple | IF [Season] = "Spring" AND "[Season] = "Fall" « Si les deux expressions (Season = Spring) et (Season = Fall) sont vraies simultanément, renvoyer It’s the apocalypse and footwear doesn’t matter ». |
Remarques | Souvent utilisé avec IF et IIF. Voir également NOT et OU. Si les deux expressions sont Si vous créez un calcul dans lequel le résultat d’une comparaison Remarque : l’opérateur |
CASE
Syntaxe | CASE <expression>
|
Résultat | Dépend du type de données des valeurs <then> . |
Définition | Évalue l’ |
Exemple |
« Examiner le champ Season. Si la valeur est Summer, renvoyer Sandals. Si la valeur est Winter, renvoyer Boots. Si aucune des options du calcul ne correspond à ce qui est indiqué dans le champ Season, renvoyer Sneakers. » |
Remarques | Utilisé avec WHEN, THEN, ELSE et END. Conseil : dans de nombreux cas, vous pouvez utiliser un groupe pour obtenir les mêmes résultats qu’une fonction CASE compliquée, ou utiliser CASE pour remplacer la fonctionnalité de regroupement native, comme dans l’exemple précédent. Vous voudrez peut-être tester quelle fonction est la plus performante pour votre scénario. |
ELSE
Syntaxe | CASE <expression>
|
Définition | Composant facultatif d’une expression IF ou CASE servant à spécifier une valeur par défaut à renvoyer si aucune des expressions testées n’est vraie. |
Exemple | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] |
Remarques | Utilisé avec CASE, WHEN, IF, ELSEIF, THEN et END
|
ELSEIF
Syntaxe | [ELSEIF <test2> THEN <then2>] |
Définition | Composant facultatif d’une expression IF servant à spécifier des conditions supplémentaires au-delà du IF initial. |
Exemple | IF [Season] = "Summer" THEN 'Sandals' |
Remarques | Utilisé avec IF, THEN, ELSE et END
À la différence de |
END
Définition | Utilisé pour fermer une expression IF ou CASE . |
Exemple | IF [Season] = "Summer" THEN 'Sandals' « Si Season = Summer, renvoyer Sandals. Sinon, examiner l’expression suivante. Si Season = Winter, renvoyer Boots. Si aucune des expressions n’est vraie, renvoyer Sneakers. » CASE [Season] « Examiner le champ Season. Si la valeur est Summer, renvoyer Sandals. Si la valeur est Winter, renvoyer Boots. Si aucune des options du calcul ne correspond à ce qui est indiqué dans le champ Season, renvoyer Sneakers. » |
Remarques |
IF
Syntaxe | IF <test1> THEN <then1> |
Résultat | Dépend du type de données des valeurs <then> . |
Définition | Teste une série d’expressions et renvoie la valeur |
Exemple | IF [Season] = "Summer" THEN 'Sandals' « Si Season = Summer, renvoyer Sandals. Sinon, examiner l’expression suivante. Si Season = Winter, renvoyer Boots. Si aucune des expressions n’est vraie, renvoyer Sneakers. » |
Remarques |
IFNULL
Syntaxe | IFNULL(expr1, expr2) |
Résultat | Dépend du type de données des valeurs <expr> . |
Définition | Renvoie |
Exemple | IFNULL([Assigned Room], "TBD") « Si le champ Assigned Room n’est pas une valeur null, renvoyer sa valeur. Si le champ Assigned Room est une valeur null, renvoyer TBD à la place. » |
Remarques | Comparer avec ISNULL. Voir également ZN. |
IIF
Syntaxe | IIF(<test>, <then>, <else>, [<unknown>]) |
Résultat | Dépend du type de données des valeurs dans l’expression. |
Définition | Vérifie si une condition est remplie (<test> ), et renvoie <then> si le test est vrai, <else> si le test est faux, et une valeur facultative pour <unknown> si le test est nul. Si l’inconnue facultative n’est pas spécifiée, IIF renvoie une valeur null. |
Exemple | IIF([Season] = 'Summer', 'Sandals', 'Other footwear') « Si Season = Summer, renvoyer Sandals. Dans le cas contraire, renvoyer Other footwear » IIF([Season] = 'Summer', 'Sandals', « Si Season = Summer, renvoyer Sandals. Sinon, examiner l’expression suivante. Si Season = Winter, renvoyer Boots. Si ni l’un ni l’autre n’est vrai, renvoyer Sneakers." IIF('Season' = 'Summer', 'Sandals', « Si Season = Summer, renvoyer Sandals. Sinon, examiner l’expression suivante. Si Season = Winter, renvoyer Boots. Si aucune des expressions n’est vraie, renvoyer Sneakers. » |
Remarques |
Cela signifie que, dans le calcul ci-dessous, le résultat sera Rouge et non Orange, car l’expression cesse d’être évaluée dès que A=A est évalué comme vrai :
|
IN
Syntaxe | <expr1> IN <expr2> |
Résultat | Booléen (Vrai ou Faux) |
Définition | Renvoie TRUE si une valeur dans <expr1> correspond à une valeur dans <expr2> . |
Exemple | SUM([Cost]) IN (1000, 15, 200) « La valeur du champ Cost est-elle 1000, 15 ou 200 ? » [Field] IN [Set] « La valeur du champ est-elle présente dans l’ensemble ? » |
Remarques | Les valeurs dans Voir également WHEN. |
ISDATE
Syntaxe | ISDATE(string) |
Résultat | Booléen (Vrai ou Faux) |
Définition | Renvoie la valeur true si une <string> donnée est une date valide. L’expression d’entrée doit être un champ de chaîne (texte). |
Exemple | ISDATE("2018-09-22") « La chaîne 2018-09-22 est-elle une date correctement formatée ? » |
Remarques | Ce qui est considéré comme une date valide dépend des paramètres régionaux(Le lien s’ouvre dans une nouvelle fenêtre) du système évaluant le calcul. Par exemple : Aux États-Unis :
Au Royaume-Uni :
|
ISNULL
Syntaxe | ISNULL(expression) |
Résultat | Booléen (Vrai ou Faux) |
Définition | Renvoie la valeur true si l’ |
Exemple | ISNULL([Assigned Room]) « Le champ Assigned Room est-il une valeur null ? » |
Remarques | Comparer avec IFNULL. Voir également ZN. |
MAX
Syntaxe | MAX(expression) ou MAX(expr1, expr2) |
Résultat | Même type de données que l’argument, ou NULL si une partie de l’argument est une valeur null. |
Définition | Renvoie la valeur maximum des deux arguments, qui doivent être du même type de données.
|
Exemple | MAX(4,7) = 7 |
Remarques | Pour les chaînes
Pour les sources de données de base de données, la valeur de la chaîne Pour les dates Pour les dates, En tant qu’agrégation
En tant que comparaison
Voir également |
MIN
Syntaxe | MIN(expression) ou MIN(expr1, expr2) |
Résultat | Même type de données que l’argument, ou NULL si une partie de l’argument est une valeur null. |
Définition | Renvoie la valeur minimum des deux arguments, qui doivent être du même type de données.
|
Exemple | MIN(4,7) = 4 |
Remarques | Pour les chaînes
Pour les sources de données de base de données, la valeur de la chaîne Pour les dates Pour les dates, En tant qu’agrégation
En tant que comparaison
Voir également |
NOT
Syntaxe | NOT <expression> |
Résultat | Booléen (Vrai ou Faux) |
Définition | Négation logique entre deux expressions. |
Exemple | IF NOT [Season] = "Summer" « Si Season est différent de Summer, renvoyer Don’t wear sandals. Sinon, renvoyer Wear sandals. » |
Remarques |
OU
Syntaxe | <expr1> OR <expr2> |
Résultat | Booléen (Vrai ou Faux) |
Définition | Disjonction logique entre deux expressions. |
Exemple | IF [Season] = "Spring" OR [Season] = "Fall" « Si (Season = Spring) ou (Season = Fall) est vrai, renvoyer Sneakers. » |
Remarques | Souvent utilisé avec IF et IIF. Voir également AND et NOT. Si l’une des expressions est Si vous créez un calcul qui affiche le résultat d’une comparaison Remarque : l’opérateur |
THEN
Syntaxe | IF <test1> THEN <then1>
|
Définition | Une partie obligatoire d’une expression IF , ELSEIF ou CASE , utilisée pour définir le résultat à renvoyer si une valeur ou un test spécifique est « true ». |
Exemple | IF [Season] = "Summer" THEN 'Sandals' « Si Season = Summer, renvoyer Sandals. Sinon, examiner l’expression suivante. Si Season = Winter, renvoyer Boots. Si aucune des expressions n’est vraie, renvoyer Sneakers. » CASE [Season] « Examiner le champ Season. Si la valeur est Summer, renvoyer Sandals. Si la valeur est Winter, renvoyer Boots. Si aucune des options du calcul ne correspond à ce qui est indiqué dans le champ Season, renvoyer Sneakers. » |
Remarques |
WHEN
Syntaxe | CASE <expression>
|
Définition | Une partie obligatoire d’une expression CASE . Trouve la première <value> correspondant à <expression> et renvoie la valeur <then> correspondante. |
Exemple | CASE [Season] « Examiner le champ Season. Si la valeur est Summer, renvoyer Sandals. Si la valeur est Winter, renvoyer Boots. Si aucune des options du calcul ne correspond à ce qui est indiqué dans le champ Season, renvoyer Sneakers. » |
Remarques | Utilisé avec CASE, THEN, ELSE et END.
CASE <expression> Les valeurs de comparaison pour |
ZN
Syntaxe | ZN(expression) |
Résultat | Dépend du type de données de l’<expression> , ou 0. |
Définition | Renvoie <expression> si celle-ci n’est pas nulle, sinon renvoie zéro. |
Exemple | ZN([Test Grade]) « Si la note du test n’est pas une valeur null, renvoyer sa valeur. Si la note du test est une valeur null, renvoyer 0. » |
Remarques |
Voir également ISNULL. |
Remarque : certains d’entre eux sont en fait des opérateurs logiques et apparaissent en noir, et non en bleu. Pour plus d’informations, consultez Syntaxe des opérateurs.
CASE est souvent plus simple à utiliser que IF ou IIF. Dans de nombreux cas, IF, IIF et CASE peuvent être utilisés de manière interchangeable. Même si elle est généralement plus concise et plus facile à comprendre, une instruction CASE peut toujours être réécrite sous la forme d’une instruction IF. Par contre, toutes les instructions IF ne peuvent pas être écrites sous forme d’instructions CASE, car chaque ELSEIF peut faire référence à un champ différent.
Conseil : prenons un exemple de comparaison en utilisant la même logique pour ces trois fonctions :
CASE | IF | IIF |
CASE [Region] | IF [Region] = 'West' THEN 1 | IIF([Region] = 'West', 1, |
La structure CASE est très simple et aussi facile à écrire qu’à comprendre. Par contre, l’expression (ici, [Region]) ne peut pas être une opération logique, à la différence de IF ou IIF. Les valeurs null sont traitées de la même manière pour CASE que pour IF. | La structure IF THEN autorise plusieurs clauses ELSEIF, ce qui rend les évaluations multiples beaucoup plus faciles qu’avec IIF. Gestion des valeurs null : tous les résultats inconnus (nuls) sont traités par la même clause ELSE que les résultats « false ». Ici, toute région autre que les quatre spécifiées (y compris une valeur null) se verra attribuer une valeur de 5. | La structure IIF gère les résultats inconnus différemment des résultats « false » et a une syntaxe différente de celle de IF. Le compromis pour la gestion spécifique des valeurs null est l’imbrication (comme ci-dessus), qui peut s’avérer difficile à écrire et à comprendre. Gestion des valeurs null : toute région non nulle autre que les quatre spécifiées se verra attribuer une valeur de 5, mais une valeur null se verra attribuer un 0. |
Remarque : dans de nombreux cas, vous pouvez utiliser un groupe pour obtenir les mêmes résultats qu’avec une fonction CASE complexe. Faites des tests pour voir si une option est plus performante que l’autre.
Exemples
Les fonctions CASE peuvent être utiles dans certains cas tels que le re-aliasing :
CASE LEFT(DATENAME('weekday',[Order Date]),3)
WHEN 'Sun' THEN 0
WHEN 'Mon' THEN 1
WHEN 'Tue' THEN 2
WHEN 'Wed' THEN 3
WHEN 'Thu' THEN 4
WHEN 'Fri' THEN 5
WHEN 'Sat' THEN 6
END
ou pour donner à l’utilisateur final la possibilité de sélectionner la mesure à afficher dans un graphique lorsqu’elle est utilisée avec un paramètre(Le lien s’ouvre dans une nouvelle fenêtre):
CASE [Choose a Measure]
WHEN "Sales" THEN SUM([Sales])
WHEN "Profit" THEN AVG([Profit])
WHEN "Quantity" THEN COUNT([Quantity])
WHEN "Shipping Cost" THEN MEDIAN([Shipping Cost])
END
Créer un calcul logique
Suivez les étapes ci-dessous pour apprendre à créer un calcul logique.
- Dans Tableau Desktop, connectez-vous à la source de données Exemple - Hypermarché enregistrée qui est fournie avec Tableau.
- Accédez à une feuille de calcul.
- Depuis le volet Données, faites glisser State (État) vers l’étagère Lignes.
- Depuis le volet Données, faites glisser Category (Catégorie) vers l’étagère Lignes et placez-le à droite de State.
- Dans le volet Données, faites glisser Sales (Ventes) vers l’étagère Colonnes.
- Sélectionnez Analyse > Créer un champ calculé.
- Dans l’éditeur de calcul qui s’ouvre, procédez comme suit :
- Nommez le champ calculé « KPI ».
- Entrez la formule suivante :
SUM([Profit]) > 0
Ce calcul vérifie rapidement si un membre est supérieur à zéro. Si tel est le cas, renvoie la valeur True. Sinon, renvoie la valeur False.
- Lorsque vous avez terminé, cliquez sur OK.
- Depuis le volet Données, faites glisser KPI vers Couleur sur la fiche Repères.
Vous pouvez maintenant voir les catégories qui perdent de l’argent dans chaque État.
Le nouveau champ calculé apparaît sous Mesures dans le volet Données. Comme vos autres champs, vous pouvez l’utiliser dans une ou plusieurs visualisations.