Dette indlæg vil diskutere, hvordan man identificerer et filter via xmSQL og storage engine-forespørgslen i LuckyTemplates. Du vil også lære, hvad VertiPaq laver, når du filtrerer på rækkevidde. Dette er et vigtigt emne, fordi kardinaliteten af det, der anvendes i filtrene, er den største drivkraft for DAX's ydeevne.
xmSQL-forespørgsel er et kvasi-efterfølgersprog, der har SELECT , FROM og WHERE -sætningerne. WHERE - sætningen er dit filter, som introduceres, når du bruger ellerfungere. Der findes filtre i både den logiske forespørgselsplan og forespørgselsplanen for lagermotoren.
Indholdsfortegnelse
Filterkontekstovergang
Denne eksempelforespørgsel harfunktion med det samlede salg ogfunktion over Faktasalget. Faktasalget multiplicerer den aktuelle pris og salgsmængden. I dette eksempel skal du kun fokusere på salg, der er større end 300.

Kørsel af forespørgslen vil give dig et tabelresultat på én række, som ikke er særlig nyttigt.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Men hvis du går til fanen Server Timings og scanner, kan du se xmSQL-sætningen, der giver dig information om, hvad din forespørgsel gør.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
WITH - sætningen med $Expr0 betyder, at et matematisk udtryk bliver beregnet. Dernæst vælges udtrykket fra salgsdatatabellen eller faktasalgstabellen og filtreres derefter i WHERE-udtrykket med de fastsatte betingelser.
I den fysiske forespørgselsplan kan du se Filter_Vertipaq- operatoren. Det betyder, at forespørgslen bliver skubbet ned til lagermotoren. Brug så meget som muligt lagringsmotoren som et filter for at få en hurtigere DAX-ydelse.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Dette er en anden eksempelforespørgsel, der bruger SUMX i stedet for funktionen CALCULATETABLE . Hvis du kører forespørgslen og ser på xmSQL-sætningen, kan du se de samme resultat-, scannings- og forespørgselsplaner.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Du kan bruge enten SUMX- eller CALCULATETABLE -funktionen til at generere resultater. Men SUMX kan nogle gange være langsommere end CALCUATETABLE . Det er bedst at bruge sidstnævnte for at opnå en jævnere DAX-ydelse.
Filtrer på rækkevidde i LuckyTemplates
Dette er en eksempelforespørgsel, der filtrerer på et område. Filterbetingelsen henter salgsdata, hvis den aktuelle pris er større end eller lig med 300, men mindre end 1000.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Hvis du kører forespørgslen og ser på xmSQL-sætningen, kan du se et interval i WHERE- sætningen.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Hvis du ser på den fysiske forespørgselsplan, kan du se 2 Filter_Vertipaq . Dette skyldes, at dit filter har et interval mellem 300 og 1000. Det betyder også, at storage-motoren arbejder på forespørgslen og beregningen.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Her er en anden forespørgsel med flere værdier ved hjælp af OR- sætningen, som er angivet med " || ”.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Når du har kørt forespørgslen, kan du se ændringer i WHERE -sætningen inde i xmSQL-sætningen. xmSQL konverterede OR -sætningen til en IN- sætning.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Hvis du bruger IN i forespørgslen, vil det give den samme xmSQL-sætning og resultater. Husk, at når du bruger IN , skal det være en tabel, der er markeret med krøllede parenteser.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Men at bruge en OR- eller IN -sætning er ligegyldig, for når storage-motoren læser den, ved den, at den har den samme xmSQL-sætning. Det er derfor, det giver det samme resultat på 939.012 $.
![Filtrer i LuckyTemplates: DAX Queries Context Transition Filtrer i LuckyTemplates: DAX Queries Context Transition]()
Konklusion
I dette blogindlæg lærte du, hvordan du opsætter en filterbetingelse i din DAX i . Filtre definerer, hvilke resultater der kan genereres fra din DAX-forespørgsel i LuckyTemplates. De er vigtige enheder, der skal etableres for at påberåbe sig kontekstovergange. Hvis du ønsker at få specifikke resultater fra forskellige tidsperioder eller intervaller, skal filterkontekst introduceres i forespørgslen.
Nick