Gå till huvudinnehåll Gå till ytterligare innehåll

Inre och yttre uppsättningsuttryck

Uppsättningsuttryck används i aggregeringsfunktioner och inom en klammerparentes.

När du använder ett uppsättningsuttryck i en aggregeringsfunktion så kan det se ut så här:

Exempel: Inre uppsättningsuttryck

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

Använd ett uppsättningsuttryck utanför aggregeringsfunktionen om du har uttryck med flera aggregeringar och vill undvika att skriva samma uppsättningsuttryck i varje aggregeringsfunktion.

Om du använder ett yttre uppsättningsuttryck så måste det placeras i början av omfattningen.

Exempel: Yttre uppsättningsuttryck

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

Om du använder ett uppsättningsuttryck utanför aggregeringsfunktionen så kan du även tillämpa den på befintliga originalmått.

Exempel: Yttre uppsättningsuttryck som tillämpas på originalmåttet

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

Ett uppsättningsuttryck som används utanför aggregeringsfunktionerna påverkar hela uttrycket, med undantag för om det är inom parentes eftersom parenteserna då definierar omfattningen. I exemplet på val av lexikal omfattning nedan så tillämpas ett uppsättningsuttryck endast på aggregeringen innanför parenteserna.

Exempel: Val av lexikal omfattning

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

Regler

Lexikal omfattning

Uppsättningsuttrycket påverkar hela uttrycket, med undantag för om det är inom parentes. Om detta är fallet så definierar parenteserna den lexikala omfattningen.

Läge

Uppsättningsuttrycket måste placeras i början av den lexikala omfattningen.

Kontext

Kontext är det urval som är relevant för uttrycket. Traditionellt sett har kontexten alltid varit standardtillståndet för det aktuella urvalet. Om ett objekt är inställt på ett parallellt tillstånd så är kontexten det parallella tillståndet för det aktuella urvalet.

Du kan också definiera en kontext genom ett yttre uppsättningsuttryck.

Arv

Inre uppsättningsuttryck ges företräde framför yttre uppsättningsuttryck. Om det inre uppsättningsuttrycket innehåller en uppsättningsidentifierare så ersätter det kontexten. Annars kommer kontexten och uppsättningsuttrycket att slås ihop.

  • {$<SetExpression>} – åsidosätter det yttre uppsättningsuttrycket.

  • {<SetExpression>} – slås ihop med det yttre uppsättningsuttrycket

Tilldelning av elementuppsättningar

Tilldelningen av elemenuppsättningar fastställer hur de två urvalen slås ihop. Om ett vanligt likhetstecken används så har det inre uppsättningsuttrycket högre prioritet. I övrigt används den impicita operatorn för uppsättningen.

  • {<Field={value}>} – detta inre urval ersätter eventuella yttre urval i “Field”.

  • {<Field+={value}>} – detta inre urval slås ihop med det yttre urvalet i “Field” med hjälp av unionoperatorn.

  • {<Field*={value}>} – detta inre urval slås ihop med det yttre urvalet i “Field” med hjälp av intersektionsoperatorn.

Arv i flera steg

Arv kan ske i flera steg. Exempel:

  • Aktuellt urval → Sum(Amount)

    Aggregeringsfunktionen använder kontext, vilket här är aktuellt urval.

  • Aktuellt urval → {<Set1>} Sum(Amount)

    Set1 ärver från aktuellt urval och resultatet blir kontexten för aggregeringsfunktionen.

  • Aktuellt urval → {<Set1>} ({<Set2>} Sum(Amount))

    Set2 ärver från Set1, som i sin tur ärver från aktuellt urval och resultatet blir kontexten för aggregeringsfunktionen.

Funktionen Aggr()

Aggr()-funktionen skapar en nästlad aggregering som har två oberoende aggregeringar. I exempelet nedan beräknas en Count() för varje värde för Dim och den resulterande matrisen aggregeras med hjälp av Sum()-funktionen.

Exempel:  

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

Count() är den inre aggregeringen och Sum() är den yttre aggregeringen.

  • Den inre aggregeringen ärver inte någon kontext från den yttre aggregeringen.

  • Den inre aggregeringen ärver kontext från Aggr()-funktionen som kan innehålla ett uppsättningsuttryck.

  • Både Aggr()-funktionen och den yttre aggregeringsfunktionen ärver kontext från ett yttre uppsättningsuttryck.

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!