Mål i LuckyTemplates: Optimeringstip og -teknikker

I denne vejledning lærer du, hvordan du optimerer en måling i LuckyTemplates. Optimering af målinger i din rapport forbedrer effektiviteten af ​​dine koder til at producere værdifuld indsigt og data. Du vil også lære om de forskellige evalueringsmetoder, og hvordan du anvender dem til at optimere din rapport. Du kan se den fulde video af denne tutorial nederst på denne blog.

Indholdsfortegnelse

1. Analyser kodens ydeevne

I dette eksempel skal du optimere denne rapport:

Mål i LuckyTemplates: Optimeringstip og -teknikker

Dette er den datamodel, du vil bruge:

Mål i LuckyTemplates: Optimeringstip og -teknikker

Jobtabellen indeholder alle oplysninger om ethvert job , der er blevet udført i en given tidsperiode.

Denne tabel er grundlaget for alle mål, som du vil optimere:

Mål i LuckyTemplates: Optimeringstip og -teknikker

Først skal du teste rapportens ydeevne.

Gå til fanen Vis og vælg. Klik derefter på Start optagelse og opdatering af billeder . Vent på, at analysatoren gengiver det visuelle.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Når dette er gjort, skal du rulle ned listen Incitamentopdeling og klikke på Kopier forespørgsel .

Mål i LuckyTemplates: Optimeringstip og -teknikker

Vælg derefter Eksterne værktøjer for at gå til DAX Studio og se på koden, som LuckyTemplates genererede.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Indsæt derefter den kopierede forespørgsel i arbejdsområdet.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Variabler i mål

Den første variabel er DateClosed , som er sliceren på dashboardet. Den bruger en kolonne fra faktatabellen til at få værdierne for bestemte perioder i udsnittet.

Den næste variabel er JobLost , som kontrollerer for False eller Blank af Job Lost-dataene.

Den sidste variabel er MatrixVisual . Dette er hjertet i koden. Det viser den opsummerede kolonne genereret af LuckyTemplates for at udfylde matrixvisuals. Den grupperer Job Loss Type i denne matrix og injicerer filtrene, der kommer fra udskærerne. Derefter tilføjer den udvidede kolonner.

Når opsummeringskolonnen afslutter udførelsen, vil du se resultaterne i ruden under koden.

Mål i LuckyTemplates: Optimeringstip og -teknikker

LuckyTemplates bruger resultatet til at udfylde matrixvisuals.

Kold cache til DAX Studio

Dernæst skal du kontrollere den tid, det tager at udføre hele koden. For at gøre det skal du slå Server Timings til og derefter vælge Ryd cache og derefter køre .

Mål i LuckyTemplates: Optimeringstip og -teknikker

Når du forsøger at optimere et mål i LuckyTemplates ved hjælp af, er det bedre at operere under den kolde cache, så den tid, du får, er korrekt. Tryk derefter på F5 og vent på, at handlingen er fuldført på fanen Server Timings .

Når det er færdigt, kan du se, at den samlede udførelsestid er 3,6 sekunder. Den brugte det meste af tiden i formelmotoren og brugte 57 millisekunder i lagermotoren

Mål i LuckyTemplates: Optimeringstip og -teknikker

Du kan også se, at den fandt 383 lagringsmotorforespørgsler. Ud af alle disse forespørgsler er der 327, der er castet i hukommelsen, så de kan genbruges.

2. Analyser et mål i LuckyTemplates

Dernæst skal du optimere disse 3 identiske mål.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Du skal udtrække disse mål i en anden fil og forbinde den til den datamodel, du bruger.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Start derefter servertimingerne for at se den tid, det tager de 3 foranstaltninger i at udfylde visuals.

Resultaterne af kørslen viser, at foranstaltningerne bruger 1,85 sekunder på at hente et resultat.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Resultatet viser en tabel bestående af 10 rækker og 3 udvidede kolonner, som hører hjemme i de opsummerede kolonner.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Kolonnen Tabstype indeholder 10 unikke værdier, som koden beregner for at få incitamentsprocenterne.

Den tid, koden tager, er eksponentielt høj. Det er her og hvornår du skal optimere dem.

RB Incentive%-målet i LuckyTemplates

Dette er et RB Incentive%-mål i LuckyTemplates. Det er en af ​​de 3 hovedmål, der bruges i dette eksempel.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Du kan se, at den forsøger at beregne incitamentsprocenten.

Den har en variabel, JobType, som henter Lost Type-værdi i den aktuelle filterkontekst. Den kontrollerer også, om der kun er en enkelt værdi synlig i den aktuelle filterkontekst. Du skal bruge en  funktion, så hver gang en betingelse er opfyldt, giver den det tilsvarende resultat.

Denne målekode genererer en masse lagermotorfedt, hvilket øger tiden i kodens samlede varighed.

Gå nu tilbage til DAX Studio for at kontrollere mængden af ​​storage-motorforespørgsler, som målingen genererer.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Du kan se, at det tog 600 millisekunder at udføre og 43 lagringsmotorforespørgsler at hente data for de 10 rækker.

Data fra Storage Engine

Tjek nu de data, der anmodes om fra lagermotoren. I den første forespørgsel er der en jobtabstype og DCOUNT  af jobtabstypen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den næste forespørgsel har Jobs Date Closed, som er fra udsnittet i rapporten.

Mål i LuckyTemplates: Optimeringstip og -teknikker

I den tredje kode vil du se en anden jobtabstype med tilbagekaldsdata-id'et.

Mål i LuckyTemplates: Optimeringstip og -teknikker

På en anden linje vil du se de vigtigste kodelinjer.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den første ting du ser er jobbetalingen modtaget, faktureret og faktiske udgifter.

Dernæst er WHERE-  funktionen, der angiver en betingelse og dets tilsvarende resultat. Resultatet vil variere baseret på valget af slicer og switch-sætningen i RB Incentive%-målet.

Du vil også bemærke, at koden på linje 12 og 14 er den samme.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Hvis du scroller til højre, kan du se, at der er linjer med de samme forespørgsler. Forespørgslerne på linjerne ledes af switch-sætningen i RB Incentive%-målet.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Hvis du går tilbage til RB Incentive%-målet i LuckyTemplates, kan du se antallet af gange, en forespørgsel gentages, og hvordan den afspejles i forespørgslerne i storage-motoren.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Logikken bag IF og switch

For nu at forstå, hvorfor forespørgslerne udføres flere gange, skal du forstå logikken i og SWITCH- funktioner.

Du skal udføre dem separat på en forespørgselsplan. Men før du gør det, skal du sørge for at oprette forbindelse til databasen og slå forespørgselsplanen til.

Udfør SWITCH-  sætningen i forespørgselsplanen. Fremhæv derefter  erklæringen, og tryk derefter på enter.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Dette vil generere en logisk forespørgselsplan med forskellige operationer.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Udfør derefter IF- sætningen ved at fremhæve sætningen og trykke på enter.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Du kan se, at det genererer den samme logiske forespørgselsplan.

Dette skyldes, at når du bruger en , konverterer motoren internt denne funktion til en IF -sætning. Men en SWITCH -sætning anbefales, fordi den øger læsbarheden af ​​din kode.

Derefter skal du forstå, hvordan en kode udføres i IF- eller SWITCH -funktionen.

Dette er en eksempelkode, der har en SWITCH -sætning inde.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den har mål for bruttofortjeneste, samlet skøn og samlet faktureret, som alle er SUMMEN for forskellige kolonner. Den har også en funktion over Jobs Loss Type og en SWITCH og TRUE -sætning.

Når du udfører denne kode, vil du se logikken bag funktionerne.

Den første forespørgsel får den særskilte jobtabstype fra jobtabellen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Bortset fra jobtabstypen, får den også summen af ​​jobestimatet.

Inde i WHERE- tilstanden kan du også se de værdier, der findes i kolonnen Jobtabstype.

Mål i LuckyTemplates: Optimeringstip og -teknikker

3. Brug kodeevalueringsmetoder

I DAX er der 3 metoder til at evaluere koder:

  • Streng evaluering
  • Ivrig evaluering
  • IF.Eager Evaluering

Disse metoder hjælper dig med at optimere en kode eller et mål i LuckyTemplates.

1. metode: Streng evaluering

Eksemplet vist nedenfor bruger Strict Evaluation-metoden.

Logikken bag det er, at hvis konteksten for jobtabstypen er lig med A, vil den give bruttofortjenesten. Ellers giver det det samlede skøn. Koden gør dette for hver række i jobtabstypen.

Dette er et andet eksempel på mål i LuckyTemplates, der bruger Strict Evaluation.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Når du udfører denne kode, genererer den 5 storage engine-forespørgsler.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Med Strict Evaluation giver koden det samlede estimat, hvis bruttofortjenesten ganget med 1,4 er større end det gennemsnitlige estimat. Ellers vil det give Bruttofortjenesten.

Brug af Strict Evaluation producerer flere storage-motorforespørgsler, fordi IF  -sætningen kontrollerer bruttofortjenestens konkurrence flere gange og i sidste ende vil hæmme udførelsen af ​​hele operationen.

2. metode: Ivrig evaluering

Dette er den samme kode som det foregående eksempel.

Men i stedet for at beregne målene inde i  IF- sætningen, beregnede den alt i før RETURN .

Mål i LuckyTemplates: Optimeringstip og -teknikker

Det betyder, at før du kontrollerer erklæringerne, får den alle værdierne af bruttofortjenesten og totalestimat for alle jobtabstyper.

Når du udfører denne kode, reduceres antallet af lagermotorer til 3.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Det forbedrer ydelsen af ​​hele operationen.

I den første operationsforespørgsel får den jobtabstypen og summen af ​​jobestimat og bruttofortjeneste.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den næste forespørgsel får summen af ​​jobestimatet fra jobstalden. Dette bruges til at beregne det gennemsnitlige skøn.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den sidste forespørgsel giver den særskilte Job Loss Type for værdierne skrevet på ADDCOLUMNS .

Mål i LuckyTemplates: Optimeringstip og -teknikker

Ved at bruge Eager Evaluation får du alt i én enkelt datacache. Dataene evalueres og itereres også på formelmotoren. IF erklæringen returnerer enten det samlede skøn eller bruttofortjenesten afhængigt af den sande eller falske evaluering.

Ivrig evaluering er ikke altid den bedste metode til at optimere dine koder. Strenge evaluering vil resultere i en bedre ydeevne, hvis du har komplekse koder. Det hele afhænger af de funktioner, du bruger inde i DAX-koden.

Ulempen ved Eager Evaluation er, at hvis du opretter værdigenstande før en IF-  eller  SWITCH-  sætning og bruger de variable inde i sætningen, som aldrig bør udføres, vil motoren stadig beregne disse variable.

Ivrig evaluering Ulemper

Her er et eksempel på ulempen:

Ideelt set, hvis jobtabstypen er lig med A, bør den få bruttofortjeneste. Ellers får den Total Estimat.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Da der ikke er nogen værdi i kolonnen Jobtabstype, der er lig med A, bør den altid få samlet skøn. Det giver dog stadig bruttofortjenesten i datacachen.

Hvis du ser på den første forespørgsel, får den Jobtabstypen og summen af ​​Jobs Bruttofortjeneste og Estimat.

Mål i LuckyTemplates: Optimeringstip og -teknikker

I den næste forespørgsel får den en særskilt jobtabstype fra jobtabellen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

3. Metode: IF.EAGER Evaluering

Den næste metode er  IF.EAGER-  funktionsevalueringen, som gentager adfærden fra Eager Evaluation.

Det lader dig skrive en kode, der repræsenterer den strenge evaluering og udføre den med Ivrig evaluering.

Hvis du ser på denne eksempelkode, er den bare den samme som Strict Evaluation-koden. Den eneste forskel er, at dette bruger IF.EAGER-  funktionen i stedet for IF .

Mål i LuckyTemplates: Optimeringstip og -teknikker

Før du udfører koden, skal du sørge for at oprette forbindelse til LuckyTemplates-modellen og slå Server Timing til. Når du er færdig, skal du trykke på F5.

Du kan se, at det genererede 3 lagringsmotorforespørgsler.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den første forespørgsel får jobtabstypen og summen af ​​jobestimatet og bruttofortjenesten.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den anden forespørgsel får summen af ​​jobestimatet.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Den sidste forespørgsel får den særskilte jobtabstype fra jobtabellen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Du vil bemærke, at den udførte den samme adfærd som Eager Evaluation.

Opsummering af evalueringsmetoder

I forsøget på at forbedre ydeevnen af ​​dine beregninger, skal du huske følgende:

  • Strict Evaluation bruges til komplekse koder. Det gælder også, når du ikke ønsker at evaluere alle værdierne i tabellen.
  • Ivrig evaluering er bedre at bruge, hvis dine koder er enkle.
  • Brug IF.EAGER, hvis du vil skrive koder ved hjælp af Strict Evaluation og eksekver det med Eager Evaluation.

Men vær opmærksom på, at du skal teste disse tre metoder for at finde ud af, hvad der virkelig er bedst at bruge i din rapport.

4. Optimer et mål i LuckyTemplates

Den vigtigste lektion i denne øvelse er at optimere dine koder.

Gå tilbage og se på RB Incentive% -målet, der udføres ved hjælp af Strict Evaluation. Prøv derefter at evaluere det ved hjælp af Eager Evaluation.

Start med at oprette variabler og indtaste  RETURN -funktionen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Skift målreferencerne med variablerne.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Bekræft derefter målingen og gå til DAX Studio for at se, om det forbedrede ydeevnen.

Den viser, at den samlede tid er 642 millisekunder, og det samlede antal forespørgsler i lagermotoren er blevet reduceret til 39.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Opret nu variablerne for alle data og skift alle målereferencer til deres tilsvarende variable.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Bekræft derefter målingen og kør koden i DAX-studiet.

Den samlede eksekveringstid og den samlede mængde af storage engine-forespørgsler er blevet reduceret fra henholdsvis 600 millisekunder til 170 millisekunder og 43 forespørgsler til 15 forespørgsler.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Du kan også se, at der ikke er nogen dubletter. At have variabler i din kode forbedrer deres læsbarhed og ydeevne.

Avanceret optimering til et mål i LuckyTemplates

Dernæst skal du optimere dine DAX-koder yderligere.

I stedet for at bruge, brug fungere.

Mål i LuckyTemplates: Optimeringstip og -teknikker

HASONEVALUE  tæller antallet af tilgængelige værdier i filterkonteksten, hvilket er en meget intensiv operation. I mellemtiden kontrollerer ISINSCOPE , om den kolonne, der leveres, bruges til gruppering eller ej.

Efter at have ændret funktionerne, skal du bekræfte målingen og udføre den i DAX Studio.

Du kan se, at antallet af storage engine-forespørgsler nu er 12. Den samlede eksekveringstid er også blevet 105 millisekunder.

Mål i LuckyTemplates: Optimeringstip og -teknikker

I den 2. forespørgsel vil du bemærke et tilbagekaldsdata-id.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Dette sker nogle gange, når du bruger SELECTEDVALUE med tekstfeltet. Når du ser tilbagekaldsdata, kalder lagermotoren formelmotoren for at hjælpe med at løse kodens kompleksitet. Dette sænker ydeevnen af ​​din foranstaltning.

Fjern tilbagekaldsdata

Du skal fjerne tilbagekaldsdataene for at få en bedre ydeevne i din rapport. For at gøre det skal du oprette en konfigurationstabel i datamodellen.

Gå til Indtast data og indsæt dataene. Navngiv tabellen LossTypeConfigTable .

Mål i LuckyTemplates: Optimeringstip og -teknikker

Klik derefter på Rediger for at ændre datatypen for den kolonne, du vil importere.

Datatypen for tabstype-id'et skal være en lærerværdi, så den kan bruges i funktionen SELECTEDVALUE .

Når den er blevet indlæst i modellen, skal du oprette en relation mellem tabellen Jobs og tabellen LossTypeConfigTable baseret på tabstypen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Når du har oprettet en relation, skal du gå til tabellen Jobs og tilføje en ny kolonne. Kald det Loss ID, og ​​indtast derefter formlen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Brug funktion for konfigurationstabellen og udtræk derefter tabstype-id'et.

Gå derefter tilbage til RB Incentive%-målet og referer til det numeriske felt i stedet for tekstfeltet. Inde i SELECTEDVALUE skal du erstatte tabstype med tabs-id.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Derefter skal du ændre alle målene i koden. Brug en heltalsværdi i stedet for tekstværdier, når du tjekker for jobtypen.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Når du har ændret koden, skal du bekræfte målingen og udføre den i DAX Studio.

Callback-data-id'et elimineres i forespørgslen, og kodens eksekveringstid reduceres til 93 millisekunder.

Mål i LuckyTemplates: Optimeringstip og -teknikker

RB Incentive%-målet er nu fuldt optimeret.

5. Optimer andre tiltag i LuckyTemplates

Du skal også optimere målene WR Incentive% og QB Incentive%.

Kopiér og indsæt den nøjagtige kode, der bruges i RB Incentive%-målet. Kør derefter de 3 takter sammen.

Den samlede udførelsestid er optimeret og reduceret fra 1855 millisekunder til 213 millisekunder. Der er også kun 12 lagringsmotorforespørgsler.

De første to forespørgsler skaber filterkonteksten, og resten repræsenterer det nøjagtige antal værdier i kolonnen Jobtabstype.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Da alle mål er blevet optimeret, skal du køre den originale kode og se, hvordan ydeevnen har ændret sig. Dataene viser, at det nu bliver beregnet på 1,9 sekunder.

Mål i LuckyTemplates: Optimeringstip og -teknikker

Ydeevnen af ​​hele koden er nu optimeret, hvilket gør din rapport hurtigere og bedre.




Konklusion

I LuckyTemplates-rapporter bør foranstaltninger optimeres for at sikre, at dine DAX-koder kører problemfrit. Dette forbedrer også den overordnede ydeevne af din rapport.

Du har lært de forskellige metoder til at optimere dit mål i LuckyTemplates, og du har lært, hvordan du vurderer, hvilken du skal bruge afhængigt af konteksten for din rapport.


Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Lær nogle fantastiske analytiske teknikker, som vi kan gøre til datamodellering i LuckyTemplates ved hjælp af DAX-understøttende tabeller.

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Her dykker vi ned i LuckyTemplates Advanced DAX og implementerer rangeringslogik for at få en meget unik indsigt. Jeg viser også måleforgrening i dette eksempel.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Denne blog introducerer den nye funktion i LuckyTemplates, What-If-analyseparameteren. Du vil se, hvordan det gør alt hurtigt og nemt til din scenarieanalyse.

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Lær, hvordan du afgør, om din omsætningsvækst er god ved at kontrollere, om dine avancer er udvidet ved hjælp af LuckyTemplates, der måler forgrening.

LuckyTemplates-parametre via forespørgselseditor

LuckyTemplates-parametre via forespørgselseditor

Lær og forstå, hvordan du kan oprette og bruge LuckyTemplates Parameters, som er en kraftfuld funktion i Query Editor.

Rundt søjlediagram – en visualisering til dit dashboard

Rundt søjlediagram – en visualisering til dit dashboard

Denne vejledning vil diskutere om oprettelse af et rundt søjlediagram ved hjælp af Charticulator. Du lærer, hvordan du designer dem til din LuckyTemplates-rapport.

PowerApps funktioner og formler | En introduktion

PowerApps funktioner og formler | En introduktion

Lær, hvordan du bruger PowerApps-funktioner og -formler til at forbedre funktionaliteten og ændre adfærd i vores Power Apps-lærredsapp.

Pipe In R: Tilslutningsfunktioner med Dplyr

Pipe In R: Tilslutningsfunktioner med Dplyr

I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af ​​et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.