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.

Dela inlägget
LinkedIn