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éfinitionConjonction logique entre deux expressions. (Si les deux côtés sont vrais, le test logique renvoie la valeur « true ».)
RésultatBooléen (Vrai ou Faux)
Exemple
IF [Season] = "Spring" AND "[Season] = "Fall" 
THEN "It's the apocalypse and footwear doesn't matter"
END

« 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 TRUE (c’est-à-dire ni FALSE ni NULL), le résultat est TRUE. Si l’une des expressions est NULL, le résultat est NULL. Dans tous les autres cas, le résultat obtenu est FALSE.

Si vous créez un calcul dans lequel le résultat d’une comparaison AND s’affiche dans une feuille de calcul, Tableau affiche les valeurs TRUE et FALSE. Si vous voulez modifier cela, utilisez la zone de mise en forme dans la boîte de dialogue Mettre en forme.

Remarque : l’opérateur AND utilise l’évaluation en circuit court. Cela signifie que si la première expression est évaluée comme étant FALSE, la seconde expression n’est pas du tout évaluée. Cela peut être utile si la seconde expression renvoie une erreur lorsque la première expression est FALSE, car dans ce cas-là, la seconde expression n’est jamais évaluée.

CASE

SyntaxeCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
RésultatDépend du type de données des valeurs <then>.
Définition

Évalue l’expression et la compare aux options spécifiées (<value1>, <value2>, etc.). Lorsqu’une value correspondant à l’expression est rencontrée, CASE renvoie la valeur de return correspondante. En l’absence de correspondance, la valeur par défaut est renvoyée. S’il n’y pas de valeur par défaut et qu’aucune valeur ne correspond, une valeur null est renvoyée.

Exemple
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

« 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

Voir également IF et IIF.

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

SyntaxeCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DéfinitionComposant 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' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END
Remarques

Utilisé avec CASE, WHEN, IF, ELSEIF, THEN et END

ELSE est facultatif avec CASE et IF. Dans un calcul où ELSE n’est pas précisé, si aucun des <test> n’est vrai, le calcul global renvoit une valeur null.

ELSE ne requiert pas de condition (telle que [Season] = "Winter") et peut être considéré comme une forme de traitement des valeurs null.

ELSEIF

Syntaxe[ELSEIF <test2> THEN <then2>]
DéfinitionComposant facultatif d’une expression IF servant à spécifier des conditions supplémentaires au-delà du IF initial.
Exemple
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSEIF [Season] = "Spring" THEN 'Sneakers'
ELSEIF [Season] = "Autumn" THEN 'Sneakers'
ELSE 'Bare feet'
END
Remarques

Utilisé avec IF, THEN, ELSE et END

ELSEIF peut être considéré comme une clause IF supplémentaire. ELSEIF est facultatif et peut être répété plusieurs fois.

À la différence de ELSE, ELSEIF requiert une condition (telle que [Season] = "Winter").

END

DéfinitionUtilisé pour fermer une expression IF ou CASE.
Exemple
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

« 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] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

« 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, WHEN, IF, ELSEIF, THEN et ELSE.

IF

SyntaxeIF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
RésultatDépend du type de données des valeurs <then>.
Définition

Teste une série d’expressions et renvoie la valeur <then> pour le premier <test> vrai.

Exemple
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

« 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

Voir également IF et IIF.

Utilisé avec ELSEIF, THEN, ELSE et END

IFNULL

SyntaxeIFNULL(expr1, expr2)
RésultatDépend du type de données des valeurs <expr>.
Définition

Renvoie <expr1> si celle-ci n’est pas une valeur null, sinon renvoie <expr2>.

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. IFNULL renvoie toujours une valeur. ISNULL renvoie une valeur booléenne (vrai ou faux).

Voir également ZN.

IIF

SyntaxeIIF(<test>, <then>, <else>, [<unknown>])
RésultatDépend du type de données des valeurs dans l’expression.
DéfinitionVé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', 
IIF('Season' = 'Winter', 'Boots', 'Other footwear')
)

« 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', 
IIF('Season' = 'Winter', 'Boots',
IIF('Season' = 'Spring', 'Sneakers', 'Other footwear')
)
)

« 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

Voir également IF et CASE.

IIF n’a pas d’équivalent à ELSEIF (comme IF) ou des clauses répétées WHEN (comme CASE). Au lieu de cela, plusieurs tests peuvent être évalués de manière séquentielle par imbrication d’instructions IIF comme l’élément <unknown>. La première valeur « true » (la plus externe) est renvoyée.

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 :

IIF('A' = 'A', 'Red', IIF('B' = 'B', 'Orange', IIF('C' = 'D', 'Yellow', 'Green')))

IN

Syntaxe<expr1> IN <expr2>
RésultatBooléen (Vrai ou Faux)
DéfinitionRenvoie 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 <expr2> peuvent être un ensemble, une liste de valeurs littérales ou un champ combiné.

Voir également WHEN.

ISDATE

SyntaxeISDATE(string)
RésultatBooléen (Vrai ou Faux)
DéfinitionRenvoie 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 :

  • ISDATE("2018-09-22") = TRUE
  • ISDATE("2018-22-09") = FALSE

Au Royaume-Uni :

  • ISDATE("2018-09-22") = FALSE
  • ISDATE("2018-22-09") = TRUE

ISNULL

SyntaxeISNULL(expression)
RésultatBooléen (Vrai ou Faux)
Définition

Renvoie la valeur true si l’<expression> est NULL (ne contient pas de données valides).

Exemple
ISNULL([Assigned Room])

« Le champ Assigned Room est-il une valeur null ? »

Remarques

Comparer avec IFNULL. IFNULL renvoie toujours une valeur. ISNULL renvoie une valeur booléenne.

Voir également ZN.

MAX

SyntaxeMAX(expression) ou MAX(expr1, expr2)
RésultatMê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.

MAX peut également être appliqué à un seul champ en tant qu’agrégation.

Exemple
MAX(4,7) = 7
MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021#
MAX([Name]) = "Zander"
Remarques

Pour les chaînes

MAX est généralement la valeur qui vient en dernier dans l’ordre alphabétique.

Pour les sources de données de base de données, la valeur de la chaîne MAX est la valeur la plus élevée dans la séquence de tri définie par la base de données pour cette colonne.

Pour les dates

Pour les dates, MAX est la date la plus récente. Si MAX est une agrégation, le résultat n’aura pas de hiérarchie de dates. Si MAX est une comparaison, le résultat conservera la hiérarchie de dates.

En tant qu’agrégation

MAX(expression) est une fonction d’agrégation et renvoie un seul résultat agrégé. Elle s’affiche sous la forme AGG(expression) dans la visualisation.

En tant que comparaison

MAX(expr1, expr2) compare les deux valeurs et renvoie une valeur au niveau des lignes.

Voir également MIN.

MIN

SyntaxeMIN(expression) ou MIN(expr1, expr2)
RésultatMê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.

MIN peut également être appliqué à un seul champ en tant qu’agrégation.

Exemple
MIN(4,7) = 4
MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#
MIN([Name]) = "Abebi"
Remarques

Pour les chaînes

MIN est généralement la valeur qui vient en premier dans l’ordre alphabétique.

Pour les sources de données de base de données, la valeur de la chaîne MIN est la valeur la plus faible dans la séquence de tri définie par la base de données pour cette colonne.

Pour les dates

Pour les dates, MIN est la date la plus récente. Si MIN est une agrégation, le résultat n’aura pas de hiérarchie de dates. Si MIN est une comparaison, le résultat conservera la hiérarchie de dates.

En tant qu’agrégation

MIN(expression) est une fonction d’agrégation et renvoie un seul résultat agrégé. Elle s’affiche sous la forme AGG(expression) dans la visualisation.

En tant que comparaison

MIN(expr1, expr2) compare les deux valeurs et renvoie une valeur au niveau des lignes.

Voir également MAX.

NOT

SyntaxeNOT <expression>
RésultatBooléen (Vrai ou Faux)
DéfinitionNégation logique entre deux expressions.
Exemple
IF NOT [Season] = "Summer" 
THEN 'Don't wear sandals'
ELSE 'Wear sandals' 
END

« Si Season est différent de Summer, renvoyer Don’t wear sandals. Sinon, envoyer Wear sandals. »

Remarques

Souvent utilisé avec IF et IIF. Voir également AND et OU.

OU

Syntaxe<expr1> OR <expr2>
RésultatBooléen (Vrai ou Faux)
DéfinitionDisjonction logique entre deux expressions.
Exemple
IF [Season] = "Spring" OR [Season] = "Fall" 
THEN "Sneakers"
END

« 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 TRUE, le résultat est TRUE. Si les deux expressions sont FALSE, le résultat est FALSE. Si les deux expressions sont NULL, le résultat est NULL.

Si vous créez un calcul qui affiche le résultat d’une comparaison OR dans une feuille de calcul, Tableau affiche les valeurs TRUE et FALSE. Si vous voulez modifier cela, utilisez la zone de mise en forme dans la boîte de dialogue Mettre en forme.

Remarque : l’opérateur OR utilise l’évaluation en circuit court. Cela signifie que si la première expression est évaluée comme étant TRUE, la seconde expression n’est pas du tout évaluée. Cela peut être utile si la seconde expression renvoie une erreur lorsque la première expression est TRUE, car dans ce cas-là, la seconde expression n’est jamais évaluée.

THEN

SyntaxeIF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
DéfinitionUne 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' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

« 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] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

« 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, WHEN, IF, ELSEIF, THEN, ELSE et END

WHEN

SyntaxeCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DéfinitionUne partie obligatoire d’une expression CASE. Trouve la première <value> correspondant à <expression> et renvoie la valeur <then> correspondante.
Exemple
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

« 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 prend également en charge la construction WHEN IN, par exemple :

CASE <expression> 
WHEN IN <set1> THEN <then1>
WHEN IN <combinedfield> THEN <then2>
...
ELSE <default>
END

Les valeurs de comparaison pour WHEN IN peuvent être un ensemble, une liste d’expressions littérales ou un champ combiné. Voir également IN.

ZN

SyntaxeZN(expression)
RésultatDépend du type de données de l’<expression>, ou 0.
DéfinitionRenvoie <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

ZN est un cas spécialisé de IFNULL où l’alternative, si l’expression est une valeur null, est toujours 0 plutôt que d’être spécifiée dans le calcul.

ZN est particulièrement utile lors de l’exécution de calculs supplémentaires et une valeur null rendrait l’ensemble du calcul nul. Cependant, soyez prudent en interprétant ces résultats car une valeur null n’est pas toujours synonyme de 0 et pourrait représenter des données manquantes.

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.

Remarque sur CASE, IF et IIF

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 :

CASEIFIIF
CASE [Region]
WHEN 'West' THEN 1
WHEN 'East' THEN 2
WHEN 'South' THEN 3
WHEN 'North' Then 4
ELSE 5
END
IF [Region] = 'West' THEN 1
ELSEIF [Region] = 'East' THEN 2
ELSEIF [Region] = 'South' THEN 3
ELSEIF [Region] = 'North' THEN 4
ELSE 5
END
IIF([Region] = 'West', 1,
IIF([Region] = 'East', 2,
IIF([Region] = 'South', 3,
IIF([Region] = 'North', 4,
5, 0)
)
)
)

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.

  1. Dans Tableau Desktop, connectez-vous à la source de données Exemple - Hypermarché enregistrée qui est fournie avec Tableau.
  2. Accédez à une feuille de calcul.
  3. Depuis le volet Données, faites glisser State (État) vers l’étagère Lignes.
  4. Depuis le volet Données, faites glisser Category (Catégorie) vers l’étagère Lignes et placez-le à droite de State.
  5. Dans le volet Données, faites glisser Sales (Ventes) vers l’étagère Colonnes.
  6. Sélectionnez Analyse > Créer un champ calculé.
  7. 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.
  8. 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.

  9. 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.

Consultez également

Visualiser les KPI

Fonctions dans Tableau

Fonctions de Tableau (par catégorie)

Fonctions de Tableau (par ordre alphabétique)

Merci de vos commentaires !Avis correctement envoyé. Merci