Funzioni logiche
Questo articolo illustra le funzioni logiche e i relativi utilizzi in Tableau. Mostra anche come creare un calcolo logico attraverso un esempio.
Perché utilizzare i calcoli logici
I calcoli logici ti consentono di determinare se una determinata condizione è vera o falsa (logica booleana). Ad esempio, potresti voler classificare i valori in base a determinati limiti.
Un calcolo logico potrebbe presentarsi in questo modo:
IF [Profit] > 0
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END
Funzioni logiche e operatori disponibili in Tableau
AND
Sintassi | <expr1> AND <expr2> |
Definizione | Esegue una congiunzione logica su due espressioni. Se entrambi i lati sono True, il test logico restituisce True. |
Output | Booleano (True o False) |
Esempio | IF [Season] = "Spring" AND "[Season] = "Fall" “Se sia (Season = Spring) e (Season = Fall) sono contemporaneamente True, viene restituito It’s the apocalypse and footwear doesn’t matter”. |
Note | Spesso usato con IF e IIF. Vedi anche NOT e OR. Se entrambe le espressioni sono Se crei un calcolo in cui il risultato di un confronto Nota: l’operatore |
CASE
Sintassi | CASE <expression>
|
Output | Dipende dal tipo di dati dei valori <then> . |
Definizione | Valuta l’espressione |
Esempio |
“Controlla il campo Season. Se il valore è Summer, restituisci Sandals. Se il valore è Winter, restituisci Boots. Se nessuna delle opzioni nel calcolo corrisponde a quanto indicato nel campo Season, restituisci Sneakers.” |
Note | Utilizzato con WHEN, THEN, ELSE e END. Suggerimento: spesso è possibile utilizzare un gruppo per ottenere gli stessi risultati di una complicata funzione CASE oppure utilizzare CASE per sostituire la funzionalità di raggruppamento nativa, come nell’esempio precedente. Potresti eseguire test per determinare quale offre le migliori prestazioni per il tuo scenario. |
ELSE
Sintassi | CASE <expression>
|
Definizione | Una parte facoltativa di un’espressione IF o CASE utilizzata per specificare un valore predefinito da restituire se nessuna delle espressioni testate è True. |
Esempio | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] |
Note | Utilizzato con CASE, WHEN, IF, ELSEIF, THEN e END
|
ELSEIF
Sintassi | [ELSEIF <test2> THEN <then2>] |
Definizione | Una parte facoltativa di un’espressione IF utilizzata per specificare condizioni aggiuntive oltre l’IF iniziale. |
Esempio | IF [Season] = "Summer" THEN 'Sandals' |
Note | Utilizzato con IF, THEN, ELSE e END
A differenza di |
END
Definizione | Utilizzato per chiudere un’espressione IF o CASE . |
Esempio | IF [Season] = "Summer" THEN 'Sandals' “Se Season = Summer, restituisci Sandals. In caso contrario, controlla l’espressione successiva. Se Season = Winter, restituisci Boots. Se nessuna delle espressioni è True, restituisci Sneakers.” CASE [Season] “Controlla il campo Season. Se il valore è Summer, restituisci Sandals. Se il valore è Winter, restituisci Boots. Se nessuna delle opzioni nel calcolo corrisponde a quanto indicato nel campo Season, restituisci Sneakers.” |
Note |
IF
Sintassi | IF <test1> THEN <then1> |
Output | Dipende dal tipo di dati dei valori <then> . |
Definizione | Testa una serie di espressioni e restituisce il valore |
Esempio | IF [Season] = "Summer" THEN 'Sandals' “Se Season = Summer, restituisci Sandals. In caso contrario, controlla l’espressione successiva. Se Season = Winter, restituisci Boots. Se nessuna delle espressioni è True, restituisci Sneakers.” |
Note |
IFNULL
Sintassi | IFNULL(expr1, expr2) |
Output | Dipende dal tipo di dati dei valori <expr> . |
Definizione | Restituisce |
Esempio | IFNULL([Assigned Room], "TBD") “Se il campo Assigned Room non è Null, restituisci il relativo valore. Se il campo Assigned Room è Null, restituisci invece TBD.” |
Note | Confronta con ISNULL. Vedi anche ZN. |
IIF
Sintassi | IIF(<test>, <then>, <else>, [<unknown>]) |
Output | Dipende dal tipo di dati dei valori nell’espressione. |
Definizione | Controlla se una condizione è soddisfatta (<test> ) e restituisce <then> se il test è True, <else> se il test è False e un valore facoltativo per <unknown> se il test è Null. Se il valore unknown facoltativo non è specificato, IIF restituisce Null. |
Esempio | IIF([Season] = 'Summer', 'Sandals', 'Other footwear') “Se Season = Summer, restituisci Sandals. In caso contrario, restituisci Other footwear” IIF([Season] = 'Summer', 'Sandals', “Se Season = Summer, restituisci Sandals. In caso contrario, controlla l’espressione successiva. Se Season = Winter, restituisci Boots. Se nessuna delle due è True, restituisci Sneakers.” IIF('Season' = 'Summer', 'Sandals', “Se Season = Summer, restituisci Sandals. In caso contrario, controlla l’espressione successiva. Se Season = Winter, restituisci Boots. Se nessuna delle espressioni è True, restituisci Sneakers.” |
Note |
In altre parole, nel calcolo seguente il risultato sarà Red, non Orange, perché l’espressione smette di essere valutata non appena A=A viene valutato come True:
|
IN
Sintassi | <expr1> IN <expr2> |
Output | Booleano (True o False) |
Definizione | Restituisce TRUE se qualsiasi valore in <expr1> corrisponde a qualsiasi valore in <expr2> . |
Esempio | SUM([Cost]) IN (1000, 15, 200) “Il valore del campo Cost è 1000, 15 o 200?” [Field] IN [Set] “Il valore del campo è presente nell’insieme?” |
Note | I valori in Vedi anche WHEN. |
ISDATE
Sintassi | ISDATE(string) |
Output | Booleano (True o False) |
Definizione | Restituisce True se una stringa <string> è una data valida. L’espressione di input deve essere un campo stringa (di testo). |
Esempio | ISDATE("2018-09-22") “La stringa 2018-09-22 è una data formattata correttamente?” |
Note | Ciò che viene considerato una data valida dipende dalle impostazioni locali(Il collegamento viene aperto in una nuova finestra) del sistema che valuta il calcolo. Ad esempio: Negli Stati Uniti:
Nel Regno Unito:
|
ISNULL
Sintassi | ISNULL(expression) |
Output | Booleano (True o False) |
Definizione | Restituisce True se l’espressione |
Esempio | ISNULL([Assigned Room]) “Il campo Assigned Room è Null?” |
Note | Confronta con IFNULL. Vedi anche ZN. |
MAX
Sintassi | MAX(expression) oppure MAX(expr1, expr2) |
Output | Stesso tipo di dati dell’argomento o NULL se qualsiasi parte dell’argomento è NULL. |
Definizione | Restituisce il massimo dei due argomenti, che devono essere dello stesso tipo di dati.
|
Esempio | MAX(4,7) = 7 |
Note | Per le stringhe
Per le origini dati di database, Per le date Per le date, Come aggregazione
Come confronto
Vedi anche |
MIN
Sintassi | MIN(expression) oppure MIN(expr1, expr2) |
Output | Stesso tipo di dati dell’argomento o NULL se qualsiasi parte dell’argomento è NULL. |
Definizione | Restituisce il minimo dei due argomenti, che devono essere dello stesso tipo di dati.
|
Esempio | MIN(4,7) = 4 |
Note | Per le stringhe
Per le origini dati di database, Per le date Per le date, Come aggregazione
Come confronto
Vedi anche |
NOT
Sintassi | NOT <expression> |
Output | Booleano (True o False) |
Definizione | Esegue una negazione logica su un’espressione. |
Esempio | IF NOT [Season] = "Summer" “Se Season non è uguale a Summer, restituisci Don’t wear sandals. In caso contrario, restituisci Wear sandals.” |
Note |
OR
Sintassi | <expr1> OR <expr2> |
Output | Booleano (True o False) |
Definizione | Esegue una disgiunzione logica su due espressioni. |
Esempio | IF [Season] = "Spring" OR [Season] = "Fall" “Se (Season = Spring) o (Season = Fall) è True, restituisci Sneakers.” |
Note | Spesso usato con IF e IIF. Vedi anche AND e NOT. Se una delle due espressioni è Se crei un calcolo che visualizza il risultato di un confronto Nota: l’operatore |
THEN
Sintassi | IF <test1> THEN <then1>
|
Definizione | Una parte richiesta di un’espressione IF , ELSEIF o CASE , utilizzata per definire quale risultato restituire se un valore o un test specifico è True. |
Esempio | IF [Season] = "Summer" THEN 'Sandals' “Se Season = Summer, restituisci Sandals. In caso contrario, controlla l’espressione successiva. Se Season = Winter, restituisci Boots. Se nessuna delle espressioni è True, restituisci Sneakers.” CASE [Season] “Controlla il campo Season. Se il valore è Summer, restituisci Sandals. Se il valore è Winter, restituisci Boots. Se nessuna delle opzioni nel calcolo corrisponde a quanto indicato nel campo Season, restituisci Sneakers.” |
Note |
WHEN
Sintassi | CASE <expression>
|
Definizione | Una parte richiesta di un’espressione CASE . Trova il primo <value> che corrisponde a <expression> e restituisce il valore <then> corrispondente. |
Esempio | CASE [Season] “Controlla il campo Season. Se il valore è Summer, restituisci Sandals. Se il valore è Winter, restituisci Boots. Se nessuna delle opzioni nel calcolo corrisponde a quanto indicato nel campo Season, restituisci Sneakers.” |
Note | Utilizzato con CASE, THEN, ELSE e END.
CASE <expression> I valori con cui si confronta |
ZN
Sintassi | ZN(expression) |
Output | Dipende dal tipo di dati di <expression> oppure 0. |
Definizione | Restituisce <expression> se non è Null, altrimenti restituisce zero. |
Esempio | ZN([Test Grade]) “Se Test Grade non è Null, restituisci il relativo valore. Se Test Grade è Null, restituisci 0.” |
Note |
Vedi anche ISNULL. |
Nota: alcuni di questi sono in realtà operatori logici e appaiono in nero, non in blu. Per maggiori informazioni, consulta Sintassi degli operatori.
CASE è spesso più facile da usare di IF o IIF. In molti casi, IF, IIF e CASE possono essere utilizzati in modo intercambiabile. Un’istruzione CASE può sempre essere riscritta come istruzione IF, anche se l’istruzione CASE sarà generalmente più concisa e potrebbe essere più semplice da interpretare. Tuttavia, non tutte le istruzioni IF possono essere scritte come istruzioni CASE, poiché ogni ELSEIF potrebbe fare riferimento a un campo diverso.
Suggerimento: confrontiamo un esempio utilizzando la stessa logica tra queste tre funzioni:
CASE | IF | IIF |
CASE [Region] | IF [Region] = 'West' THEN 1 | IIF([Region] = 'West', 1, |
La struttura CASE è molto semplice, facile da scrivere e interpretare. Tuttavia, l’espressione (in questo caso, [Region]) non può essere un’operazione logica, a differenza di IF o IIF. I valori Null vengono gestiti allo stesso modo per CASE e IF. | La struttura IF THEN consente più clausole ELSEIF, il che rende le valutazioni multiple molto più semplici rispetto a IIF. Gestione dei valori NULL: qualsiasi risultato sconosciuto (Null) viene gestito dalla stessa clausola ELSE dei risultati False. In questo caso, a qualsiasi regione diversa dalle quattro specificate (incluso Null) verrà assegnato il valore 5. | La struttura IIF gestisce i risultati sconosciuti in modo diverso rispetto ai risultati False e ha una sintassi diversa da IF. Il compromesso per la gestione specifica dei valori Null è l’annidamento, come nel caso precedente, che può essere complicato da scrivere e interpretare. Gestione dei valori NULL: a qualsiasi regione non Null diversa dalle quattro specificate verrà assegnato il valore 5, ma a un valore Null verrà assegnato 0. |
Nota: molte volte è possibile utilizzare un gruppo per ottenere gli stessi risultati di una funzione CASE complicata. Esegui un test per stabilire se un’opzione offre migliori prestazioni rispetto all’altra.
Esempi
Le funzioni CASE possono essere utili per scenari come la ridefinizione dell’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
Oppure per offrire all’utente finale la possibilità di selezionare quale misura visualizzare in un grafico quando vengono utilizzate con un parametro(Il collegamento viene aperto in una nuova finestra):
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
Creare un calcolo logico
Per informazioni su come creare un calcolo logico, segui i passaggi seguenti.
- In Tableau Desktop, connettiti all’origine dati salvata Esempio - Supermercato, fornita con Tableau.
- Passa a un foglio di lavoro.
- Dal riquadro Dati, trascina Stato sullo spazio Righe.
- Dal riquadro Dati, trascina Categoria sullo spazio Righe e posizionalo a destra di Stato.
- Dal riquadro Dati, trascina Vendite nello spazio Colonne.
- Seleziona Analisi > Crea campo calcolato.
- Nell’editor di calcolo che si apre, esegui le seguenti operazioni:
- Denomina il campo calcolato KPI.
- Immetti la seguente formula:
SUM([Profit]) > 0
Questo calcolo controlla rapidamente se un membro è maggiore di zero. In caso affermativo, restituisce vero; in caso contrario, restituisce falso.
- Al termine, fai clic su OK.
- Dal riquadro Dati, trascina KPI su Colore sulla scheda Indicatori.
Ora puoi vedere le categorie che perdono denaro in ogni stato.
Visualizzerai il nuovo campo calcolato sotto Misurazioni nel riquadro Dati. Proprio come gli altri campi, puoi utilizzarlo in una o più visualizzazioni.
Vedi anche
Visualizzare gli indicatori chiave di prestazione