Set-analys
När du gör ett urval i en app definierar du en delmängd av posterna i data. Aggregeringsfunktioner, som Sum(), Max(), Min(), Avg() och Count() beräknas baserat på den här delmängden.
Ditt urval definierar med andra ord aggregeringens omfattning; den definierar uppsättningen med poster som beräkningarna görs på.
Set-analys gör det möjligt att definiera en omfattning som är olik den uppsättning med poster som definieras av det aktuella urvalet. Den här nya omfattningen kan även betraktas som ett alternativt urval.
Det här kan vara användbart om du vill jämföra det aktuella urvalet med ett visst värde, till exempel förra årets värde eller den globala marknadsandelen.
Set-uttryck
Uppsättningsuttryck kan användas i aggregeringsfunktioner och inom klammerparenteser.
Exempel: Inre uppsättningsuttryck
Sum( {$<Year={2021}>} Sales )
Exempel: Yttre uppsättningsuttryck
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
Mer information om inre och yttre uppsättningsuttryck finns i Inre och yttre uppsättningsuttryck.
Ett set-uttryck består av en kombination av följande element:
-
Identifierare. En set-identifierare motsvarar ett urval, som definieras på en annan plats. Den motsvarar även en specifik uppsättning med poster i data. Det kan vara det aktuella urvalet, ett urval från ett bokmärke eller ett urval från ett parallellt tillstånd. Ett enkelt set-uttryck består av en enda identifierare, som t.ex. dollartecknet {$}, vilket innebär alla poster i aktuellt urval.
Exempel: $, 1, BookMark1, State2
-
Operatorer. En set-operator kan användas till att skapa unioner, differenser eller intersektioner mellan set-identifierare. På det sättet kan du skapa en överordnad uppsättning av urvalen som definierats av set-identifierarna.
Exempel: +, -, *, /
Se: Set-operatorer
-
Modifierare En set-modifierare kan läggas till i set-identifieraren för att ändra dess urval. En modifierare kan även användas på egen hand och kommer sedan att modifiera standardidentifieraren. En modifierare måste omslutas av vinkelparenteser <…>.
Exempel: <Year={2020}>, <Supplier={ACME}>
Se: Set-modifierare
Elementen kombineras för att skapa set-uttryck.
Set-uttrycket ovan är till exempel byggt från aggregeringen Sum(Sales).
Den första operanden returnerar försäljning för året 2021 för det aktuella urvalet, vilket indikeras med set-identifieraren $ och modifieraren som innehåller urvalet för år 2021. Den andra operanden returnerar Sales för Sweden och ignorerar det aktuella urvalet, vilket indikeras med set-identifieraren 1.
Slutligen returnerar uttrycket en uppsättning som består av posterna som tillhör någon av de två set-operanderna, enligt indikation från set-operatorn +.
För en fullständig syntaxbeskrivning, se Syntax för set-uttryck.
Exempel
Exempel som kombinerar set-uttryckselementen ovan är tillgängliga i följande ämnen:
Om du vill prova några andra uttryck kan du läsa Introduktion – Skapa ett set-uttryck.
Naturliga uppsättningar
Vanligen motsvarar ett set-uttryck både en uppsättning med poster i datamodellen och ett urval som definierar den här delmängden data. I detta fall kallas uppsättningen en naturlig uppsättning.
Set-identifierare, med eller utan set-modifierare, representerar alltid naturliga uppsättningar.
Ett set-uttryck som använder set-operatorer representerar dock även en delmängd av posterna, men kan generellt ändå inte beskrivas som ett urval med fältvärden. Ett sådant uttryck är en icke-naturlig uppsättning.
Till exempel kan uppsättningen som ges av {1-$} inte alltid definieras av ett urval. Det innebär att det inte är en naturlig uppsättning. Det går att visa genom att ladda följande data, lägga till dem i en tabell och sedan göra urvalen med filterpaneler.
Load * Inline
[Dim1, Dim2, Number
A, X, 1
A, Y, 1
B, X, 1
B, Y, 1];
Genom att göra urval för Dim1 och Dim2 får du vyn som visas i följande tabell.
Set-uttrycket i den första åtgärden använder en naturlig uppsättning: det motsvarar urvalet som görs {$}.
Den andra åtgärden är annorlunda. Den använder {1-$}. Det går inte att göra ett urval som motsvarar den här uppsättningen, så det är en icke-naturlig uppsättning.
Den här distinktionen har ett flertal konsekvenser:
-
Set-modifierare går endast att tillämpa på set-identifierare. De går inte att tillämpa på ett godtyckligt set-uttryck. Till exempel är det inte möjligt att använda ett set-uttryck som:
{ (BM01 * BM02) <Field={x,y}> }
Här betyder de vanliga (runda) parenteserna att intersektionen mellan BM01 och BM02 ska utvärderas innan set-modifieraren tillämpas. Skälet är att det inte finns någon uppsättning av element som kan modifieras.
-
Du kan inte använda icke-naturliga uppsättningar i P()- och E()-elementfunktioner. Dessa funktioner returnerar en uppsättning av element, men det går inte att härleda en uppsättning från en icke-naturlig uppsättning.
-
Ett mått som använder en icke-naturlig uppsättning kan inte alltid attribueras till rätt dimensionsvärde om datamodellen har flera tabeller. I följande diagram attribueras vissa uteslutna försäljningssiffror till rätt Country, medan andra har NULL som Country.
Huruvida tilldelningen är korrekt eller inte beror på datamodellen. I det här fallet kan talet inte tilldelas om det berör ett land som utesluts av urvalet.
Identifierare | Beskrivning |
---|---|
1 | Representerar hela uppsättningen av alla poster i applikationen, oavsett vilka urval som har gjorts. |
$ | Representerar posterna i det aktuella urvalet. Set-uttrycket {$} är följaktligen motsvarigheten till att inte ange ett set-uttryck. |
$1 | Representerar tidigare urval. $2 representerar det näst föregående urvalet och så vidare. |
$_1 | Representerar nästa urval (framåt). $_2 representerar urvalet efter det nästföljande och så vidare. |
BM01 | Du kan använda vilket bokmärkes-ID eller bokmärkesnamn du vill. |
MyAltState | Du kan hänvisa till de urval som görs i ett parallellt tillstånd med hjälp av tillståndets namn. |
Exempel | Resultat |
---|---|
sum ({1} Sales) | Returnerar den totala försäljningen för appen, oavsett urval men inte oavsett dimensionen. |
sum ({$} Sales) |
Returnerar försäljning för det aktuella urvalet, alltså detsamma som sum(Sales). |
sum ({$1} Sales) |
Returnerar försäljning för föregående urval. |
sum ({BM01} Sales) |
Returnerar försäljningen för bokmärket med namnetBM01. |
Exempel | Resultat |
---|---|
sum({$<OrderDate = DeliveryDate>} Sales) | Returnerar försäljning för aktuellt urval där OrderDate = DeliveryDate. |
sum({1<Region = {US}>} Sales) |
Returnerar försäljningen för regionen USA och ignorerar det aktuella urvalet. |
sum({$<Region = >} Sales) |
Returnerar försäljningen för urvalet, men med urvalet i Region borttaget. |
sum({<Region = >} Sales) |
Returnerar samma resultat som exemplet ovanför. När det set som ska modifieras är utelämnat antas $. |
sum({$<Year={2000}, Region={“U*”}>} Sales) | Returnerar försäljning för det aktuella urvalet, men med nya urval både i Year och Region. |