1 juni 2020Blogg

Parametrar i Tableau – Smarta periodfilter

Parametrar i Tableau – Del 4: Smarta periodfilter

Parametrar eller vanliga datumfilter?

Om du jobbat ett tag i Tableau och byggt några dashboards har du säkert märkt att man ofta vill välja en specifik period och sedan filtrera hela dashboarden från det valet. Inga konstigheter med det, det är bara att lägga in ett datumfilter och applicera på alla visualiseringar i dashboarden. Men hur gör du när några av dina visualiseringar ska visa vald månad och andra visa data för en längre period t ex senaste 12 månaderna? Då kan man ju inte filtrera på vald period. Istället hamnar man gärna i att använda parametrar eller set actions istället för vanliga quick-filters. Här tänkte jag tipsa om en bra lösning när du väljer parameter-spåret.

Styrkan och utmaningen med parametrar i Tableau

Du som jobbat med parametrar vet att de är fantastiska och ger en otrolig flexibilitet. Men de kan också komma med några utmaningar. Om vi tittar på parametrar som hanterar datum måste man ju till exempel sätta ett intervall för hur många perioder som ska visas i parametern. Tidigare var man också tvungen att manuellt uppdatera listan med värden samt sätta defaultvärde. I de senaste Tableauversionerna är det nu äntligen hanterat.

Men det uppstår fortfarande utmaningar med t ex olika filtrering i olika delar av din dashboard. Här kommer ett exempel på hur du kan göra en heldynamisk dashboard med flexibla filter. Exempelberäkningarna använder Superstore men du kan bara byta ut [Order Date] mot det datum du använder.

Skapa parametrarna vi behöver

I det här exemplet tänker jag mig att vi vill kunna välja en speciell period av År/Månad. För att slippa en jättelång lista med kombinationer av År + månader t ex ”2017 januari” så bryter jag isär detta till två parametrar. En för år och en för månad. Parametern för år kan jag utan att skämmas peta in 10 år i om jag vill utan att den blir för lång, och det dröjer lääänge till den behöver uppdateras. Den för månad blir fast och behöver aldrig uppdateras så länge vi inte uppfinner en ny månad…

Skapa två parametrar som heter ”Välj År” och ”Välj Månad”:

Välj år

Välj månad

Notera de två första raderna! De lägger jag till just för att kunna sätta innevarande eller förgående år/månad som default. Jag ska snart visa hur de kommer användas. Tricket här är att sätta value på Innevarande till 0 och Föregående till -1, då kommer vi kunna skriva en smart och enkel beräkning att använda som filter.

För användaren kommer t. ex. parametern för månad se ut så här:

Välj månad 2

Dags för en calculated member

Nu är vi redo att skapa en Calculated member med våra nya parametrar.

Vald period månad

Vad händer här? Jo, det är IIF-satsen som är det finurliga och den blir enkel eftersom vi satte ”Value” i parametrarna för Innevarande och Föregående till 0 respektive -1. Det formeln säger är att om någon av dessa är valda (<=0) ta då År eller Månad för Idag och plussa på parameter-värdet (Kom ihåg, det är 0 eller -1) Om inte <=0, använd det valda värdet som då är ett faktiskt år eller en månad.

Alltså, om jag den 2018-01-23 väljer ”Innevarande År” och ”Innevarande Månad” kommer YEAR(TODAY())+[Välj år] att vara 2018+0, dvs Innevarande år. Har jag valt Föregående År kommer ju [Välj år] ha värdet -1 och alltså resultera i 2018+-1=2017. Samma logik gäller för månads-parametern. Fiffigt va?

Men vänta nu! Finns det inte en liten lucka i det här? Vad händer om man i januari väljer ”Innevarande År” men ”Föregående Månad”, Föregående månad kommer ju då returnera 1+-1 dvs 0..och då blir det tomt i rapporten. Vill du hantera det fallet får man bygga ut formeln för vår Calculated member till nedanstående.

Vald period månad årsskifte

Lägg in beräkningen som ett filter

Nu återstår bara en sak, det är att ta din nya beräkning och lägga in som ett filter i din visualisering och välja TRUE för att visa all data som matchar vald period.

filter

Vill du i en annan visualisering t ex visa YTD-siffror så skapar du bara en ny beräkning men byter ut MONTH([Order Date]) = till MONTH([Order Date])<=

Vill du ha andra filter som t ex Rullande 12 så är det bara att skapa nya beräkningar, men hela tiden använda våra två IIF-formler för Valt år och Vald månad.

Med den här tekniken kan du ge dina användare dashboards som alltid visar innevarande eller föregående månad när de öppnas. Det är också till stor hjälp att göra så här om du vill schemalägga rapporter som ska ut i början av varje månad och alltid visa föregående månad.