Användarens datumformat

Inom internationella organisation används ofta applikationer i flera länder. Detta kan skapa ett behov av hantering av saker som språk och datumformat. I det här blogginlägget ska vi visa hur olika datumformat kan hanteras i Qlik Sense.



Manuell styrning

En första sak att titta på är hur man ska styra vilket format som ska visas. Styrningen skulle antingen kunna vara manuell via användarinställningar eller automatisk från användarens användarnamn.


För manuell styrning kan man skapa en variabel och använda ett inmatningsfält, Variable Input, med t.ex. en rullgardinsmeny eller knappar. Inmatningsfältet uppdaterar variabelvärdet med t.ex. SE eller NO. Variabelns värde används sedan för att styra formatet. Detta görs enklast via en annan variabel. Se följande exempel:


En variabel, vFormat, skapas och ges värdet SE. Variabeln ska innehålla värden för de format som användaren kan välja mellan.



Lägg till en Variable Input till arket. Variable Input är ett tillägg som hittas under Custom objects -> Qlik Dashbaord bundle.


Knyt variabeln vFormat till fältet och välj exempelvis att valet ska göras med knappar. Alternativen kan vara till exempel SE och NO. Alternativen skulle kunna läsas in dynamiskt om de är svåra att förutsäga i utvecklingsfasen.



Detta ger användaren möjligheten att enkelt välja mellan de olika alternativen. När användaren klickar önskat format sätts värdet av formatet i variabeln vFormat.

Skapa sedan en andra variabel, vDateFormat, som hanterar vilket faktiskt format som urvalet i vFormat ska resultera i. Sätt värdet till en formel som till exempel:


=if('$(vFormat)'='SE','YYYY-MM-DD','DD.MM.YYYY'))



I vår datamodell har vi nu ett fält Date som vi vill ska få olika format beroende användaren val. Det bästa här är att skapa en Master Item Dimension som applicerar formatet och samtidigt har en etikett Date. Utan att gå via en Master Item Dimension skulle formeln som applicerar formatet visas i urvalsraden.


Uttrycket använder variabeln som räknar ut datumformatet från valt värde i den första variabeln:

=date(Date,'$(vDateFormat)')



Beroende på användarens val visas nu datumet i två olika format:


Automatisk styrning

Man kan också låta användarens användarnamn med automatik styra vilket formatet som ska visas. Hur detta ska gå till beror på hur användarnamnen är uppbyggda. Om namnet exempelvis börjar med en landskod skulle denna kunna användas för styrningen. För denna lösning behövs inte den Variable Input vi tidigare lade till.


Användarens användarnamn kan hämtas med funktionen OsUser(). Beroende på vilken miljö man befinner sig kommer värdet som hämtas vara olika. Lokalt i Windows-miljöer blir värdena oftast "UserDirectory=[domän];UserId=[användarnamn]" medan de i Cloud beror på vilken IdP man valt.


Om användarnamnen börjar med landskoden ("SEMOKE" där "SE" är landskoden) och variabeln vFormat kan till exempel ändras till ett uttryck som först delar strängen från värdet OsUser() i två delar vid sista lika-med-tecknet. Därefter tas de två första tecknen av den andra delen.


=left(subfield(OsUser(),'=',-1),2)


Alternativt kan man läsa in en lista med användare och vilket format de vill se datum i. I scriptet skapas då en tabell med två kolumner: Användarnamn och Format. Detta skulle kunna se ut som:


Formatet kan nu istället hämtas med ett enkelt uttryck som slår upp användarens värde:


=maxstring({<Användarnamn={'$(=subfield(OsUser(),'=',-1))'}>} Format)


Skriven av: Morgan Kejerhag

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