ISO År & Vecka i Qlik, Tableau & Power BI

Ett vanligt fel i rapporter är att man inte hanterar år korrekt när man vill ta fram ett sammansatt värde för [År Vecka]. Detta grundar sig i att ett datum kan ligga i ett år, men dess veckas år kan vara ett annat. I det här blogginlägget tittar vi närmre på hur man hanterar dessa i Qlik, Tableau och Power BI.


Vi utgår från några exempel på datum mellan 2021-12-30 och 2022-01-04. Här ligger datumen 2021-12-30 till 2022-01-02 i vecka 52 som hör till 2021. Korrekta värden ska alltså vara:



Om man är för snabb att räkna sätter man för t.ex. 2022-01-01 ihop år (2022) med vecka (52) och lägger felaktigt dagen till 2022 W52. Dagen skulle egentligen skulle ligga i 2021 W52.


Qlik

Qlik har en inbyggd funktion för att hantera ISO-år som bygger på veckor, weekyear(). Denna skiljer sån från funktionen year() genom att den hämtar året för veckan som datumet ligger i.


year() = ger året för datumet

weekyear() = ger året för veckan som datumet ligger i


Med hjälp av funktionen kan man i script och i uttryck räkna ut År Vecka med formeln/koden:


weekyear(Date) & " W" & num(week(Date),'00')

Num-funktionen säkerställer att veckor 1-9 får en nolla framför sig så att alla värden får lika många tecken.


Tableau

Tableau har på motsvarande sätt som Qlik en funktion för ISO-år, ISOYEAR(), som skiljer sig från den vanliga funktionen för år, YEAR().


På motsvarande enkla sätt kan man räkna ut År Vecka med formeln:

STR(ISOYEAR([Date])) + " W" + RIGHT("0" + STR(ISOWEEK([Date])),2)


STR()-funktionen omvandlar ett numeriskt värde till en sträng så att vi kan sätta samman de olika delarna till en längre sträng.


RIGHT()-funktionen används här för att veckor 1-9 får en nolla framför sig så att alla värden får lika många tecken.




Power BI

Power BI saknar funktion för att räkna ut ISO-år vilket gör formeln lite mer komplicerad. Ett trick för att beräkna året är att ta ett datum + 26 dagar - veckonumret. Detta sätts sedan samman med veckonumret hanterat med FORMAT() för att få en inledande 0:a för veckorna 1-9.


PowerBI YearWeek = YEAR([Date] + 26 - WEEKNUM([Date], 21 ) ) & " W" & FORMAT(WEEKNUM([Date], 21 ), "00")


WEEKNUM(Date,21) ger ISO-vecka för Date.



 

Skriven av: Morgan Kejerhag

Morgan Kejerhag har arbetat med beslutsstöd sedan 2005 och är en av Sveriges mest erfarna Qlik-konsulter. Under åren har Morgan arbetat med flertalet multinationella bolag där han lett arbetet i att bygga upp stora miljöer såväl som små kunder. LinkedIn Kontaktuppgifter