Context in DAX-formules

Belangrijk : Dit artikel is automatisch vertaald, bekijk de disclaimer. De Engelse versie van dit artikel vindt u hier voor referentiedoeleinden.

Via context kunt u dynamische analyses uitvoeren waarin de resultaten van een formule kunnen worden aangepast aan de huidige rij- of celselectie en ook aan gerelateerde gegevens. Kennis en het efficiënte gebruik van context zijn zeer belangrijk voor het maken van hoogwaardige formules, dynamische analyses en het oplossen van problemen in formules.

In dit gedeelte worden de verschillende typen context gedefinieerd: rijcontext, querycontext en filtercontext. U leest hoe de context wordt geëvalueerd voor formules in berekende kolommen en in draaitabellen.

In het laatste onderdeel van dit artikel vindt u koppelingen naar uitgebreide voorbeelden die aangeven hoe de resultaten van formules veranderen naargelang de context.

Context

Formules in Power Pivot kunnen worden beïnvloed door de filters zijn toegepast in een draaitabel door relaties tussen tabellen, naar en filters in formules gebruikt. Context is wat kunt u dynamische analyses uitvoeren. Lidmaatschap context is belangrijk voor bouwen en voor het oplossen van formules.

Er zijn verschillende soorten contexten: rijcontext, querycontext en filtercontext.

Rijcontext kan worden gezien als "de huidige rij”. Als u een berekende kolom hebt gemaakt, bestaat de rijcontext uit de waarden in elke afzonderlijke rij, en uit de waarden in kolommen die aan de huidige rij gerelateerd zijn. Er zijn ook enkele functies (EARLIER en EARLIEST) waarmee u een waarde uit de huidige rij ophaalt en die waarde vervolgens gebruikt bij een bewerking op een volledige tabel.

Querycontext verwijst naar de deelverzameling met gegevens die, afhankelijk van de rij- en kolomkoppen, impliciet wordt gemaakt voor elke cel in een draaitabel.

Filtercontext is de set waarden die in elke kolom is toegestaan op basis van filterbeperkingen die zijn toegepast op de rij of die zijn gedefinieerd door filterexpressies binnen de formule.

Naar boven

Rijcontext

Wanneer u een formule maakt in een berekende kolom, bevat de rijcontext voor die formule de waarden van alle kolommen in de huidige rij. Als de tabel verwant is aan een andere tabel, bevat de inhoud ook de waarden van die andere tabel die verwant is aan de huidige rij.

Stel dat u een berekende kolom maken, = [Vrachtkosten] + [belasting],

, waarin twee kolommen uit dezelfde tabel bij elkaar worden opgeteld. Deze formule gedraagt zich als formules in een Excel-tabel, waarin automatisch naar waarden uit dezelfde rij wordt verwezen. Houd er rekening mee dat tabellen verschillen van bereiken: u kunt niet verwijzen naar een waarde uit de rij vóór de huidige rij met de bereiknotatie en u kunt niet verwijzen naar een één willekeurige waarde in een tabel of cel. U moet altijd werken met tabellen en kolommen.

De rijcontext volgt automatisch de relaties tussen tabellen om te bepalen welke rijen in de verwante tabellen bij de huidige rij horen.

De volgende formule maakt bijvoorbeeld gebruik van de functie RELATED om een belastingwaarde uit een gerelateerde tabel op te halen, op basis van de regio waarnaar de order is verzonden. De belastingwaarde wordt bepaald door het gebruik van de waarde voor de regio in de huidige tabel, het opzoeken van de regio in de verwante tabel en door vervolgens uit de verwante tabel het belastingtarief op de halen voor die regio.

= [Vrachtkosten] + RELATED('Region'[TaxRate])

Met deze formule wordt eenvoudigweg het belastingtarief voor de huidige regio opgehaald uit de tabel Regio. U hoeft de sleutel die de tabellen verbindt, niet te kennen of op te geven.

Context met meerdere rijen

DAX bevat tevens functies waarmee berekeningen voor een tabel kunnen worden herhaald. Deze functies kunnen meerdere huidige rijen en huidige rijcontexten bevatten. In programmeertermen te spreken, kunt u formules ophalen die zich herhalen over een binnen- en buitenlus.

Stel dat uw werkmap bevat een tabel producten en een tabel verkoop . Wilt leest u over de hele tabel sales, dat wil vol transacties met betrekking tot verschillende producten zeggen, wellicht en de grootste hoeveelheid voor elk product in een één transactie hebt besteld zoeken.

In Excel is voor deze berekening een reeks tussenliggende overzichten vereist, die opnieuw moeten worden opgebouwd als de gegevens zijn gewijzigd. Als u een hoofdgebruiker van Excel bent, kunt u mogelijk matrixformules samenstellen waarmee de taak kan worden uitgevoerd. U zou ook in een relationele database geneste subselecties kunnen schrijven.

Met DAX kunt u echter één formule samenstellen om de juiste waarde te retourneren. De resultaten worden automatisch bijgewerkt wanneer u gegevens aan de tabellen toevoegt.

=MAXX(filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Zie EARLIER, functie voor stapsgewijze instructies voor deze formule.

In het kort: met de functie EARLIER wordt de rijcontext opgeslagen van de bewerking die aan de huidige bewerking voorafging. De functie slaat altijd twee sets contexten op in het geheugen: één set contexten vertegenwoordigt de huidige rij voor de binnenlus van de formule, de andere set contexten vertegenwoordigt de huidige rij voor de buitenlus van de formule. DAX voert automatisch waarden in tussen de twee lussen zodat u complexe aggregaties kunt maken.

Naar boven

Querycontext

Querycontext verwijst naar de deelverzameling met gegevens die impliciet voor een formule zijn opgehaald. Wanneer u een maateenheid of andere waardeveld in een cel in een draaitabel plaatst, worden de engine Power Pivot onderzocht, de rij- en kolomkoppen, Slicers en rapportfilters om te bepalen de context. Power Pivot maakt vervolgens de benodigde berekeningen om te vullen elke cel in de draaitabel. De set gegevens die zijn opgehaald is de querycontext voor elke cel.

Aangezien de context kan veranderen afhankelijk van waar u de formule plaatst, veranderen ook de resultaten van de formule naar gelang u de formule gebruikt in een draaitabel met veel groeperingen en filters of in een berekende kolom zonder filters en minimale context.

Stel dat u deze eenvoudige formule maakt die de waarden in de kolom winst van de table:=SUM('Sales'[Profit]) Sales opgeteld.

Als u deze formule in een berekende kolom in de tabel Sales gebruikt , de resultaten van de formule niet hetzelfde is voor de volledige tabel, omdat de querycontext voor de formule altijd de hele gegevensset van de tabel Sales is . Uw resultaten heeft winst voor alle regio's, alle producten, alle jaren, enzovoort.

U wilt echter meestal niet honderdmaal dezelfde resultaten zien, maar in plaats hiervan wilt u de winst ophalen voor een specifiek jaar, een specifiek land of specifieke regio, een specifiek product of een combinatie hiervan, en vervolgens een eindtotaal ophalen.

In een draaitabel is het gemakkelijk context wijzigen door het toevoegen of verwijderen van de kolomkoppen en rijkoppen en toevoegen of verwijderen van Slicers. U kunt een formule zoals hierboven, in een meting maken en kopieer deze naar een draaitabel. Wanneer u een kolom- of rijkoppen aan de draaitabel toevoegt, kunt u de querycontext waarin de eenheid wordt geëvalueerd wijzigen. Segmenteren en filteren bewerkingen ook invloed op de context. Dezelfde formule, die wordt gebruikt in een draaitabel wordt daarom geëvalueerd in de context van een andere query voor elke cel.

Naar boven

Filtercontext

U voegt filtercontext toe wanneer u door middel van argumenten in een formule filterbeperkingen opgeeft voor de set waarden die zijn toegestaan in een kolom of een tabel. De filtercontext wordt boven op andere contexten, zoals rij- of querycontext, toegepast.

Bijvoorbeeld de waarden voor elke cel op basis van de rij- en kolomkoppen, zoals wordt beschreven in de vorige sectie op querycontext worden berekend in een draaitabel. Echter binnen de eenheden of berekende kolommen die u aan de draaitabel toevoegt, kunt u opgeven of filterexpressies om te bepalen de waarden die worden gebruikt door de formule bevat. U kunt de filters van bepaalde kolommen ook selectief wissen.

Zie Filterfuncties (DAX) voor meer informatie over het maken van filters binnen formules.

Zie ALL, functie voor een voorbeeld over de manier waarop filters kunnen worden gewist om eindtotalen te creëren.

Zie ALLEXCEPT, functie voor voorbeelden over de manier waarop u filters binnen formules selectief kunt wissen en toepassen.

U dient daarom de definitie van metingen of formules die worden gebruikt in een draaitabel, zodat u zich bewust bent van filtercontext wanneer u de resultaten van formules interpreteert controleren.

Naar boven

Context in formules bepalen

Wanneer u een formule maakt, controleert Power Pivot voor Excel  eerst de algemene syntaxis en vervolgens de namen van de kolommen en de tabellen die u opgeeft ten overstaan van mogelijke kolommen en tabellen in de huidige context. Er wordt een fout weergegeven als Power Pivot niet de kolommen en tabellen kan vinden die in de formule zijn opgegeven.

De context wordt bepaald volgens de beschrijving in de voorgaande gedeelten, namelijk met de tabellen in de werkmap, relaties tussen de tabellen en eventuele filters die u hebt toegepast.

Als u bijvoorbeeld een aantal gegevens in een nieuwe tabel hebt geïmporteerd en geen filters hebt toegepast, maakt de hele set kolommen in de tabel deel uit van de huidige context. Als u meerdere tabellen hebt die met relaties zijn gekoppeld en u in een draaitabel werkt die is gefilterd door toevoeging van kolomkoppen en het gebruik van slicers, bevat de context gerelateerde tabellen en worden de gegevens gefilterd.

Context is een krachtig concept dat het oplossen van problemen ook kan bemoeilijken. Wij raden u aan te beginnen met eenvoudige formules en relaties om te zien hoe context werkt, en te beginnen met experimenteren met eenvoudige formules in draaitabellen. In het volgende gedeelte krijgt u ook een aantal voorbeelden van de manier waarop formules verschillende typen context gebruiken om op dynamische wijze resultaten te retourneren.

Voorbeelden van context in formules

  • De functie RELATED vouwt de context van de huidige rij uit om waarden in een gerelateerde kolom op te nemen. U kunt dan lookups uitvoeren. In het voorbeeld van dit onderwerp wordt de interactie van filter en rijcontext geïllustreerd.

  • U gebruikt de functie FILTER om de rijen op te geven die in de huidige context worden opgenomen. In de voorbeelden in dit onderwerp wordt tevens geïllustreerd hoe u filters insluit in andere functies die aggregaties uitvoeren.

  • Met de functie ALL wordt de context binnen een formule ingesteld. U kunt de functie gebruiken om filters te vervangen die als de resultaten van de querycontext worden toegepast.

  • U gebruikt de functie ALLEXCEPT om alle filters te verwijderen, behalve het filter dat u opgeeft. Beide onderwerpen bevatten voorbeelden waarin u stap voor stap wegwijs wordt gemaakt in het bouwen van formules en complexe contexten leert begrijpen.

  • U gebruikt de functies EARLIER en EARLIEST om lussen voor tabellen te maken door berekeningen uit te voeren, terwijl wordt verwezen naar een waarde vanuit een binnenlus. Als u bekend bent met het concept van herhalingen, en met binnen- en buitenlussen, zult u de kracht van de functies EARLIER en EARLIEST op prijs stellen. Als deze concepten nieuw voor u zijn, volgt u zorgvuldig stap voor stap het voorbeeld om te zien hoe binnen- en buitencontexten in berekeningen worden gebruikt.

Naar boven

Referentiële integriteit

In dit gedeelte wordt een aantal geavanceerde concepten besproken met betrekking tot ontbrekende waarden in Power Pivot-tabellen die via relaties zijn verbonden. Dit gedeelte kan van pas komen als u over werkmappen met meerdere tabellen en complexe formules beschikt en hulp nodig hebt om de resultaten te interpreteren.

Als relationele-gegevensconcepten nieuw voor u zijn, raden wij u aan eerst het inleidende onderwerp, Overzicht van relaties te lezen.

Referentiële integriteit en Power Pivot-relaties

In Power Pivot hoeft referentiële integriteit niet te worden afgedwongen tussen twee tabellen om een geldige relatie te kunnen definiëren. In plaats hiervan wordt een lege rij gemaakt aan de “ene” kant van elke een-op-veelrelatie. Deze rij wordt gebruikt om alle niet-overeenkomende rijen uit de gerelateerde tabel af te handelen. Deze gedraagt zich als een SQL outer join.

Als u in draaitabellen gegevens aan de een-zijde van de relatie groepeert, worden alle niet-overeenkomende gegevens aan de veel-zijde van de relatie samen gegroepeerd en in totalen opgenomen met een lege rijkop. De lege koptekst is ongeveer hetzelfde als het 'onbekende onderdeel'.

Het onbekende onderdeel

U bent waarschijnlijk bekend met het concept van het onbekende onderdeel als u met multidimensionale databasesystemen, zoals SQL Server Analysis Services, hebt gewerkt. Als u niet bekend bent met deze term wordt in het volgende voorbeeld uitgelegd wat het onbekende onderdeel is en hoe dit berekeningen kan beïnvloeden.

Stel dat u maakt een berekening waarin de som van verkoop per maand voor elke winkel, maar een kolom in de tabel Sales een waarde voor de naam van de store ontbreekt. Gezien het feit dat de tabellen voor het Opslaan en verkoop ingevoegd als formulier met de naam van de store, wat zou u verwachten veroorzaken, in de formule? Hoe moet de draaitabel groeperen of de verkoopcijfers die niet zijn gerelateerd aan een bestaand archief weer te geven?

Dit is een veelvoorkomend probleem in datawarehouses, waar grote tabellen met feitelijke gegevens logisch gerelateerd moeten zijn aan dimensietabellen die informatie bevatten over winkels, regio´s en andere kenmerken die worden gebruikt voor het categoriseren en berekenen van feiten. Om dit probleem op te lossen, worden eventuele nieuwe feiten die niet aan een bestaande entiteit zijn gerelateerd, tijdelijk aan het onbekende onderdeel toegewezen. Daarom worden niet-gerelateerde feiten in een draaitabel onder een lege koptekst gegroepeerd weergegeven.

De verwerking van lege waarden en van de lege rij

Lege waarden verschillen van de lege rijen die zijn toegevoegd vanwege het onbekende onderdeel. De lege waarde is een speciale waarde die gebruikt wordt om null-waarden, lege tekenreeksen en andere ontbrekende waarden voor te stellen. Zie Gegevenstypen in gegevensmodellen voor meer informatie over de lege waarde en andere DAX-gegevenstypen.

Naar boven

Opmerking : Disclaimer voor automatische vertaling: Dit artikel is vertaald door een computersysteem zonder menselijke tussenkomst. Microsoft biedt deze automatische vertalingen aan om niet-Engels sprekende gebruikers te helpen de inhoud over producten, services en technologieën van Microsoft te raadplegen. Omdat het artikel automatisch is vertaald, bevat het mogelijk fouten in grammatica, woordenschat en syntaxis.

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagents.

×