Multipla datum

Ibland behöver vi hantera en kalender mot multipla datum i samma tabell. En teknik för att hantera detta är att sätta samman datumen och skapa en länktabell till kalendern.


Se följande situation - vi har en ordertabell med OrderDate (datum när order skapas) och InvoiceDate (datum när order faktureras).


Vårt mål är att visa en graf som per ÅrMånad visar hur många order som skapades och hur många order som fakturerades.


För att göra detta behöver vi ha ett dimensionsvärde med ÅrMånad som de två uttrycken kan beräknas med. Vi kan inte göra en kalender baserat på OrderDate eftersom vi då inte vet hur många fakturor som skapats under samma period och det omvända problemet gäller om vi utgår från InvoiceDate.


Lösningen är att sätta ihop OrderDate och InvoiceDate till ett gemensamt fält %DateKey. Det gemensamma fältet innehåller alla kombinationer av de två datumen. Från det fältet kan vi sedan skapa ett gemensamt datumfält %Date som länkar till en kalender. Genom att lägga till ett fält DateType som beskriver typen av datumet kan vi sedan skilja på dessa när vi skapar uttryck.


Den vanliga kalendern byggs upp från fältet %Date med din favoritmetod. Så här ser min ut (se mer om kalenderfunktioner i detta inlägg)



Den önskade grafen skapar vi sedan genom att lägga till YearMonth som dimension och två uttryck:

# Orders: Count({<DateType={Order}>} OrderNo)
# Invoices: Count({<DateType={Invoice}>} OrderNo)

Fler datum

Metoden kan utökas med fler datum genom att de sätts ihop i %DateKey och sedan läggs till som rader i DateLink-tabellen med egna DateType.


Autonumber

Autonumber är en funktion som byter ut fältvärden mot en talserie. Detta är mycket effektivt lagringsmässigt då man istället för att lagra till exempel "2020-02-17|2020-03-19"kan lagra ett numeriskt värde. Lägger man till autonumber i scriptet tar det dock längre tid att