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>
DefinitionUtför en logisk konjunktion av två uttryck. (Om båda sidor är sanna returnerar det logiska testet sant.)
UtdataBoolesk (sant eller falskt)
Exempel
IF [Season] = "Spring" AND "[Season] = "Fall" 
THEN "It's the apocalypse and footwear doesn't matter"
END

”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 TRUE (d.v.s. inte FALSE eller NULL) är resultatet TRUE. Om något av uttrycken är NULL är resultatet NULL. I alla andra fall är resultatet FALSE.

Om du skapar en beräkning där resultatet av en AND-jämförelse visas på ett arbetsblad visar Tableau TRUE och FALSE. Om du vill ändra detta använder du området Formatera i formatdialogrutan.

Obs! Med AND-operatorn används kortslutningsutvärdering. Detta innebär att om det första uttrycket bedöms vara FALSE, så utvärderas inte det andra uttrycket alls. Detta kan vara till hjälp om det andra uttrycket resulterar i ett fel när det första uttrycket är FALSE, eftersom det andra uttrycket i det här fallet aldrig utvärderas.

CASE

SyntaxCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
UtdataBeror på datatypen för <then>-värdena.
Definition

Utvärderar expression och jämför det med de angivna alternativen (<value1>, <value2> o.s.v.). När ett value som stämmer överens med uttrycket påträffas returnerar CASE motsvarande return. Om inga matchningar hittas returneras det (valfria) standardvärdet. Om det inte finns något standardvärde och inga värden stämmer överens returneras null.

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

”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!

Se även IF och IIF.

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

SyntaxCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DefinitionEn 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' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END
Obs!

Används med CASE, WHEN, IF, ELSEIF, THEN och END

ELSE är valfritt med CASE och IF. I en beräkning där ELSE inte anges, och om inga av <test> är sanna, returnerar den övergripande beräkningen null.

ELSE kräver inte ett villkor (t.ex. [Season] = "Winter") och kan ses som en form av hantering av null-värden.

ELSEIF

Syntax[ELSEIF <test2> THEN <then2>]
DefinitionEn 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' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSEIF [Season] = "Spring" THEN 'Sneakers'
ELSEIF [Season] = "Autumn" THEN 'Sneakers'
ELSE 'Bare feet'
END
Obs!

Används med IF, THEN, ELSE och END

ELSEIF kan ses som ytterligare IF-satser. ELSEIF är valfritt och kan upprepas flera gånger.

Till skillnad från ELSE kräver ELSEIF ett villkor (t.ex. [Season] = "Winter").

END

DefinitionAnvänds för att stänga ett IF- eller CASE-uttryck.
Exempel
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

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

”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, WHEN, IF, ELSEIF, THEN och ELSE.

IF

SyntaxIF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
UtdataBeror på datatypen för <then>-värdena.
Definition

Testar en serie med uttryck och returnerar värdet <then> för det första <test> som är sant.

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

”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!

Se även IF och IIF.

Används med ELSEIF, THEN, ELSE och END

IFNULL

SyntaxIFNULL(expr1, expr2)
UtdataBeror på datatypen för <expr>-värdena.
Definition

Returnerar <expr1> om det inte är null. Annars returneras <expr2>.

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. IFNULL returnerar alltid ett värde. ISNULL returnerar ett booleskt värde (sant eller falskt).

Se även ZN.

IIF

SyntaxIIF(<test>, <then>, <else>, [<unknown>])
UtdataBeror på datatypen för värdena i uttrycket.
DefinitionKontrollerar 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', 
IIF('Season' = 'Winter', 'Boots', 'Other footwear')
)

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

”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!

Se även IF ochCASE.

IIF har ingen motsvarighet till ELSEIF (som IF) eller upprepade WHEN-satser (som CASE). Istället kan flera tester utvärderas sekventiellt genom inkapsling av IIF-satser som <unknown>-elementet. Det första (yttersta) sanna värdet returneras.

I beräkningen nedan blir resultatet alltså Red, inte Orange, eftersom uttrycket slutar utvärderas så snart A = A utvärderas som sant:

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

IN

Syntax<expr1> IN <expr2>
UtdataBoolesk (sant eller falskt)
DefinitionReturnerar 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 <expr2> kan vara en uppsättning, en lista med bokstavliga värden eller ett kombinerat fält.

Se även WHEN.

ISDATE

SyntaxISDATE(string)
UtdataBoolesk (sant eller falskt)
DefinitionReturnerar 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:

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

I Storbritannien:

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

ISNULL

SyntaxISNULL(expression)
UtdataBoolesk (sant eller falskt)
Definition

Returnerar sant om <expression> är NULL (innehåller inte giltiga data).

Exempel
ISNULL([Assigned Room])

”Är fältet Assigned Room null?”

Obs!

Jämför med IFNULL. IFNULL returnerar alltid ett värde. ISNULL returnerar ett booleskt värde.

Se även ZN.

MAX

SyntaxMAX(expression) eller MAX(expr1, expr2)
UtdataSamma 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.

MAX kan även tillämpas på ett enskilt fält som en aggregering.

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

För strängar

MAX är vanligtvis det värde som kommer sist i alfabetisk ordning.

För datakällor i databaser är strängvärdet MAX det högsta i den sorteringssekvens som definierats i databasen för den kolumnen.

För datum

För datum är MAX det senaste datumet. Om MAX är en aggregering kommer resultatet inte att ha någon datumhierarki. Om MAX är en jämförelse kommer resultatet att behålla datumhierarkin.

Som en aggregering

MAX(expression) är en aggregerad funktion och returnerar ett enda aggregerat resultat. Detta visas som AGG(expression) i visualiseringen.

Som en jämförelse

MAX(expr1, expr2) jämför de två värdena och returnerar ett värde på radnivå.

Se även MIN.

MIN

SyntaxMIN(expression) eller MIN(expr1, expr2)
UtdataSamma 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.

MIN kan även tillämpas på ett enskilt fält som en aggregering.

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

För strängar

MIN är vanligtvis det värde som kommer först i alfabetisk ordning.

För datakällor i databaser är strängvärdet MIN det lägsta i den sorteringssekvens som definierats i databasen för den kolumnen.

För datum

För datum är MIN det tidigaste datumet. Om MIN är en aggregering kommer resultatet inte att ha någon datumhierarki. Om MIN är en jämförelse kommer resultatet att behålla datumhierarkin.

Som en aggregering

MIN(expression) är en aggregerad funktion och returnerar ett enda aggregerat resultat. Detta visas som AGG(expression) i visualiseringen.

Som en jämförelse

MIN(expr1, expr2) jämför de två värdena och returnerar ett värde på radnivå.

Se även MAX.

NOT

SyntaxNOT <expression>
UtdataBoolesk (sant eller falskt)
DefinitionUtför logisk negation på ett uttryck.
Exempel
IF NOT [Season] = "Summer" 
THEN 'Don't wear sandals'
ELSE 'Wear sandals' 
END

”Om Season inte är lika med Summer returneras Don't wear sandals. Om inte returneras Wear sandals.”

Obs!

Används ofta med IF och IIF. Se även AND och OR.

OR

Syntax<expr1> OR <expr2>
UtdataBoolesk (sant eller falskt)
DefinitionUtför en logisk disjunktion av två uttryck.
Exempel
IF [Season] = "Spring" OR [Season] = "Fall" 
THEN "Sneakers"
END

”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 TRUE är resultatet TRUE. Om båda uttrycken är FALSE, så blir resultatet FALSE. Om båda uttrycken är NULL, så blir resultatet NULL.

Om du skapar en beräkning som visar resultatet av en OR-jämförelse på ett arbetsblad visar Tableau TRUE och FALSE. Om du vill ändra detta använder du området Formatera i formatdialogrutan.

Obs! Med OR-operatorn används kortslutningsutvärdering. Detta innebär att om det första uttrycket bedöms vara TRUE, så utvärderas inte det andra uttrycket alls. Detta kan vara till hjälp om det andra uttrycket resulterar i ett fel när det första uttrycket är TRUE, eftersom det andra uttrycket i det här fallet aldrig utvärderas.

THEN

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

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

”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, WHEN, IF, ELSEIF, THEN, ELSE och END

WHEN

SyntaxCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DefinitionEn nödvändig del av ett CASE-uttryck. Hittar det första <value> som matchar <expression> och returnerar motsvarande <then>.
Exempel
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

”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 har även stöd för konstruktionen WHEN IN, som i följande exempel:

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

Värdena som WHEN IN jämförs med måste vara en uppsättning, en lista med bokstavliga värden eller ett kombinerat fält. Se även IN.

ZN

SyntaxZN(expression)
UtdataBeror på datatypen för <expression>, eller 0.
DefinitionReturnerar <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!

ZN är ett specialfall av IFNULL, där alternativet om uttrycket är null alltid är 0 istället för att anges i beräkningen.

ZN är särskilt användbart när du utför ytterligare beräkningar och ett null-värde skulle återge hela beräkningen som null. Men var försiktig när du tolkar de här resultaten, eftersom null inte alltid är synonymt med 0 och kan representera data som saknas.

Se även ISNULL.


Obs! Några av dessa är faktiskt logiska operatorer och visas i svart, inte blått. Mer information finns i Operatorsyntax.

Kommentarer till CASE, IF och IIF

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:

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)
)
)
)

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.

  1. I Tableau Desktop ansluter du till den sparade datakällan Urval - Superstore, som ingår i Tableau.
  2. Navigera till ett arbetsblad.
  3. Från rutan Data drar du Stattill hyllan Rader.
  4. Från rutan Data drar du Kategori till hyllan Rader och placerar det till höger om Stat.
  5. Från rutan Data drar du Försäljning till hyllan Kolumner.
  6. Välj Analys > Skapa beräknat fält.
  7. 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.
  8. 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.

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

Se även

Visualisera viktiga förloppsindikatorer

Funktioner i Tableau

Tableau-funktioner (efter kategori)

Tableau-funktioner (i bokstavsordning)

Tack för din feedback!Din feedback har skickats in. Tack!