Ga naar hoofdinhoud Ga naar aanvullende inhoud

Binnenste en buitenste set-uitdrukkingen

Set-uitdrukkingen kunnen binnen en buiten aggregatiefuncties worden gebruikt en worden tussen accolades geplaatst.

Als u een set-uitdrukking binnen een aggregatiefunctie gebruikt, kan deze er zo uit komen te zien:

Voorbeeld: Binnenste set-uitdrukking

Sum( {$<Year={2021}>} Sales )

Gebruik een set-uitdrukking buiten de aggregatiefunctie als u uitdrukkingen met meerdere aggregaties hebt en niet dezelfde set-uitdrukking in elke aggregatiefunctie wilt schrijven.

Als u een buitenste set-uitdrukking gebruikt, moet deze aan het begin van het bereik worden geplaatst.

Voorbeeld: Buitenste set-uitdrukking

{<Year={2021}>} Sum(Sales) / Count(distinct Customer)

Als u een set-uitdrukking buiten de aggregatiefunctie gebruikt, kunt u deze ook toepassen op bestaande mastermetingen.

Voorbeeld: Buitenste set-uitdrukking toegepast op mastermeting

{<Year={2021}>} [Master Measure]

Een set-uitdrukking die buiten aggregatiefuncties wordt gebruikt, heeft invloed op de volledige uitdrukking, tenzij deze tussen haakjes is geplaatst. In dat geval definiëren de haakjes het bereik. In het onderstaande voorbeeld van een statische bereik wordt de set-uitdrukking alleen toegepast op de aggregatie binnen de haakjes.

Voorbeeld: Statisch bereik toepassen

( {<Year={2021}>} Sum(Amount) / Count(distinct Customer) ) – Avg(CustomerSales)

Regels

Statisch bereik

De set-uitdrukking is van invloed op de volledige uitdrukking, tenzij deze tussen haakjes is geplaatst. Indien dit het geval is, definiëren de haakjes het statische bereik.

Positie

De set-uitdrukking moet aan het begin van het statische bereik worden geplaatst.

Context

De context is de selectie die relevant is voor de uitdrukking. Normaal gesproken is de context altijd de standaardstate van de huidige selectie. Maar als een object op een alternatieve state is ingesteld, is de context de alternatieve state van de huidige selectie.

U kunt ook een context definiëren in de vorm van een buitenste set-uitdrukking.

Overname

Binnenste set-uitdrukkingen hebben voorrang op buitenste set-uitdrukkingen. Als de binnenste set-uitdrukking een set-id bevat, overschrijft deze de context die is gedefinieerd in de buitenste set-uitdrukking. Anders worden de binnenste en buitenste set-uitdrukkingen beide geëvalueerd.

Voorbeeld 1: Binnste set-uitdrukking met set-id

{<Year={2023}>} Sum(Sales) / Count({1} distinct OrderNumber)

In de bovenstaande uitdrukking bestaat de binnenste set-uitdrukking Count({1} distinct OrderNumber) uit de set-id {1}. Wanneer deze binnenste set-uitdrukking wordt geëvalueerd, wordt het bereik dat is gedefinieerd in de buitenste set-uitdrukking {<Year={2023}>} niet toegepast.

Voorbeeld 2: Binnenste set-uitdrukkingen met set-id's

{<Year={2023}>} Sum ({<Status={'Confirmed'}>} Sales_Stream1) + Sum ({<UpdatedStatus={'Confirmed'}>} Sales_Stream2)

In de bovenstaande uitdrukking bevatten de binnenste set-uitdrukkingen Sum ({<Status={'Confirmed'}>} Sales_Stream1) en Sum ({<UpdatedStatus={'Confirmed'}>} Sales_Stream2) geen set-id's. Daarom worden de buitenste set-uitdrukkingen {<Year={2023}>} en beide binnenste set-uitdrukkingen allemaal toegepast bij het evalueren van het resultaat.

Toewijzing van elementset

De toewijzing van de elementset bepaalt hoe de twee selecties worden samengevoegd. Als een normaal gelijkteken wordt gebruikt, heeft de selectie in de binnenste set-uitdrukking voorrang. Anders wordt de impliciete set-operator gebruikt.

  • {<Field={value}>} - deze binnenste selectie vervangt elke buitenste selectie in “Field”.

  • {<Field+={value}>} - deze binnenste selectie wordt samengevoegd met de buitenste selectie in “Field”, met behulp van de verenigingsoperator.

  • {<Field*={value}>} - deze binnenste selectie wordt samengevoegd met de buitenste selectie in “Field”, met behulp van de doorsnede-operator.

Overname in meerdere stappen

Overname kan in meerdere stappen worden uitgevoerd. Voorbeelden:

  • Huidige selectie → Sum(Amount)

    De aggregatiefunctie gebruikt de context, dat is hier de huidige selectie.

  • Huidige selectie → {<Set1>} Sum(Amount)

    Set1 neemt de huidige selectie over en het resultaat is de context voor de aggregatiefunctie.

  • Huidige selectie → {<Set1>} ({<Set2>} Sum(Amount))

    Set2 neemt Set1 over, die vervolgens de huidige selectie overneemt en het resultaat is de context voor de aggregatiefunctie.

Overname voor ketens van binnenste en buitenste set-uitdrukkingen

Er zijn bijkomende overwegingen voor overname bij het gebruik van meerdere set-uitdrukkingen in complexe ketens, vooral wanneer een buitenste set-uitdrukking gevolgd wordt door andere buitenste set-uitdrukkingen en/of een binnenste set-uitdrukking. Ga voor meer informatie naar Ketens van meervoudige buitenste en binnenste set-uitdrukkingen.

De functie Aggr()

De functie Aggr() maakt een geneste aggregatie die twee afzonderlijke aggregaties bevat. In het onderstaande voorbeeld wordt een Count() berekend voor elke waarde van Dim, en de resulterende matrix is geaggregeerd met behulp van de functie Sum().

Voorbeeld:  

Sum(Aggr(Count(X),Dim))

Count() is de binnenste aggregatie en Sum() is de buitenste aggregatie.

  • De binnenste aggregatie neemt geen context over van de buitenste aggregatie.

  • De binnenste aggregatie neemt de context van de functie Aggr() over, die mogelijk een set-uitdrukking bevat.

  • Zowel de functie Aggr() als de buitenste aggregatiefunctie nemen de context van een buitenste set-uitdrukking over.

Ketens van meervoudige buitenste en binnenste set-uitdrukkingen

Het is mogelijk om meer dan één buitenste set-uitdrukking te hebben. In dit voorbeeld hebben we twee buitenste setuitdrukkingen en één binnenste:

{<Year={2021}>} {<Region={"Europe"}>} Sum( {$<Product={"XI345"}>} Sales )

De set-uitdrukkingen worden van links naar rechts toegepast. Dit betekent dat als twee set-uitdrukkingen conflicterende sets gebruiken, de meest rechtse uitdrukking voorrang heeft.

Hoewel er geen limiet is aan het aantal buitenste set-uitdrukkingen die op deze manier aan elkaar geketend zijn, is het aantal binnenste set-uitdrukkingen beperkt tot één. Als er meer dan één binnenste set-uitdrukking naast elkaar staat, zal er geen fout optreden, maar zal alleen de meest rechtse gebruikt worden bij de evaluatie.

Uitdrukkingovername instellen

Als een aggregatie-uitdrukking meer dan één set-uitdrukking bevat als onderdeel van een keten, worden de set-uitdrukkingen één voor één van links naar rechts geëvalueerd. Het resultaat van elke set-uitdrukking is een groep sets, mogelijk één voor elke dimensie. De sets worden doorgegeven aan de volgende set-uitdrukking, die verdere wijzigingen kan aanbrengen voordat deze wordt doorgegeven aan de volgende set.

Zolang elke set-uitdrukking op verschillende dimensies werkt, zullen er geen conflicten tussen ze zijn, en zullen alle sets behouden blijven tot het einde van de keten (en toegepast worden tijdens het aggregeren). Er is één uitzondering op deze regel, die soms van toepassing is als een dimensie in een set-uitdrukking een lege set heeft opgeleverd. Zie het volgende voor meer informatie:

Lege selectiesets

Wanneer een dimensie in een set-uitdrukking wordt geëvalueerd, is het mogelijk dat de set geen gegevens bevat. Dit wordt een lege set genoemd. Lege sets kunnen in veel scenario's voorkomen, zoals:

  • Onjuiste uitdrukkingdefinitie. Als u bijvoorbeeld een waarde 2025 probeert te zoeken met een setuitdrukking {<OrderYear={‘2025’}>}, wordt de uitdrukking geschreven als {<OrderYear={‘0025’}>}.

  • Tijdens de analyse wordt een selectie gemaakt in een andere dimensie dan die waarnaar in de uitdrukking wordt verwezen en deze selectie resulteert in geen beschikbare gegevens voor de ingestelde dimensie van de uitdrukking. Een gebruiker maakt bijvoorbeeld een selectie voor Region='Europe' en een set uitdrukkingsfilters voor {<ProductCategory={‘Shirts’}>} Sum (Sales). Als er geen overhemden in Europa worden verkocht, bevat de uitdrukking een lege set.

  • De lege set wordt expliciet gedefinieerd in de uitdrukking. Dit is niet gebruikelijk of nuttig, maar technisch mogelijk. Bijvoorbeeld: {<Year={}>}

Impliciete selectieset wissen

Als het resultaat na het toepassen van een set-uitdrukking de lege set is voor een van de dimensies (zie Lege selectiesets) en er wordt hierna nog een set-uitdrukking toegepast, dan wordt de selectie voor die dimensie gewist (teruggezet naar de volledige set) vlak voordat die volgende set-uitdrukking wordt toegepast. Een gewiste selectie betekent dat alle waarden worden opgenomen. Dit wissen gebeurt alleen als er nog één of meer buitenste set-uitdrukkingen worden toegepast na de set-uitdrukking waarbij de lege set wordt geproduceerd.

Hier volgt een voorbeeld van wanneer een gewiste selectieset zal plaatsvinden:

{<Year={}>} {<Region={"Europe"}>} Sum( Sales )

Year={} zal de lege set voor de dimensie Year maken. Dit betekent dat de selectieset voor Year wordt gewist wanneer de set wordt doorgegeven aan de volgende set-uitdrukking, die Region={Europe} bevat. Het wissen van de selectie gebeurt alleen voor een enkele dimensie. Sets in andere dimensies, inclusief sets binnen dezelfde set-uitdrukking, worden nog steeds zonder wijziging doorgegeven.

Hier volgt een voorbeeld van een gewiste selectieset:

{<Year={}, Product={"XI345"}>} {<Region={"Europe"}>} Sum(Sales)

In het bovenstaande voorbeeld gebeurt het volgende:

  • De selectiesets Product={"XI345"} en Region={"Europe"} worden toegepast.

  • Year={} wordt niet toegepast. Dit komt doordat die set gewist wordt wanneer de laatste set-uitdrukking—{<Region={"Europe"}>}—wordt toegepast.

Door een component van de set-uitdrukking naar de laatste buitenste set-uitdrukking te verplaatsen, wordt voorkomen dat er impliciet gewist wordt. Neem dit voorbeeld:

{<Product={"XI345"}>} {<Year={}, Region={"Europe"}>} Sum(Sales)

Hier hebben we de uitdrukking Year verplaatst naar de laatste set-uitdrukking in de keten. Hierdoor wordt het impliciet wissen voorkomen en wordt de lege set voor de dimensie Year daadwerkelijk gebruikt voor de Sum-aggregatie.

In elk geval kan ongewenst gedrag optreden wanneer selectiesets gewist worden. Om de analyse-ervaring te verbeteren en het schrijven van ketens van set-uitdrukkingen te vergemakkelijken, kunt u de vlag voor behoud van lege set gebruiken. Ga voor meer informatie naar Vlag voor behoud van lege set (buitenste set-uitdrukkingen).

Vlag voor behoud van lege set (buitenste set-uitdrukkingen)

Gebruik het symbool & (de vlag voor behoud van lege set) om het evaluatiemodel voor buitenste set-uitdrukkingen te vereenvoudigen. Bijvoorbeeld:

{& <Year={}, Product={XI345}>} {<Region={Europe}>} Sum( Sales )

In dit voorbeeld definieert Year={} een lege selectieset voor Year. Zonder het symbool & zou de uitdrukking {<Region={Europe}>} ervoor zorgen dat de lege selectieset Year gewist wordt, waardoor alle gegevens in de aggregatieberekening worden gebruikt. Het symbool & dwingt de aggregatie om de lege selectieset Year te respecteren, wat resulteert in een begrijpelijkere uitvoer.

Voor volledige details over de vlag voor het behouden van lege sets, zie Vlag voor behoud van lege set.

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een tikfout, een ontbrekende stap of een technische fout – laat het ons weten!