Logiska funktioner
I den här artikeln beskrivs logiska funktioner och deras användning i Tableau. Den visar också hur du skapar en logisk beräkning med hjälp av ett exempel.
Varför ska jag använda logiska beräkningar?
Med logiska beräkningar kan du avgöra om ett visst villkor är sant eller falskt (boolesk logik). Till exempel kanske du vill kategorisera värden baserat på vissa brytpunkter.
En logisk beräkning kan se ut ungefär så här:
IF [Profit] > 0
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END
Logiska funktioner och operatorer i Tableau
AND
Syntax | <expr1> AND <expr2> |
Definition | Utför en logisk konjunktion av två uttryck. (Om båda sidor är sanna returnerar det logiska testet sant.) |
Utdata | Boolesk (sant eller falskt) |
Exempel | IF [Season] = "Spring" AND "[Season] = "Fall" ”Om både (Season = Spring) och (Season = Fall) är sanna samtidigt returneras It's the apocalypse and footwear doesn't matter.” |
Obs! | Används ofta med IF och IIF. Se även NOT och OR. Om båda uttrycken är Om du skapar en beräkning där resultatet av en Obs! Med |
CASE
Syntax | CASE <expression>
|
Utdata | Beror på datatypen för <then> -värdena. |
Definition | Utvärderar |
Exempel |
”Titta på fältet Season. Om värdet är Summer returneras Sandals. Om värdet är Winter returneras Boots. Om inget av alternativen i beräkningen matchar det som finns i fältet Season returneras Sneakers.” |
Obs! | Används med WHEN, THEN, ELSE och END. Tips: Många gånger kan du använda en grupp för att få samma resultat som en komplicerad CASE-funktion eller använda CASE för att ersätta den inbyggda grupperingsfunktionen, som i föregående exempel. Det kan vara en bra idé att testa vilket som fungerar bäst i ditt fall. |
ELSE
Syntax | CASE <expression>
|
Definition | En valfri del av ett IF - eller CASE -uttryck som används för att ange ett standardvärde som returneras om inga av de testade uttrycken är sanna. |
Exempel | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] |
Obs! | Används med CASE, WHEN, IF, ELSEIF, THEN och END
|
ELSEIF
Syntax | [ELSEIF <test2> THEN <then2>] |
Definition | En valfri del av ett IF -uttryck som används för att ange ytterligare villkor utöver den ursprungliga IF-satsen. |
Exempel | IF [Season] = "Summer" THEN 'Sandals' |
Obs! | Används med IF, THEN, ELSE och END
Till skillnad från |
END
Definition | Används för att stänga ett IF - eller CASE -uttryck. |
Exempel | IF [Season] = "Summer" THEN 'Sandals' ”Om Season = Summer returneras Sandals. Om inte, titta på nästa uttryck. Om Season = Winter returneras Boots. Om inget av uttrycken är sant returneras Sneakers.” CASE [Season] ”Titta på fältet Season. Om värdet är Summer returneras Sandals. Om värdet är Winter returneras Boots. Om inget av alternativen i beräkningen matchar det som finns i fältet Season returneras Sneakers.” |
Obs! |
IF
Syntax | IF <test1> THEN <then1> |
Utdata | Beror på datatypen för <then> -värdena. |
Definition | Testar en serie med uttryck och returnerar värdet |
Exempel | IF [Season] = "Summer" THEN 'Sandals' ”Om Season = Summer returneras Sandals. Om inte, titta på nästa uttryck. Om Season = Winter returneras Boots. Om inget av uttrycken är sant returneras Sneakers.” |
Obs! |
IFNULL
Syntax | IFNULL(expr1, expr2) |
Utdata | Beror på datatypen för <expr> -värdena. |
Definition | Returnerar |
Exempel | IFNULL([Assigned Room], "TBD") ”Om fältet Assigned Room inte är null returneras dess värde. Om fältet Assigned Room är null returneras TBD istället.” |
Obs! | Jämför med ISNULL. Se även ZN. |
IIF
Syntax | IIF(<test>, <then>, <else>, [<unknown>]) |
Utdata | Beror på datatypen för värdena i uttrycket. |
Definition | Kontrollerar om ett villkor uppfylls (<test> ) och returnerar <then> om testet är sant, <else> om testet är falskt och ett valfritt värde för <unknown> om testet är null. Om det valfria okända värdet inte anges returnerar IIF null. |
Exempel | IIF([Season] = 'Summer', 'Sandals', 'Other footwear') ”Om Season = Summer returneras Sandals. Om inte returneras Other footwear.” IIF([Season] = 'Summer', 'Sandals', ”Om Season = Summer returneras Sandals. Om inte, titta på nästa uttryck. Om Season = Winter returneras Boots. Om inget av uttrycken är sant returneras Sneakers.” IIF('Season' = 'Summer', 'Sandals', ”Om Season = Summer returneras Sandals. Om inte, titta på nästa uttryck. Om Season = Winter returneras Boots. Om inget av uttrycken är sant returneras Sneakers.” |
Obs! |
I beräkningen nedan blir resultatet alltså Red, inte Orange, eftersom uttrycket slutar utvärderas så snart A = A utvärderas som sant:
|
IN
Syntax | <expr1> IN <expr2> |
Utdata | Boolesk (sant eller falskt) |
Definition | Returnerar TRUE om något värde i <expr1> matchar något värde i <expr2> . |
Exempel | SUM([Cost]) IN (1000, 15, 200) ”Är värdet i fältet Cost 1 000, 15 eller 200?” [Field] IN [Set] ”Finns fältets värde i uppsättningen?” |
Obs! | Värdena i Se även WHEN. |
ISDATE
Syntax | ISDATE(string) |
Utdata | Boolesk (sant eller falskt) |
Definition | Returnerar sant om en <string> är ett giltigt datum. Det inmatade uttrycket måste vara ett strängfält (text). |
Exempel | ISDATE("2018-09-22") ”Är strängen 2018-09-22 ett korrekt formaterat datum?” |
Obs! | Vad som anses vara ett giltigt datum beror på i vilken språkzon(Länken öppnas i ett nytt fönster) som systemet som utvärderar beräkningen finns. Exempel: I USA:
I Storbritannien:
|
ISNULL
Syntax | ISNULL(expression) |
Utdata | Boolesk (sant eller falskt) |
Definition | Returnerar sant om |
Exempel | ISNULL([Assigned Room]) ”Är fältet Assigned Room null?” |
Obs! | Jämför med IFNULL. Se även ZN. |
MAX
Syntax | MAX(expression) eller MAX(expr1, expr2) |
Utdata | Samma datatyp som argumentet, eller NULL om någon del av argumentet är null. |
Definition | Returnerar det största värdet för de två argumenten, som måste vara av samma datatyp.
|
Exempel | MAX(4,7) = 7 |
Obs! | För strängar
För datakällor i databaser är strängvärdet För datum För datum är Som en aggregering
Som en jämförelse
Se även |
MIN
Syntax | MIN(expression) eller MIN(expr1, expr2) |
Utdata | Samma datatyp som argumentet, eller NULL om någon del av argumentet är null. |
Definition | Returnerar det minsta värdet för de två argumenten, som måste vara av samma datatyp.
|
Exempel | MIN(4,7) = 4 |
Obs! | För strängar
För datakällor i databaser är strängvärdet För datum För datum är Som en aggregering
Som en jämförelse
Se även |
NOT
Syntax | NOT <expression> |
Utdata | Boolesk (sant eller falskt) |
Definition | Utför logisk negation på ett uttryck. |
Exempel | IF NOT [Season] = "Summer" ”Om Season inte är lika med Summer returneras Don't wear sandals. Om inte returneras Wear sandals.” |
Obs! |
OR
Syntax | <expr1> OR <expr2> |
Utdata | Boolesk (sant eller falskt) |
Definition | Utför en logisk disjunktion av två uttryck. |
Exempel | IF [Season] = "Spring" OR [Season] = "Fall" ”Om antingen (Season = Spring) eller (Season = Fall) är sant returneras Sneakers.” |
Obs! | Används ofta med IF och IIF. Se även AND och NOT. Om något av uttrycken är Om du skapar en beräkning som visar resultatet av en Obs! Med |
THEN
Syntax | IF <test1> THEN <then1>
|
Definition | En nödvändig del av ett IF -, ELSEIF - eller CASE -uttryck, som används för att definiera vilket resultat som ska returneras om ett specifikt värde eller test är sant. |
Exempel | IF [Season] = "Summer" THEN 'Sandals' ”Om Season = Summer returneras Sandals. Om inte, titta på nästa uttryck. Om Season = Winter returneras Boots. Om inget av uttrycken är sant returneras Sneakers.” CASE [Season] ”Titta på fältet Season. Om värdet är Summer returneras Sandals. Om värdet är Winter returneras Boots. Om inget av alternativen i beräkningen matchar det som finns i fältet Season returneras Sneakers.” |
Obs! |
WHEN
Syntax | CASE <expression>
|
Definition | En nödvändig del av ett CASE -uttryck. Hittar det första <value> som matchar <expression> och returnerar motsvarande <then> . |
Exempel | CASE [Season] ”Titta på fältet Season. Om värdet är Summer returneras Sandals. Om värdet är Winter returneras Boots. Om inget av alternativen i beräkningen matchar det som finns i fältet Season returneras Sneakers.” |
Obs! | Används med CASE, THEN, ELSE och END.
CASE <expression> Värdena som |
ZN
Syntax | ZN(expression) |
Utdata | Beror på datatypen för <expression> , eller 0. |
Definition | Returnerar <expression> om det inte är null. Annars returneras noll. |
Exempel | ZN([Test Grade]) ”Om Test Grade inte är null returneras dess värde. Om Test Grade är null returneras 0.” |
Obs! |
Se även ISNULL. |
Obs! Några av dessa är faktiskt logiska operatorer och visas i svart, inte blått. Mer information finns i Operatorsyntax.
CASE är ofta enklare att använda än IF eller IIF. I många fall kan IF, IIF och CASE användas synonymt. En CASE-sats kan alltid skrivas om som en IF-sats, även om CASE-funktionen oftast är mer koncis och enklare att förstå. Men alla IF-satser kan inte skrivas som CASE-satser, eftersom alla ELSEIF kan referera till olika fält.
Tips: Vi jämför ett exempel med samma logik för de här tre funktionerna:
CASE | IF | IIF |
CASE [Region] | IF [Region] = 'West' THEN 1 | IIF([Region] = 'West', 1, |
CASE-strukturen är mycket enkel att skriva och förstå. Men uttrycket (här [Region]) kan emellertid inte vara en logisk operation, till skillnad från IF eller IIF. Null-värden hanteras på samma sätt för CASE som för IF. | IF THEN-strukturen tillåter flera ELSEIF-satser, vilket innebär det är betydligt enklare att göra flera utvärderingar än med IIF. Null-hantering: alla okända (null) resultat hanteras av samma ELSE-sats som falska resultat. Här tilldelas alla andra regioner än de fyra angivna (inklusive null) värdet 5. | IIF-strukturen hanterar okända resultat på ett annat sätt än falska resultat och har en annan syntax än IF. Priset du får betala för specifik null-hantering är kapsling, som ovan, vilket kan vara klumpigt både att skriva och att förstå. Null-hantering: alla andra regioner än de fyra angivna som inte är null tilldelas värdet 5, men ett null-värde tilldelas 0. |
Obs! Ofta går det att använda en grupp för att få samma resultat som en komplicerad CASE-funktion. Testa för att se om det ena alternativet fungerar bättre än det andra.
Exempel
CASE-funktioner kan vara användbara när du till exempel vill tilldela nya alias:
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
eller ge slutanvändaren möjlighet att välja vilket mätvärde som ska visas i ett diagram när det används med en parameter(Länken öppnas i ett nytt fönster):
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
Skapa en logisk beräkning
Följ stegen nedan för att lära dig skapa en logisk beräkning.
- I Tableau Desktop ansluter du till den sparade datakällan Urval - Superstore, som ingår i Tableau.
- Navigera till ett arbetsblad.
- Från rutan Data drar du Stattill hyllan Rader.
- Från rutan Data drar du Kategori till hyllan Rader och placerar det till höger om Stat.
- Från rutan Data drar du Försäljning till hyllan Kolumner.
- Välj Analys > Skapa beräknat fält.
- Gör följande i den beräkningsredigerare som visas:
- Ge det beräknade fältet namnet KPI.
- Ange följande formel:
SUM([Profit]) > 0
Den här beräkningen kontrollerar snabbt om ett nummer är större än noll. Om så är fallet returneras värdet sant, om inte returneras värdet falskt.
- Klicka på OK när du är klar.
- Från rutan Data drar du KPI till Färg på kortet Markeringar.
Nu kan du se vilka kategorier som förlorar pengar i varje stat.
Det nya beräknade fältet visas under Mätvärden i fönstret Data. Precis som med de andra fälten kan du använda detta i en eller flera visualiseringar.
Se även
Visualisera viktiga förloppsindikatorer