Datacaches i en DAX-beregning

I denne øvelse lærer du om, hvad datacaches gør i en DAX-beregning. Du vil forstå, hvordan de arbejder med formlen og lagermotorerne for at give svar på dine spørgsmål.

Indholdsfortegnelse

Hvad er datacaches?

Lagermotoren interagerer med formelmotoren i form af en datacache.

Hvis du husker fra de tidligere blogindlæg om DAX-forespørgselsstrukturen, ved du, at formelmotoren anmoder om data fra lagermotoren. Sidstnævnte går derefter til databasen, henter forskellige typer data og returnerer dem derefter tilbage til formelmotoren i form af en datacache.

Lagermotoren kan lave simpel matematik og aggregering, hvilket gør det hurtigere. Det tilbyder også parallelitet, som kan fylde flere datacacher på én gang. En forespørgsel på lagermotor kan tage tid at generere et svar. Men hvis du tilføjer alle forskellige storage-motorforespørgsler, vil resultaterne ikke være de samme, fordi den fylder mere end én datacache.

Formelmotoren arbejder på den anden side på komplekse forespørgsler. Da det er en enkelt-trådet motor, kan den kun bruge én endelig konsolideret datacache. Det begynder at arbejde på datacachen, når alle anmodninger er udfyldt af lagermotoren.

Hvis formelmotoranmodningen er nøjagtig den samme som den tidligere anmodning, vil cachen, der tidligere blev returneret, blive brugt igen. Lagermotoren er smart nok til at returnere den samme datacache, hvis den modtager den samme anmodning. Dette gør DAX'ens ydeevne hurtigere, da dataene allerede er cachelagret.

Når du kører et mål, er det vigtigt at køre det mod en kold cache; undgå altid at køre dine forespørgsler i den varme cache. En varm cache betyder, at lagringsmotorens datacache allerede er dannet og klar til at blive returneret.

Hvad er nøglefunktionerne?

Datacaches er tabeller, der er materialiseret i hukommelsen, som tager tid og spiser RAM. Husk altid, at materialiseringen skal være så lav som muligt.

En anden nøglefunktion er, at disse caches er ukomprimerede . Når den først kommer ud af lagermotoren og sendes til formelmotoren, bliver datacachen en ukomprimeret fuld tabel i hukommelsen. Denne udførelse er meget langsommere end en peer-lagringsmotoranmodning, som alt er i hukommelsen og komprimeret.

Der er ikke noget problem med at bruge formelmotoren; du skal bare have lagermotoren til at udføre arbejdet så meget som muligt.

Datacaches er også midlertidige. De eksisterer i et stykke tid, og så er de væk. Selvom de er materialiseret i hukommelsen, er de ikke vedvarende, så de bliver ryddet ud.

Hvor finder man datacaches?

Du kan finde disse oplysninger i kolonnen Physical Query Plans Records og i DAX Studios Server Timings i Rows-kolonnen . Det vil du vise, hvor mange rækker der produceres af lagermotoren og sendes til formelmotoren.

Hvis du kører visse tests i servertimingerne, vil du bemærke, at antallet af rækker kan falde en smule. Dette er kun en retningslinje for, hvor mange rækker du trækker op.

Det vigtigste at huske på med datacaches er, at antallet af materialiserede rækker skal være lig med antallet af rækker, der er nødvendige for output så tæt som muligt. Hvis der er stor forskel på antallet af rækker, betyder det, at ordreoperationen er slået fra.

Hvis mængden af ​​materialiserede rækker er lig med mængden af ​​rækker, der er nødvendige for outputtet, kaldes det Late Materialization . Men hvis antallet af materialiserede rækker er større end antallet af nødvendige rækker, kaldes det tidlig materialisering . Da disse er ukomprimerede data, bør du ikke lade begge motorer materialisere dem, fordi det vil bremse DAX's ydeevne.

Dette er et eksempel på en tidlig materialisering:

Datacaches i en DAX-beregning

I den fysiske forespørgselsplan kan du se 25 millioner rækker blive trukket op i kolonnen Records. Eksempelforespørgslen behøver dog ikke 25 millioner rækker output. Det betyder, at forespørgslen trak for mange rækker end nødvendigt.

Hvis du ser på servertimingerne, vil du se det samme antal rækker, der trækkes i kolonnen Rækker.

Datacaches i en DAX-beregning

I SE CPU- visualiseringerne vil du se et tal, hvis der er paralleller i dine forespørgsler. Da dette eksempel ikke har nogen, viste det 0.

Datacaches i en DAX-beregning




Konklusion

En langsom ydende DAX kan betyde, at din forespørgsel trækker unødvendige caches for at dine motorer kan fungere. Datacaches er ansvarlige for hastigheden og nøjagtigheden af ​​din DAX, fordi motorerne arbejder på dem for at generere svar på forskellige anmodninger. For en hurtigere DAX-ydeevne kan du løse dette problem ved at opbygge din datamodel og DAX-mål korrekt.

Leave a Comment

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.

Oprettelse af en datotabel i LuckyTemplates

Oprettelse af en datotabel i LuckyTemplates

Find ud af, hvorfor det er vigtigt at have en dedikeret datotabel i LuckyTemplates, og lær den hurtigste og mest effektive måde at gøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte vejledning fremhæver LuckyTemplates mobilrapporteringsfunktion. Jeg vil vise dig, hvordan du kan udvikle rapporter effektivt til mobilenheder.

Professionelle serviceanalyserapporter i LuckyTemplates

Professionelle serviceanalyserapporter i LuckyTemplates

I denne LuckyTemplates Showcase gennemgår vi rapporter, der viser professionel serviceanalyse fra et firma, der har flere kontrakter og kundeengagementer.

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Gå gennem de vigtigste opdateringer til Power Apps og Power Automate og deres fordele og implikationer for Microsoft Power Platform.

Almindelige SQL-funktioner: En oversigt

Almindelige SQL-funktioner: En oversigt

Opdag nogle almindelige SQL-funktioner, som vi kan bruge, såsom streng, dato og nogle avancerede funktioner til at behandle eller manipulere data.

LuckyTemplates skabelonoprettelse: Guide og tips

LuckyTemplates skabelonoprettelse: Guide og tips

I denne tutorial lærer du, hvordan du opretter din perfekte LuckyTemplates-skabelon, der er konfigureret til dine behov og præferencer.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne blog vil vi demonstrere, hvordan man lagdelte feltparametre med små multipler for at skabe utrolig nyttig indsigt og visuals.

LuckyTemplates-rangering og brugerdefineret gruppering

LuckyTemplates-rangering og brugerdefineret gruppering

I denne blog vil du lære, hvordan du bruger LuckyTemplates rangerings- og brugerdefinerede grupperingsfunktioner til at segmentere et eksempeldata og rangordne det efter kriterier.

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

I denne tutorial vil jeg dække en specifik teknik omkring, hvordan du kun viser Kumulativ Total op til en bestemt dato i dine visuals i LuckyTemplates.