Logische functies
Dit artikel introduceert logische functies en hun gebruik in Tableau. Het laat ook zien hoe u een logische berekening kunt maken aan de hand van een voorbeeld.
Waarom logische berekeningen gebruiken
Met logische berekeningen kunt u bepalen of een bepaalde voorwaarde waar of onwaar is (Booleaanse logica). U wilt bijvoorbeeld waarden indelen op basis van bepaalde grenswaarden.
Een logische berekening zou er ongeveer als volgt uitzien:
IF [Profit] > 0
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END
Logische functies en operators beschikbaar in Tableau
AND
Syntaxis | <expr1> AND <expr2> |
Definitie | Voert een logische conjunctie uit op twee expressies. (Als beide zijden waar zijn, retourneert de logische test 'true'.) |
Uitvoer | Booleaans (waar of onwaar) |
Voorbeeld | IF [Season] = "Spring" AND "[Season] = "Fall" ’Als zowel (Season = Spring) als (Season = Fall) tegelijkertijd waar zijn, retourneer dan It's the apocalypse and footwear doesn't matter'. |
Opmerkingen | Vaak gebruikt met IF en IIF. Zie ook NOT en OR. Als beide expressies Als u een berekening maakt waarin het resultaat van een Opmerking: de operator |
CASE
Syntaxis | CASE <expression>
|
Uitvoer | Hangt af van datatype van de <then> -waarden. |
Definitie | Evalueert de |
Voorbeeld |
'Kijk naar het veld Season. Als de waarde Summer is, retourneer dan Sandals. Als de waarde Winter is, retourneer dan Boots. Als geen van de opties in de berekening overeenkomt met wat er in het veld Season staat, retourneer dan Sneakers'. |
Opmerkingen | Gebruikt met WHEN, THEN, ELSE en END. Tip: vaak kunt u een groep gebruiken om dezelfde resultaten te krijgen als een ingewikkelde CASE-functie, of CASE gebruiken om de oorspronkelijke functie Groepering te vervangen, zoals in het vorige voorbeeld. Misschien wilt u testen welke optie het beste presteert voor uw scenario. |
ELSE
Syntaxis | CASE <expression>
|
Definitie | Een optioneel onderdeel van een IF - of CASE -expressie die wordt gebruikt om een standaardwaarde op te geven die moet worden geretourneerd als geen van de geteste expressies waar is. |
Voorbeeld | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] |
Opmerkingen | Gebruikt met CASE, WHEN, IF, ELSEIF, THEN en END
|
ELSEIF
Syntaxis | [ELSEIF <test2> THEN <then2>] |
Definitie | Een optioneel onderdeel van een IF -expressie die wordt gebruikt om aanvullende voorwaarden te specificeren naast de initiële IF. |
Voorbeeld | IF [Season] = "Summer" THEN 'Sandals' |
Opmerkingen | Gebruikt met IF, THEN, ELSE en END
Anders dan |
END
Definitie | Wordt gebruikt om een IF - of CASE -expressie af te sluiten. |
Voorbeeld | IF [Season] = "Summer" THEN 'Sandals' ‘Als Season = Summer, retourneer dan Sandals. Zo niet, kijk dan naar de volgende expressie. Als Season = Winter, retourneer dan Boots. Als geen van beide expressies waar is, retourneer dan Sneakers'. CASE [Season] 'Kijk naar het veld Season. Als de waarde Summer is, retourneer dan Sandals. Als de waarde Winter is, retourneer dan Boots. Als geen van de opties in de berekening overeenkomt met wat er in het veld Season staat, retourneer dan Sneakers'. |
Opmerkingen |
IF
Syntaxis | IF <test1> THEN <then1> |
Uitvoer | Hangt af van datatype van de <then> -waarden. |
Definitie | Test een reeks expressies en retourneert de waarde |
Voorbeeld | IF [Season] = "Summer" THEN 'Sandals' ‘Als Season = Summer, retourneer dan Sandals. Zo niet, kijk dan naar de volgende expressie. Als Season = Winter, retourneer dan Boots. Als geen van beide expressies waar is, retourneer dan Sneakers'. |
Opmerkingen |
IFNULL
Syntaxis | IFNULL(expr1, expr2) |
Uitvoer | Hangt af van het datatype van de <expr> -waarden. |
Definitie | Retourneert |
Voorbeeld | IFNULL([Assigned Room], "TBD") ’Als het veld Assigned Room niet null is, wordt de waarde ervan geretourneerd. Als het veld Assigned Room null is, wordt in plaats daarvan TBD geretourneerd'. |
Opmerkingen | Vergelijk met ISNULL. Zie ook ZN. |
IIF
Syntaxis | IIF(<test>, <then>, <else>, [<unknown>]) |
Uitvoer | Hangt af van het datatype van de waarden in de expressie. |
Definitie | Controleert of aan een voorwaarde is voldaan (<test> ), en retourneert <then> als de test waar is, <else> als de test niet waar is, en een optionele waarde voor <unknown> als de test null is. Als de optionele onbekende niet is opgegeven, retourneert IIF null. |
Voorbeeld | IIF([Season] = 'Summer', 'Sandals', 'Other footwear') ‘Als Season = Summer, retourneer dan Sandals. Zo niet, retourneer dan Other footwear’ IIF([Season] = 'Summer', 'Sandals', ‘Als Season = Summer, retourneer dan Sandals. Zo niet, kijk dan naar de volgende expressie. Als Season = Winter, retourneer dan Boots. Als geen van beide waar is, retourneer dan Sneakers’. IIF('Season' = 'Summer', 'Sandals', ‘Als Season = Summer, retourneer dan Sandals. Zo niet, kijk dan naar de volgende expressie. Als Season = Winter, retourneer dan Boots. Als geen van de expressies waar is, retourneer dan Sneakers’. |
Opmerkingen |
Dat wil zeggen dat in de onderstaande berekening het resultaat Rood zal zijn en niet Oranje, omdat de expressie niet meer wordt geëvalueerd zodra A=A als ‘waar’ wordt geëvalueerd:
|
IN
Syntaxis | <expr1> IN <expr2> |
Uitvoer | Booleaans (waar of onwaar) |
Definitie | Retourneert TRUE als enige waarde in <expr1> overeenkomt met enige waarde in <expr2> . |
Voorbeeld | SUM([Cost]) IN (1000, 15, 200) ‘Is de waarde van het veld Cost 1.000, 15, or 200?’ [Field] IN [Set] ‘Is de waarde van het veld aanwezig in de set?’ |
Opmerkingen | De waarden in Zie ook WHEN. |
ISDATE
Syntaxis | ISDATE(string) |
Uitvoer | Booleaans (waar of onwaar) |
Definitie | Retourneert waar als een <string> een geldige datum is. De invoerexpressie moet een tekenreeks (tekst-)veld zijn. |
Voorbeeld | ISDATE("2018-09-22") ’Is de tekenreeks 2018-09-22 een correct ingedeelde datum?’ |
Opmerkingen | Wat als geldige datum wordt beschouwd, hangt af van de landinstelling(Link wordt in een nieuw venster geopend) van het systeem dat de berekening evalueert. Bijvoorbeeld: In de VS:
In het VK:
|
ISNULL
Syntaxis | ISNULL(expression) |
Uitvoer | Booleaans (waar of onwaar) |
Definitie | Retourneert waar als de |
Voorbeeld | ISNULL([Assigned Room]) ’Is het veld Assigned Room null?’ |
Opmerkingen | Vergelijk met IFNULL. Zie ook ZN. |
MAX
Syntaxis | MAX(expression) of MAX(expr1, expr2) |
Uitvoer | Hetzelfde datatype als het argument, of NULL als een deel van het argument nul is. |
Definitie | Retourneert het maximum van de twee argumenten. Deze moeten van hetzelfde datatype zijn.
|
Voorbeeld | MAX(4,7) = 7 |
Opmerkingen | Voor tekenreeksen
Bij databasedatabronnen is de tekenreekswaarde Voor datums Voor datums is Als een aggregatie
Ter vergelijking
Zie ook |
MIN
Syntaxis | MIN(expression) of MIN(expr1, expr2) |
Uitvoer | Hetzelfde datatype als het argument, of NULL als een deel van het argument nul is. |
Definitie | Retourneert het minimum van de twee argumenten, die van hetzelfde datatype moeten zijn.
|
Voorbeeld | MIN(4,7) = 4 |
Opmerkingen | Voor tekenreeksen
Bij databasedatabronnen is de tekenreekswaarde Voor datums Voor datums is Als een aggregatie
Ter vergelijking
Zie ook |
NOT
Syntaxis | NOT <expression> |
Uitvoer | Booleaans (waar of onwaar) |
Definitie | Voert een logische ontkenning uit op een expressie. |
Voorbeeld | IF NOT [Season] = "Summer" ‘Als het seizoen niet gelijk is aan Summer, retourneer dan Don't wear sandals. Zo niet, retourneer dan Wear sandals.’ |
Opmerkingen |
OR
Syntaxis | <expr1> OR <expr2> |
Uitvoer | Booleaans (waar of onwaar) |
Definitie | Voert een logische ontkoppeling uit op twee expressies. |
Voorbeeld | IF [Season] = "Spring" OR [Season] = "Fall" ‘Als (Season = Spring) of (Season = Fall) waar is, retourneer dan Sneakers.’ |
Opmerkingen | Vaak gebruikt met IF en IIF. Zie ook AND en NOT. Als een van beide expressies Als u een berekening maakt die het resultaat van een Opmerking: de operator |
THEN
Syntaxis | IF <test1> THEN <then1>
|
Definitie | Een vereist onderdeel van een IF -, ELSEIF - of CASE -expressie, die wordt gebruikt om te definiëren welk resultaat moet worden geretourneerd als een specifieke waarde of test waar is. |
Voorbeeld | IF [Season] = "Summer" THEN 'Sandals' ‘Als Season = Summer, retourneer dan Sandals. Zo niet, kijk dan naar de volgende expressie. Als Season = Winter, retourneer dan Boots. Als geen van beide expressies waar is, retourneer dan Sneakers'. CASE [Season] 'Kijk naar het veld Season. Als de waarde Summer is, retourneer dan Sandals. Als de waarde Winter is, retourneer dan Boots. Als geen van de opties in de berekening overeenkomt met wat er in het veld Season staat, retourneer dan Sneakers'. |
Opmerkingen |
WHEN
Syntaxis | CASE <expression>
|
Definitie | Een vereist onderdeel van een CASE -expressie. Vindt de eerste <value> die overeenkomt met <expression> en retourneert de overeenkomende <then> . |
Voorbeeld | CASE [Season] 'Kijk naar het veld Season. Als de waarde Summer is, retourneer dan Sandals. Als de waarde Winter is, retourneer dan Boots. Als geen van de opties in de berekening overeenkomt met wat er in het veld Season staat, retourneer dan Sneakers'. |
Opmerkingen | Gebruikt met CASE, THEN, ELSE en END.
CASE <expression> De waarden die |
ZN
Syntaxis | ZN(expression) |
Uitvoer | Hangt af van het datatype van de <expression> of 0. |
Definitie | Retourneert <expression> als deze niet null is, anders wordt nul geretourneerd. |
Voorbeeld | ZN([Test Grade]) ‘Als het toetscijfer niet null is, retourneer dan de waarde ervan. Als het toetscijfer nul is, retourneer dan 0.’ |
Opmerkingen |
Zie ook ISNULL. |
Opmerking: sommige hiervan zijn in feite logische operators en worden in het zwart weergegeven, niet in het blauw. Zie Syntaxis van operators voor meer informatie.
CASE is vaak gemakkelijker te gebruiken dan IF of IIF. In veel gevallen kunnen IF, IIF en CASE door elkaar worden gebruikt. Een CASE-instructie kan altijd worden herschreven als een IF-instructie, hoewel de CASE-functie over het algemeen beknopter en gemakkelijker te begrijpen zal zijn. Niet alle IF-instructies kunnen echter als CASE-instructies worden geschreven, omdat elke ELSEIF naar een ander veld kan verwijzen.
Tip: laten we een voorbeeld vergelijken waarbij dezelfde logica voor deze drie functies wordt gebruikt:
CASE | IF | IIF |
CASE [Region] | IF [Region] = 'West' THEN 1 | IIF([Region] = 'West', 1, |
De CASE-structuur is heel eenvoudig en gemakkelijk te schrijven en te begrijpen. De expressie (hier: [Region]) kan echter geen logische bewerking zijn, in tegenstelling tot IF of IIF. Null-waarden worden voor CASE op dezelfde manier verwerkt als voor IF. | De IF THEN-structuur staat meerdere ELSEIF-clausules toe, waardoor meerdere evaluaties veel eenvoudiger zijn dan bij IIF. Verwerking van null-waarden: alle onbekende (nietige) resultaten worden door dezelfde ELSE-clausule behandeld als ‘false’ resultaten. Hier wordt aan elk gebied anders dan de vier opgegeven gebieden (inclusief ‘null’) de waarde 5 toegekend. | De IIF-structuur verwerkt onbekende resultaten anders dan valse resultaten en heeft een andere syntaxis dan IF. Het nadeel van specifieke null-verwerking is dat het nesten, zoals hierboven beschreven, lastig kan zijn om te schrijven en te begrijpen. Verwerking van nullwaarden: aan alle niet-null-gebieden, behalve de vier opgegeven gebieden, wordt de waarde 5 toegekend, maar aan een null-waarde wordt een 0 toegekend. |
Opmerking: vaak kunt u een groep gebruiken om dezelfde resultaten te krijgen als een ingewikkelde CASE-functie. Testen om te zien of de ene optie beter presteert dan de andere.
Voorbeelden
CASE-functies kunnen nuttig zijn voor scenario's zoals het realiseren van:
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
of de eindgebruiker de mogelijkheid geven om te selecteren welke meetwaarde deze in een grafiek wil bekijken bij gebruik met een parameter(Link wordt in een nieuw venster geopend):
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
Een logische berekening maken
Volg de onderstaande stappen om te leren hoe u een logische berekening maakt.
- Maak in Tableau Desktop verbinding met de opgeslagen databron Voorbeeld - Superstore, die bij Tableau wordt geleverd.
- Navigeer naar een werkblad.
- Sleep State vanuit het deelvenster Data naar de container Rijen.
- Sleep Categorie vanuit het deelvenster Data naar de container Rijen en plaats het rechts van State.
- Sleep Sales vanuit het deelvenster Data naar de container Kolommen.
- Selecteer Analyse > Berekend veld maken.
- Doe het volgende in de berekeningseditor die wordt geopend:
- Geef het berekende veld de naam KPI.
- Voer de volgende formule in:
SUM([Profit]) > 0
Met deze berekening kunt u snel controleren of een lid groter is dan nul. Als dat zo is, wordt true geretourneerd. Als dat niet zo is, wordt false geretourneerd.
- Klik op OK als u klaar bent.
- Sleep in het deelvenster Data KPI naar Kleur op de kaart Markeringen.
U kunt nu zien welke categorieën in elke staat verliesgevend zijn.
Het nieuwe berekende veld wordt getoond onder Meetwaarden in het deelvenster Data. Net als uw andere velden kunt u dit veld in een of meer visualisaties gebruiken.
Zie ook
Belangrijke voortgangsindicatoren visualiseren