Context in DAX-formules

Opmerking:  We willen u graag zo snel mogelijk de meest recente Help-inhoud in uw eigen taal bieden. Deze pagina is automatisch vertaald en kan grammaticale fouten of onnauwkeurigheden bevatten. Wij hopen dat deze inhoud nuttig voor u is. Kunt u ons onder aan deze pagina laten weten of de informatie nuttig voor u was? Hier is het Engelstalige artikel ter referentie.

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 deze sectie wordt gedefinieerd voor de verschillende soorten context: rij context, querycontext en filtercontext. Dit artikel wordt uitgelegd 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 context: rij context, querycontext en filtercontext.

Rijcontext kan worden beschouwd als "de huidige rij." Als u een berekende kolom hebt gemaakt, wordt de rijcontext bestaat uit de waarden in elke rij met afzonderlijke en waarden in kolommen die zijn gerelateerd aan de huidige rij. Er zijn ook enkele functies (EARLIER, functie en Functie EARLIEST) die een waarde krijgen van de huidige rij en gebruik vervolgens die waarde bij de bewerking over een hele tabel.

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

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

Naar boven

Rijcontext

Als u een formule in een berekende kolom maakt, bevat de rijcontext voor die formule de waarden uit alle kolommen in de huidige rij. Als de tabel is gerelateerd aan een andere tabel, bevat de inhoud ook alle waarden van die andere tabel die zijn gerelateerd 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 voor een gedetailleerd overzicht van deze formule, de EARLIER, functie.

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

Filtercontext wordt toegevoegd als u een filter beperkingen bij de set waarden die zijn toegestaan in een kolom of tabel, met behulp van de argumenten in een formule opgeeft. Filtercontext is van toepassing boven aan de andere contexten, zoals rijcontext of querycontext.

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 de Functie ALLvoor een voorbeeld van de manier waarop filters kunnen worden gewist om eindtotalen te creëren.

Zie de Functie ALLEXCEPTvoor voorbeelden van hoe u selectief kunt wissen en toepassen van filters binnen formules.

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 u eerder met relationele-gegevensconcepten, wordt u aangeraden eerst het inleidende onderwerp, Overzicht van relatieste 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 zijn anders dan de lege rijen die worden toegevoegd aan het onbekende onderdeel. De waarde leeg is een speciale waarde die wordt gebruikt om aan te geven null-waarden, lege tekenreeksen en andere ontbrekende waarden. Zie gegevenstypen in gegevensmodellenvoor meer informatie over de waarde leeg, evenals andere DAX-gegevenstypen.

Naar boven

Uw Office-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.

×