Context in DAX-formules

Met context kunt u dynamische analyses uitvoeren, waarbij de resultaten van een formule kunnen worden aangepast aan de huidige rij of celselectie, en ook gerelateerde gegevens. Contextafhankelijke en context gebruik van context zijn zeer belangrijk voor het maken van hoge formules, dynamische analyses en voor het oplossen van problemen in formules.

In deze sectie worden de verschillende typen context gedefinieerd: rij-context, querycontext en FilterContext. In dit onderwerp wordt uitgelegd hoe context wordt geëvalueerd voor formules in berekende kolommen en draaitabellen.

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

Context

Formules in Power Pivot kunnen worden beïnvloed door de filters in een draaitabel, op basis van relaties tussen tabellen, en op filters die in formules worden gebruikt. Context is wat het mogelijk maakt dynamische analyses uit te voeren. Contextafhankelijke context voor het opstellen van formules en voor het oplossen van problemen met formules.

Er zijn verschillende typen context: rij context, querycontext en FilterContext.

De context van de rij kan worden beschouwd als ' de huidige rij '. Als u een berekende kolom hebt gemaakt, bestaat de context van de rij uit de waarden in alle afzonderlijke rijen en waarden in kolommen die zijn gerelateerd aan de huidige rij. Er zijn ook enkele functies (eerder en vroeg) die een waarde van de huidige rij ophaalt en deze waarde gebruiken tijdens het uitvoeren van een bewerking via een gehele tabel.

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

Filter context is de reeks waarden die in elke kolom zijn toegestaan, op basis van filterbeperkingen die zijn toegepast op de rij of die zijn gedefinieerd met behulp van expressie filters in de formule.

Naar boven

Rijcontext

Als u een formule in een berekende kolom maakt, bevat de context van de rij 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.

U maakt bijvoorbeeld een berekende kolom, = [Vrachtkosten] + [BTW],

Hiermee voegt u twee kolommen uit dezelfde tabel samen. Deze formule doet zich voor als formules in een Excel-tabel, waarmee automatisch de waarden van dezelfde rij worden automatisch worden verwezen. Houd er rekening mee dat tabellen afwijken van bereik: u kunt geen verwijzingen maken naar een waarde uit de rij vóór de huidige rij door gebruik te maken van de bereik notatie en u kunt geen verwijzing maken naar een willekeurige waarde in een tabel of cel. U moet altijd werken met tabellen en kolommen.

De context van de rij volgt automatisch de relaties tussen tabellen om te bepalen welke rijen in gerelateerde tabellen aan de huidige rij worden gekoppeld.

In de volgende formule wordt bijvoorbeeld de functie related gebruikt om een BTW-waarde op te halen uit een gerelateerde tabel, op basis van het land waarnaar de bestelling is verzonden. De belastingwaarde wordt bepaald door de waarde voor regio in de huidige tabel te gebruiken, het gebied in de gerelateerde tabel op te zoeken en vervolgens het BTW-tarief voor dat gebied uit de gerelateerde tabel op te halen.

= [Freight] + GELIEERD (' regio ' [TaxRate])

Met deze formule wordt het BTW-tarief voor het huidige gebied opgehaald uit de tabel regio. U hoeft de sleutel voor het verbinden van de tabellen niet te kennen of te specificeren.

Context met meerdere rijen

Daarnaast bevat DAX functies die berekeningen voor een tabel herhalen. Deze functies kunnen meerdere huidige rijen en de huidige rij-contexten hebben. U kunt in programmeer termen formules maken die terugkeert naar een binnenste en buitenste lus.

Stel dat uw werkmap een tabel producten en een verkoop tabel bevat. Mogelijk wilt u de volledige verkoop tabel doorlopen, wat het volledige aantal transacties met betrekking tot meerdere producten betreft, en de grootste bestelde hoeveelheid voor elk product in één transactie vinden.

In Excel is voor deze berekening een reeks tussenliggende samenvattingen vereist die opnieuw kunnen worden gemaakt als de gegevens worden gewijzigd. Als u een Power User van Excel bent, is het mogelijk dat u matrixformules kunt samenstellen voor de taak. U kunt ook in een relationele database geneste subselecties schrijven.

Met DAX kunt u echter één formule maken die de juiste waarde retourneert en de resultaten automatisch worden bijgewerkt wanneer u gegevens aan de tabellen toevoegt.

= MAXX (FILTER (omzet; [ProdKey] = eerder ([ProdKey])), verkoop [OrderQty])

Zie voor een gedetailleerde beschrijving van deze formule de eerdereprocedure.

Kort gezegd, wordt met de functie voorgaande de rij-context opgeslagen van de bewerking die de huidige bewerking voorvalt. De functie slaat in geheugen twee sets context: een set context voor de huidige rij voor de binnenste lus van de formule en een andere set met context geeft de huidige rij voor de buitenste lus van de formule aan. DAX voegt automatisch waarden tussen de twee lussen in, zodat u complexe statistische functies kunt maken.

Naar boven

Query context

Query context verwijst naar de deelverzameling met gegevens die impliciet voor een formule worden opgehaald. Wanneer u een meting of een ander waardeveld neerzet in een cel in een draaitabel, worden de rij-en kolomkoppen, Slicers en rapportfilters door de Power Pivot engine onderzocht om de context te bepalen. Vervolgens Power Pivot de noodzakelijke berekeningen om elke cel in de draaitabel in te vullen. De gegevens die worden opgehaald, zijn de querycontext voor elke cel.

Aangezien de context van invloed kan zijn op de locatie van de formule, worden de resultaten van de formule ook gewijzigd afhankelijk van of u de formule in een draaitabel gebruikt met veel groepen en filters, of in een berekende kolom zonder filters en minimale context.

U maakt bijvoorbeeld deze eenvoudige formule waarmee de waarden in de kolom winst van de tabel Sales worden opgeteld: = som (' verkoop ' [winst]).

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

Meestal wilt u echter niet beide honderden keren zien, maar in plaats daarvan de winst voor een bepaald jaar, een bepaald land of een bepaalde regio of een bepaald product, of een bepaald product, en dan krijgt u het eindtotaal.

In een draaitabel kunt u heel eenvoudig context wijzigen door kolom-en rijkoppen toe te voegen of te verwijderen, en Slicers toe te voegen of te verwijderen. U kunt in een meting een formule maken zoals hierboven, en deze in een draaitabel neerzetten. Wanneer u kolom-of rijkoppen toevoegt aan de draaitabel, kunt u de querycontext wijzigen waarin de maateenheid wordt geëvalueerd. De werking van segmenteren en filteren is ook van invloed op context. Wanneer dezelfde formule in een draaitabel wordt gebruikt, wordt deze formule geëvalueerd in een andere querycontext voor elke cel.

Naar boven

Filtercontext

FilterContext wordt toegevoegd wanneer u filterbeperkingen opgeeft voor de set waarden die in een kolom of tabel zijn toegestaan met behulp van argumenten voor een formule. Filter context is van toepassing op de bovenkant van andere contexten, zoals de rij-context of querycontext.

Een draaitabel berekent bijvoorbeeld de waarden voor elke cel op basis van de rij-en kolomkoppen, zoals beschreven in het voorgaande gedeelte van de querycontext. Binnen de waarden of berekende kolommen die u toevoegt aan de draaitabel, kunt u echter ook filterexpressies opgeven om de waarden te bepalen die door de formule worden gebruikt. U kunt ook selectief de filters voor bepaalde kolommen wissen.

Zie filter functiesvoor meer informatie over het maken van filters binnen formules.

Zie Allesvoor een voorbeeld van de manier waarop filters kunnen worden gewist om eindtotalen te maken.

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

Daarom dient u de definitie van maateenheden of formules die in een draaitabel worden gebruikt te controleren, zodat u zich bewust bent van FilterContext wanneer u de resultaten van formules interpreteert.

Naar boven

Context in formules bepalen

Wanneer u een formule maakt, wordt eerst gecontroleerd op de syntaxis van Power Pivot voor Excel, waarna de namen worden gecontroleerd van de kolommen en tabellen die u aan de huidige context levert. Als Power Pivot de kolommen en tabellen die in de formule zijn opgegeven niet kunt vinden, krijgt u een foutmelding.

De context wordt bepaald volgens de beschrijving in de voorgaande gedeelten, met behulp van de beschikbare tabellen in de werkmap, relaties tussen de tabellen en eventuele filters die zijn toegepast.

Als u bijvoorbeeld zojuist sommige gegevens in een nieuwe tabel hebt geïmporteerd en geen filters hebt toegepast, is de volledige set met kolommen in de tabel onderdeel van de huidige context. Als u meerdere tabellen hebt die zijn gekoppeld aan relaties en u werkt in een draaitabel die is gefilterd door kolomkoppen toe te voegen en Slicers te gebruiken, bevat de context de gerelateerde tabellen en eventuele filters voor de gegevens.

Context is een krachtig concept waarmee formules ook moeilijk kunnen worden opgelost. We raden u aan te beginnen met eenvoudige formules en relaties om te zien hoe context werkt en vervolgens te experimenteren met eenvoudige formules in draaitabellen. De volgende sectie bevat ook enkele voorbeelden van de manier waarop formules verschillende typen context gebruiken om dynamische resultaten te retourneren.

Voorbeelden van context in formules

  • Met de functie related wordt de context van de huidige rij uitgebreid met waarden in een gerelateerde kolom. Hiermee kunt u zoekacties uitvoeren. In dit onderwerp wordt de interactie van filteren en de context van een rij getoond.

  • Met de functie FILTER kunt u de rijen opgeven die u wilt opnemen in de huidige context. In de voorbeelden in dit onderwerp wordt ook getoond hoe u filters kunt insluiten in andere functies waarmee samenvoegingen worden uitgevoerd.

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

  • Met de functie ALLEXCEPT kunt u alle filters verwijderen, met uitzondering van de filters die u opgeeft. Beide onderwerpen bevatten voorbeelden waarmee u formules kunt opbouwen en ingewikkelde contexten kunt begrijpen.

  • Met de functies voor vorige en VROEGste taken kunt u tabellen herhalen door berekeningen uit te voeren, terwijl u naar een waarde vanuit een binnenste lus verwijst. Als u vertrouwd bent met het concept van herhaling en met binnen-en buitenste lussen, moet u de kracht van de eerdere en VROEGste functies waarderen. Als u nog geen ervaring hebt met deze concepten, moet u de stappen in het voorbeeld zorgvuldig volgen om te zien hoe de binnenste en buitenste contexten in berekeningen worden gebruikt.

Naar boven

Referentiële integriteit

In deze sectie worden enkele geavanceerde concepten besproken die betrekking hebben op ontbrekende waarden in Power Pivot tabellen die zijn verbonden door relaties. Dit gedeelte kan nuttig voor u zijn als u werkmappen met meerdere tabellen en ingewikkelde formules hebt en u hulp nodig hebt bij het begrijpen van de resultaten.

Als u nog geen ervaring hebt met relationele gegevens concepten, raden we u aan eerst het inleidende onderwerp, overzicht van relatieste lezen.

Referentiële integriteit en Power Pivot relaties

Power Pivot vereisen geen referentiële integriteit tussen twee tabellen om een geldige relatie te definiëren. In plaats daarvan wordt een lege rij gemaakt aan de ' een '-einde van elke een-op-veel-relatie en wordt gebruikt om alle niet-overeenkomende rijen uit de gerelateerde tabel te verwerken. Het werkt effectief als een SQL outer join.

Als u in draaitabellen gegevens groepeert aan de ene kant van de relatie, worden niet-gerelateerde gegevens aan de veel-kant van de relatie gegroepeerd en worden de totalen met een lege rijkop opgenomen. De lege kop komt ruwweg overeen met het ' onbekende lid '.

Meer informatie over het onbekende lid

Het concept van het onbekende lid is waarschijnlijk bekend wanneer u hebt gewerkt met meerdimensionale databasesystemen, zoals SQL Server Analysis Services. Als de term nieuw voor u is, wordt in het volgende voorbeeld uitgelegd wat het onbekende lid is en welke invloed dit heeft op berekeningen.

U maakt een berekening waarbij de maandelijkse verkopen voor elke winkel worden opgeteld, maar er ontbreekt een waarde voor de naam van de winkel in een kolom in de tabel Sales . U hebt gezien dat de tabellen voor de winkel en de verkoop worden verbonden met de naam van het archief, wat verwacht u in de formule? Hoe moet de draaitabelgroep de verkoopcijfers weergeven die niet zijn gerelateerd aan een bestaande winkel?

Dit probleem treedt op in data-warehouses, waarbij grote tabellen met feitelijke gegevens logischerwijze moeten zijn gerelateerd aan dimensietabellen met informatie over winkels, regio's en andere kenmerken die worden gebruikt voor het categoriseren en berekenen van feiten. Als u het probleem wilt oplossen, worden de nieuwe feiten die niet zijn gerelateerd aan een bestaande entiteit, tijdelijk toegewezen aan het onbekende lid. Daarom worden niet-gerelateerde feiten gegroepeerd weergegeven in een draaitabel in een lege kop.

Behandeling van lege waarden versus de lege rij

Lege waarden zijn niet hetzelfde als de lege rijen die worden toegevoegd om het onbekende lid te beslaan. De lege waarde is een speciale waarde die wordt gebruikt voor het weergeven van Null-waarden, lege tekenreeksen en andere ontbrekende waarden. Zie gegevenstypen in gegevensmodellenvoor meer informatie over de lege waarde en andere Dax-gegevenstypen.

Naar boven

Meer hulp nodig?

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-ondersteuningsagenten.

×