Det første trin er evalueringskonteksten eller den indledende kontekst. Så træffer DAX en beslutning baseret på den funktion, du skriver, eller den type beregning, den skal udføre.
Det forgrener sig til det andet trin, som enten er konteksten eller rækkekonteksten .
Der er meget stor forskel på disse to sammenhænge, selvom man faktisk kan få de samme resultater ved at skrive forskellig formel.
For virkelig at forstå, hvordan DAX fungerer, skal du forstå forskellen mellem de to, og hvordan ting faktisk beregnes i hukommelsen gennem DAX.
Forstå filterkonteksten
Filterkonteksten er forholdsvis ligetil. Det er relativt enkelt, fordi det virkelig stemmer overens med de simple sammenlægninger, du laver. For at forstå, hvad der rent faktisk sker, lad os gennemgå et meget specifikt eksempel.
Vi har to eksempler: samlede solgte mængder pr. dag og samlede solgte mængder pr. produkt. Disse to har nøjagtig den samme formel, men med forskellig kontekst .
Lad os gennemgå præcis, hvordan dette beregnes for den øverste række i hver af disse tabeller.
Som du kan se på øverste række, har vi solgt 24 produkter den 1. januar 2015. Der sættes et filter på Datoen 1. januar 2015 for at regnestykket virker.
Hvis vi hopper til datamodel, kan vi se, at filteret placeret på Datoen flyder ned gennem relationen, indtil det går gennem Salgstabellen.
I salgstabellen er købsdatoen filtreret for den første januar 2015. Og når det filter er på plads, vil der kun være tilbage den første januar 2015.
Aggregation i filterkonteksten
Da vi opsummerer kolonnen Antal i denne funktion, foretager aggregeringen i filterkonteksten denne ene store evaluering eller store aggregering af hele kolonnen.
Filterkonteksten betyder blot , at filtrene er sat på plads. Dette vil gørese på hele kolonnen, der er tilovers, og lav derefter en aggregering af alt på én gang.
Det samme kan siges om en række forskellige beregninger. Du kan gøre dette, mens du forsøger at tælle de samlede transaktioner op, som du var i gang med, eller den samlede omsætning, du opretter. Den samme sammenlægning kan foretages efter evalueringskonteksten er afsluttet.
Der er så mange sammenhænge i DAX, at det til tider kan blive forvirrende. Et tip, som jeg kan dele med dig, er at knytte filterkontekst til aggregering , som en sum eller et gennemsnit, eller et min og maks. Dette er det modsatte af en iteration, som er det, der fungerer med rækkekontekst.
Konklusion
For at opsummere fungerer en filterkontekst efter den indledende evalueringskontekst er færdig. Nøglen er at forbinde det med en aggregering. Det, der sker bag kulisserne, er, at det gør denne ene store sammenlægning af en kolonne, efter at alle filtrene er blevet sat på plads.
Du kan se på disse links for at lære mere om anvendelsen af filterkontekst inde i LuckyTemplates: