Mål i LuckyTemplates: Optimaliseringstips og -teknikker

I denne opplæringen lærer du hvordan du optimaliserer et mål i LuckyTemplates. Optimalisering av tiltak i rapporten forbedrer ytelsen til kodene dine når det gjelder å produsere verdifull innsikt og data. Du vil også lære om de forskjellige evalueringsmetodene og hvordan du bruker dem for å optimalisere rapporten. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

Innholdsfortegnelse

1. Analyser ytelsen til koden

I dette eksemplet må du optimalisere denne rapporten:

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Dette er datamodellen du skal bruke:

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Jobs -tabellen inneholder all informasjon om enhver jobb som er utført i en gitt tidsperiode.

Denne tabellen er grunnlaget for alle målene du skal optimalisere:

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Først må du teste ytelsen til rapporten.

Gå til Vis-fanen og velg. Deretter klikker du på Start opptak og oppdater bilder . Vent til analysatoren gjengir det visuelle.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Når dette er gjort, ruller du ned listen over insentivfordeling og klikker på Kopier spørring .

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Deretter velger du Eksterne verktøy for å gå til DAX Studio og se på koden som LuckyTemplates genererte.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Deretter limer du inn den kopierte spørringen i arbeidsområdet.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Variabler i tiltaket

Den første variabelen er DateClosed som er sliceren på dashbordet. Den bruker en kolonne fra faktatabellen for å få verdiene for visse perioder i sliceren.

Den neste variabelen er JobLost som sjekker for False eller Blank av Job Lost-dataene.

Den siste variabelen er MatrixVisual . Dette er hjertet i koden. Den viser den oppsummerte kolonnen generert av LuckyTemplates for å fylle matrisevisuals. Den grupperer Job Loss Type i denne matrisen og injiserer filtrene som kommer fra slicerne. Deretter legger den til utvidede kolonner.

Når oppsummeringskolonnen fullfører utførelsen, vil du se resultatene i ruten under koden.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

LuckyTemplates bruker resultatet til å fylle ut matrisevisuals.

Cold Cache for DAX Studio

Deretter må du sjekke tiden det tar å utføre hele koden. For å gjøre det, slå på Server Timings og velg Tøm buffer og kjør deretter .

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Når du prøver å optimalisere et mål i LuckyTemplates ved hjelp av, er det bedre å operere under den kalde cache-scenariet slik at tiden du får er riktig. Trykk deretter på F5 og vent til operasjonen er fullført i fanen Server Timings .

Når den er fullført, kan du se at den totale utførelsestiden er 3,6 sekunder. Den brukte mesteparten av tiden i formelmotoren og brukte 57 millisekunder i lagringsmotoren

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Du kan også se at den fant 383 lagringsmotorspørringer. Av alle disse spørringene er det 327 som er castet i minnet slik at de kan gjenbrukes.

2. Analyser et mål i LuckyTemplates

Deretter må du optimalisere disse 3 identiske tiltakene.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Du må trekke ut disse målene til en annen fil og koble den til datamodellen du bruker.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Deretter starter du Server Timings for å se tiden det tar av de 3 målene for å fylle ut bilder.

Resultatene av kjøringen viser at tiltakene bruker 1,85 sekunder på å hente frem et resultat.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Resultatet viser en tabell bestående av 10 rader og 3 utvidede kolonner som hører hjemme i de oppsummerte kolonnene.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Tapstype-kolonnen inneholder 10 unike verdier som koden beregner for å få insentivprosentene.

Tiden det tar for koden er eksponentielt høy. Det er her og når du trenger å optimalisere dem.

RB Incentive%-målet i LuckyTemplates

Dette er et RB Incentive%-mål i LuckyTemplates. Det er en av de 3 hovedmålene som brukes i dette eksemplet.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Du kan se at den prøver å beregne insentivprosenten.

Den har en variabel, JobType, som henter Lost Type-verdi i gjeldende filterkontekst. Den sjekker også om det bare er én enkelt verdi synlig i gjeldende filterkontekst. Du må bruke en  funksjon slik at hver gang en betingelse er oppfylt, gir den tilsvarende resultat.

Denne tiltakskoden genererer mye lagringsmotorfett som øker tiden i den totale varigheten av koden.

Gå nå tilbake til DAX Studio for å sjekke mengden lagringsmotorsøk målingen genererer.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Du kan se at det tok 600 millisekunder å utføre og 43 lagringsmotorspørringer å enkelt hente data for de 10 radene.

Data fra lagringsmotoren

Sjekk nå dataene som blir forespurt fra lagringsmotoren. I den første spørringen er det en Job Tap Type og DCOUNT  av Jobs Tap Type.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Den neste spørringen har Jobs Date Closed, som er fra sliceren i rapporten.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

I den tredje koden vil du se en annen Jobs Tap Type med tilbakeringingsdata-ID.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

På en annen linje vil du se de viktigste kodelinjene.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Det første du ser er jobbbetalingen mottatt, fakturert og faktiske utgifter.

Neste er WHERE-  funksjonen som angir en betingelse og dets tilsvarende resultat. Resultatet vil variere basert på valget av slicer og brytersetningen i RB Incentive%-målet.

Du vil også legge merke til at koden på linje 12 og 14 er den samme.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Hvis du blar til høyre, kan du se at det er linjer med de samme spørringene. Spørringene på linjene styres av switch-setningen i RB Incentive%-målet.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Hvis du går tilbake til RB Incentive%-målet i LuckyTemplates, kan du se antall ganger et søk gjentas og hvordan det gjenspeiles i lagringsmotorsøkene.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Logikken bak IF og Switch

Nå, for å forstå hvorfor spørringene utføres flere ganger, må du forstå logikken til og SWITCH- funksjoner.

Du må utføre dem separat på en spørreplan. Men før du gjør det, sørg for å koble til databasen og slå på spørringsplanen.

Utfør SWITCH-  setningen i spørringsplanen. Deretter markerer du  uttalelsen og trykker på enter.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Dette vil generere en logisk spørreplan med forskjellige operasjoner.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Deretter utfører du IF -setningen ved å markere setningen og trykke enter.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Du kan se at den genererer den samme logiske spørreplanen.

Dette er fordi når du bruker en , konverterer motoren internt denne funksjonen til en IF -setning. Men en SWITCH- setning anbefales fordi den øker lesbarheten til koden din.

Etter det må du forstå hvordan en kode utføres i IF- eller SWITCH -funksjonen.

Dette er en eksempelkode som har en SWITCH- setning inni.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Den har mål for bruttofortjeneste, totalt estimat og totalt fakturert som alle er SUMMEN av forskjellige kolonner. Den har også en funksjon over Jobs Loss Type og en SWITCH og TRUE -setning.

Når du kjører denne koden, vil du se logikken bak funksjonene.

Den første spørringen får den distinkte Jobs Loss Type fra Jobs-tabellen.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Bortsett fra Jobs Tap Type, får den også summen av Jobs Estimat.

Inne i WHERE- betingelsen kan du også se verdiene som finnes i kolonnen Jobs Loss Type.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

3. Bruk kodeevalueringsmetoder

I DAX er det 3 metoder for å evaluere koder:

  • Streng evaluering
  • Ivrig evaluering
  • IF.Eager Evaluering

Disse metodene vil hjelpe deg med å optimalisere en kode eller et mål i LuckyTemplates.

1. metode: streng evaluering

Eksemplet nedenfor bruker streng evalueringsmetoden.

Logikken bak det er at hvis konteksten til Jobs Tap Type er lik A, vil det gi bruttofortjenesten. Ellers gir det Totalestimatet. Koden gjør dette for hver rad i Jobs Tap Type.

Dette er et annet eksempelmål i LuckyTemplates som bruker Strict Evaluation.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Når du kjører denne koden, vil den generere 5 lagringsmotorspørringer.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Med streng evaluering gir koden det totale estimatet hvis bruttofortjenesten multiplisert med 1,4 er større enn det gjennomsnittlige estimatet. Ellers vil det gi Bruttofortjenesten.

Bruk av Strict Evaluation produserer flere lagringsmotorspørringer fordi IF  -setningen sjekker konkurransen til bruttofortjenesten flere ganger og vil til slutt hemme ytelsen til hele operasjonen.

2. metode: Ivrig evaluering

Dette er samme kode som forrige eksempel.

Men i stedet for å beregne målene inne i  IF- setningen, beregnet den alt i før RETURN .

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Det betyr at før du sjekker utsagnene, får den alle verdiene av bruttofortjeneste og totalestimat for alle tapstyper.

Når du kjører denne koden, reduseres antallet lagringsmotorer til 3.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Det forbedrer ytelsen til hele operasjonen.

I den første operasjonsspørringen får den Jobs Tap Type og summen av Jobsestimat og Bruttofortjeneste.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Den neste spørringen får summen av jobbestimatet fra jobbstallen. Dette brukes til å beregne gjennomsnittsestimatet.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Den siste spørringen gir den distinkte Jobs Loss Type for verdiene skrevet på ADDCOLUMNS .

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Ved å bruke Eager Evaluation får du alt i én enkelt databuffer. Dataene blir også evaluert og iterert på formelmotoren. IF erklæringen vil returnere enten totalestimat eller bruttofortjeneste avhengig av sann eller usann evaluering.

Ivrig evaluering er ikke alltid den beste metoden for å optimalisere kodene dine. Strenge evaluering vil resultere i bedre ytelse hvis du har komplekse koder. Alt avhenger av funksjonene du bruker inne i DAX-koden.

Ulempen med Eager Evaluation er at hvis du lager verdisaker før en IF-  eller  SWITCH  -setning og bruker de variablene inne i setningen som aldri skal utføres, vil motoren fortsatt beregne disse variablene.

Ivrige evalueringsulemper

Her er et eksempel på ulempen:

Ideelt sett, hvis tapstypen for jobber er lik A, bør den få bruttofortjeneste. Ellers får den Totalestimat.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Siden det ikke er noen verdi inne i kolonnen Job Tap Type som er lik A, bør den alltid få totalt estimat. Imidlertid gir den fortsatt bruttofortjenesten i databufferen.

Hvis du ser på det første søket, får det Jobs Tap Type og summen av Jobs Bruttofortjeneste og Estimat.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

I den neste spørringen får den en distinkt Jobs Tap Type fra Jobs-tabellen.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

3. Metode: IF.EAGER Evaluering

Den neste metoden er  IF.EAGER-  funksjonsevalueringen som gjenskaper oppførselen til Eager Evaluation.

Den lar deg skrive en kode som representerer den strenge evalueringen og utføre den med Eager Evaluation.

Hvis du ser på denne eksempelkoden, er den akkurat det samme som Strict Evaluation-koden. Den eneste forskjellen er at denne bruker IF.EAGER  -funksjonen i stedet for IF .

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Før du kjører koden, sørg for å koble til LuckyTemplates-modellen og slå på Server Timing. Når du er ferdig, trykk F5.

Du kan se at den genererte 3 lagringsmotorspørringer.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Den første spørringen får tapstypen for jobber og summen av jobbestimatet og bruttofortjenesten.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Den andre spørringen får summen av jobbestimatet.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Den siste spørringen får den distinkte Jobs Loss Type fra Jobs-tabellen.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Du vil legge merke til at den utførte samme oppførsel som Eager Evaluation.

Sammendrag av evalueringsmetoder

Når du prøver å gjøre ytelsen til beregningene dine bedre, må du huske følgende:

  • Strenge evaluering brukes for komplekse koder. Det gjelder også når du ikke ønsker å evaluere alle verdiene i tabellen.
  • Ivrig evaluering er bedre å bruke hvis kodene dine er enkle.
  • Bruk IF.EAGER hvis du vil skrive koder ved hjelp av Strict Evaluation og utfør den med Eager Evaluation.

Men vær oppmerksom på at du må teste disse tre metodene for å finne ut hva som virkelig er best å bruke i rapporten.

4. Optimaliser et mål i LuckyTemplates

Hovedleksjonen i denne opplæringen er å optimalisere kodene dine.

Gå tilbake og se på RB Incentive% -målet som utføres ved hjelp av Strict Evaluation. Deretter kan du prøve å evaluere den ved å bruke Eager Evaluation.

Start med å lage variabler og legge inn  RETURN -funksjonen.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Endre målreferansene med variablene.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Etter det, bekreft målingen og gå til DAX Studio for å se om det forbedret ytelsen.

Den viser at den totale tiden er 642 millisekunder og det totale antallet lagringsmotorforespørsler er redusert til 39.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Opprett nå variablene for alle data og endre alle målreferanser til deres tilsvarende variabler.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Bekreft deretter målingen og utfør koden i DAX-studioet.

Den totale utførelsestiden og den totale mengden lagringsmotorspørringer er redusert fra henholdsvis 600 millisekunder til 170 millisekunder og 43 spørringer til 15 spørringer.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Du kan også se at det ikke er noen duplikater. Å ha variabler i koden din forbedrer lesbarheten og ytelsen.

Avansert optimalisering for et mål i LuckyTemplates

Deretter må du optimalisere DAX-kodene dine ytterligere.

I stedet for å bruke, bruk funksjon.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

HASONEVALUE  teller antall tilgjengelige verdier i filterkonteksten, som er en svært intensiv operasjon. I mellomtiden sjekker ISINSCOPE om kolonnen som blir levert brukes til gruppering eller ikke.

Etter å ha endret funksjonene, bekreft målingen og utfør den i DAX Studio.

Du kan se at antallet lagringsmotorspørringer nå er 12. Den totale utførelsestiden har også blitt 105 millisekunder.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

I den andre spørringen vil du legge merke til en tilbakeringingsdata-ID.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Dette skjer noen ganger når du bruker SELECTEDVALUE med tekstfeltet. Når du ser tilbakeringingsdata, kaller lagringsmotoren formelmotoren for å hjelpe til med å løse kompleksiteten til koden. Dette reduserer ytelsen til målingen din.

Fjern tilbakeringingsdata

Du må fjerne tilbakeringingsdataene for å få bedre resultater i rapporten. For å gjøre det må du lage en konfigurasjonstabell i datamodellen.

Gå til alternativet Enter Data og lim inn dataene. Gi tabellen et navn LossTypeConfigTable .

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Deretter klikker du på Rediger for å endre datatypen for kolonnen du skal importere.

Datatypen til tapstype-IDen skal være en lærerverdi slik at den kan brukes i SELECTEDVALUE- funksjonen.

Når den er lastet inn i modellen, oppretter du en relasjon mellom Jobs-tabellen og LossTypeConfigTable-tabellen basert på Loss Type.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Etter å ha opprettet en relasjon, gå til tabellen Jobber og legg til en ny kolonne. Kall det Loss ID og skriv deretter inn formelen.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Bruke funksjonen for konfigurasjonstabellen og trekk ut tapstype-IDen.

Gå deretter tilbake til RB Incentive%-målet og referer til det numeriske feltet i stedet for tekstfeltet. Inne i SELECTEDVALUE erstatter du tapstype med taps-ID.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Deretter endrer du alle målene i koden. Bruk en heltallsverdi i stedet for tekstverdier når du ser etter jobbtypen.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Når du har endret koden, bekrefter du målingen og utfører den i DAX Studio.

Tilbakeringingsdata-IDen elimineres i spørringen og kodens utførelsestid reduseres til 93 millisekunder.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

RB Incentive%-målet er nå fullstendig optimalisert.

5. Optimaliser andre tiltak i LuckyTemplates

Du må også optimalisere målene WR Incentive% og QB Incentive%.

Kopier og lim inn den nøyaktige koden som brukes i RB Incentive%-målet. Kjør deretter de 3 tiltakene sammen.

Den totale utførelsestiden er optimalisert og redusert fra 1855 millisekunder til 213 millisekunder. Det er også bare 12 lagringsmotorspørringer.

De to første spørringene oppretter filterkonteksten, og resten representerer det nøyaktige antallet verdier i kolonnen Jobs Loss Type.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Siden alle målene er optimert, kjør den opprinnelige koden og se hvordan ytelsen har endret seg. Dataene viser at det nå blir beregnet på 1,9 sekunder.

Mål i LuckyTemplates: Optimaliseringstips og -teknikker

Ytelsen til hele koden er nå optimert, noe som gjør rapporten din raskere og bedre.




Konklusjon

I LuckyTemplates-rapporter bør tiltak optimaliseres for å sikre at DAX-kodene dine fungerer jevnt. Dette forbedrer også den generelle ytelsen til rapporten din.

Du har lært de forskjellige metodene for å optimalisere målingen din i LuckyTemplates, og du har lært hvordan du vurderer hvilken du skal bruke avhengig av konteksten til rapporten din.


Slik bruker du Natural Language Query (Q&A) i LuckyTemplates

Slik bruker du Natural Language Query (Q&A) i LuckyTemplates

I denne opplæringen skal jeg vise deg hva du kan gjøre med Natural Language Query eller skrivebordsfunksjonen for spørsmål og svar i LuckyTemplates netttjeneste.

Sorter visualiseringer dynamisk i LuckyTemplate-rapportene dine

Sorter visualiseringer dynamisk i LuckyTemplate-rapportene dine

Lær hvordan du sorterer visualiseringer dynamisk i LuckyTemplates-rapportene dine. Få kvalitetsinnsikt samtidig som du er kreativ i måten du presenterer data på.

PowerApps-søkefelt: Slik legger du til og tilpasser

PowerApps-søkefelt: Slik legger du til og tilpasser

Lær hvordan du oppretter et PowerApps-søkefelt fra bunnen av og tilpasser det til å matche det overordnede temaet for appen din.

SELECTEDVALUE DAX-eksempel- Valg av høsteskive

SELECTEDVALUE DAX-eksempel- Valg av høsteskive

Høst eller fang en verdi inne i et mål for å gjenbruke i et annet mål for dynamiske beregninger ved å bruke SELECTEDVALUE DAX i LuckyTemplates.

Versjonshistorikk i SharePoint-lister

Versjonshistorikk i SharePoint-lister

Oppdag hvordan versjonshistorikk i SharePoint kan hjelpe deg med å se utviklingen av bestemte data, og hvor mange endringer den har gjennomgått.

Hex-fargekodevelger for Lucky Templates-rapporter

Hex-fargekodevelger for Lucky Templates-rapporter

Her er et verktøy for å lage rapporter og grafikk, en sekskantkodevelger for farger som du kan bruke for enkelt å få fargene til LuckyTemplates-rapportene dine.

Dynamisk datoskjærer i Lucky-maler ved hjelp av en periodetabell

Dynamisk datoskjærer i Lucky-maler ved hjelp av en periodetabell

Du kan enkelt vise en datoperiode som en slicer i rapporten ved hjelp av en periodetabell. Bruk en M-kode for å lage den dynamiske datoskjæreren i LuckyTemplates.

Proporsjons- og frekvenstabeller i Excel

Proporsjons- og frekvenstabeller i Excel

Skulle dykke ned i frekvenstabeller i Excel samt proporsjonstabeller. Se nærmere på hva de er og når du skal bruke dem.

Slik installerer du DAX Studio & Tabular Editor i LuckyTemplates

Slik installerer du DAX Studio & Tabular Editor i LuckyTemplates

Lær hvordan du laster ned og installerer DAX Studio og Tabular Editor 3 og hvordan du konfigurerer dem for bruk i LuckyTemplates og i Excel.

LuckyTemplates Shape Map Visualization for romlig analyse

LuckyTemplates Shape Map Visualization for romlig analyse

Denne bloggen inneholder Shape Map-visualiseringen for romlig analyse i LuckyTemplates. Jeg viser deg hvordan du kan bruke denne visualiseringen effektivt med dens funksjoner og elementer.