Det här avsnittet förklarar skillnaden mellan tidsseriefunktioner och filterfunktioner, och hur du implementerar filterfunktioner. Den här informationen gäller för både arbetsböcker och klassiska infopaneler.
Tidsseriefunktioner kontra filterfunktioner
Med tidsseriefunktionerna Ago
och Todate
får du ett enkelt sätt att skapa mått att beräkna year-ago, year-to-date,
och så vidare. Den här metoden fungerar bra för affärsanvändares rapporter, men dessa funktioner genererar komplexa frågor på bekostnad av prestanda. Varje gång en av dessa funktioner används i en rapport genereras dessutom en ytterligare underfråga som använder ännu fler resurser i databasen.
I klassiska infopaneler kan du istället för att använda tidsseriefunktioner vanligen uppnå samma resultat genom att använda basmått och filtrera på lämplig tidsperiod med funktionen Filter
. Den metoden kan vara för komplex för affärsanvändares rapporter, men den fungerar bra i infopaneler som fördefinierats av IT-teamet. Den här metoden ger en fysisk SQL-kod som är betydligt enklare och effektivare och inte kräver en ytterligare delfråga. Det innebär att SQL-frågan körs snabbare och använder färre resurser i databasen, vilket minskar databasens totala processoranvändning och anrop om indata-utdata.
Följande figur visar ett exempel på den fysiska fråga som genereras när du använder både basmåttet och måttet month Ago
i samma rapport. Två frågor genereras.
Följande figur visar den SQL-kod som genereras för en enda fråga när du använder funktionen Filter
i stället.
Implementera filterfunktioner i en infopanel med frågor
I de flesta implementeringar innehåller infopanelen redan en fråga så att användarna kan välja den månad de letar efter. Det första steget är att identifiera de tidsperioder som behöver filtreras baserat på en användares urval.
I det här exemplet innehåller kalenderdimensionen kolumnen Julian Period Number
eftersom det förenklar beräkningen. Det går även utan Julian Period Number
, men det skulle kräva betydligt mer komplexa formler för att beräkna den tidsperiod som valts.
Month
och lägg till presentationsvariabeln (MonthSelected
).
Julian Period Number
och lägga till det i en annan variabel (PeriodNumberSelected
). Den här andra frågan visas inte för slutanvändaren utan är dold i infopanelen och värdet beräknas automatiskt baserat på variabeln MonthSelected
.
Julian Period
.
Month
och använder filterfunktionerna för kolumnformler baserade på Julian Period Number
efter behov. Några exempel:
Current Month: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800})
Month Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-1)
Year Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-12)
Year to date: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"<=@{PeriodNumberSelected}{80800} and “Time”.”Year”=@{YearSelected}{2019})
Implementera filterfunktioner i en arbetsbok med parametrar
Du kan använda samma princip i en arbetsbok. Frågor och presentationsvariabler ersätts av ett infopanelsfilter och parametrar.
Skapa tre parametrar: MonthSelected, PeriodNumberSelected och YearSelected. Endast parametern MonthSelected visas på ritytan i ett infopanelsfilter.
De möjliga värdena för parametern MonthSelected definieras baserat på en logisk SQL-fråga som väljer alla månader.
De möjliga värdena fylls inte i för parametrarna PeriodNumberSelected och YearSelected.
.jpg
Det är bara startvärdet som fylls i med en logisk fråga som filtreras baserat på värdet för MonthSelected.
.jpg