Dette emne forklarer forskellen mellem tidsseriefunktioner og filterfunktioner og forklarer, hvordan filterfunktioner implementeres. Disse oplysninger gælder for både projektmapper og klassiske instrumentbrætter.
Tidsseriefunktioner vs. filterfunktioner
Tidsseriefunktionerne Ago
og Todate
gør det nemt at oprette metrikker for at beregne year-ago, year-to-date,
(år siden, år til dato) osv. Denne metode fungerer godt til forretningsbrugerrapporter, men disse funktioner genererer dog komplekse forespørgsler, som går markant ud over ydeevnen. Hver gang en af disse funktioner bruges i en rapport, genereres også en yderligere underforespørgsel, der bruger endnu flere ressourcer på databasen.
I stedet for at bruge tidsseriefunktioner i klassiske instrumentbrætter kan du normalt opnå det samme resultat ved at bruge basismetrikker med funktionen Filter
til at filtrere på den relevante tidsperiode. Denne metode kan være for kompleks til forretningsbrugerrapporter, men den fungerer godt i instrumentbrætter, der er foruddefineret af IT-teamet. Med denne metode er den fysiske SQL, der genereres, meget enklere og mere effektiv og kræver ikke en yderligere underforespørgsel. Det betyder, at SQL-forespørgslen kører hurtigere og bruger færre ressourcer på databasen, hvilket reducerer det overordnede CPU-databaseforbrug og antallet af input-output-kald.
Den følgende figur viser et eksempel på den fysiske forespørgsel, der genereres, når du bruger både basismetrikken og månedsmetrikken Ago
i den samme rapport. Der genereres to forespørgsler.
Den følgende figur viser den SQL-kode, der genereres for en enkelt forespørgsel, når du bruger en Filter
-funktion i stedet.
Implementere filterfunktioner i et instrumentbræt med prompter
I de fleste implementeringer indeholder instrumentbrættet allerede en prompt, så brugere kan vælge den ønskede måned. Det første trin skal identificere de tidsperioder, som du skal filtrere på ud fra en brugers valg.
I dette eksempel indeholder kalenderdimensionen kolonnen Julian Period Number
, fordi den gør beregningen meget nemmere. Dette er også muligt uden Julian Period Number
, men ville kræve meget mere komplekse formler for at beregne den valgte tidsperiode.
Month
for at tilføje præsentationsvariablen (MonthSelected
).
Julian Period Number
, og placer det i en anden variabel (PeriodNumberSelected
). Den anden prompt vises ikke for slutbrugeren. Den er i stedet skjult i instrumentbrættet, og værdien beregnes automatisk på basis af variablen MonthSelected
.
Julian Period
.
Month
i analysen, og brug kolonneformlens filterfunktioner på basis af Julian Period Number
efter behov. Her er nogle eksempler:
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})
Implementere filterfunktioner i en projektmappe med parametre
Du kan anvende det samme princip i en projektmappe. Prompter og præsentationsvariabler erstattes af et instrumentbrætfilter og parametre.
Opret tre parametre: MonthSelected, PeriodNumberSelected og YearSelected. Det er kun parameteren MonthSelected, der vises i kanvasset i et instrumentbrætfilter.
De mulige værdier for parameteren MonthSelected defineres på basis af en logisk SQL-forespørgsel, der vælger alle måneder.
For parametrene PeriodNumberSelected og YearSelected er de mulige værdier ikke udfyldt.
.jpg
Kun startværdien udfyldes med en logisk forespørgsel, der er filtreret på basis af værdien af MonthSelected.
.jpg