Set-analyse
Als u een selectie maakt in een app, definieert u een subset van records in de gegevens. Aggregatiefuncties zoals Sum(), Max(), Min(), Avg() en Count() worden berekend op basis van deze subset.
Dit betekent dat uw selectie het bereik van de aggregatie definieert; deze definieert de set met records op basis waarvan berekeningen worden uitgevoerd.
Set-analyse biedt een manier om een bereik te definiëren dat verschilt van de set met records die wordt gedefinieerd door de huidige selectie. Dit nieuwe bereik kan ook als een alternatieve selectie worden beschouwd.
Dit kan nuttig zijn als u de huidige selectie wilt vergelijken met een specifieke waarde, bijvoorbeeld een waarde van vorig jaar of het wereldwijde marktaandeel.
Ingestelde uitdrukkingen
Set-uitdrukkingen kunnen binnen en buiten aggregatiefuncties worden gebruikt en worden tussen accolades geplaatst.
Voorbeeld: Binnenste set-uitdrukking
Sum( {$<Year={2021}>} Sales )
Voorbeeld: Buitenste set-uitdrukking
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
Zie Binnenste en buitenste set-uitdrukkingen voor meer informatie over binnenste en buitenste set-uitdrukkingen.
Een set-uitdrukking bestaat uit een combinatie van de volgende elementen:
-
Identifiers. Een set-id vertegenwoordigt een selectie die ergens anders is gedefinieerd. Deze vertegenwoordigt ook een specifieke set met records in de gegevens. Dit kan de huidige selectie, een selectie van een bladwijzer of een selectie van een alternatieve status zijn. Een simpele set-uitdrukking bestaat uit een enkele id, zoals een dollarteken, {$}, oftewel alle records in de huidige selectie.
Voorbeelden: $, 1, BookMark1, State2
Zie: Set-Id's
-
Operators. Een set-operator kan worden gebruikt om samenvoegingen, verschillen of snijpunten tussen verschillende set-id's te maken. Op deze manier kunt u een subset of een superset maken van de selecties die zijn gedefinieerd door de set-id's.
Voorbeelden: +, -, *, /
Zie: Set-operatoren
-
Modifiers. Een set-modificatie kan worden toegevoegd aan de set-id om de selectie te wijzigen. Een modicatie kan ook afzonderlijk worden gebruikt om de standaard-id te wijzigen. Een modificatie moet tussen punthaken <…> worden geplaatst.
Voorbeelden: <Year={2020}>, <Supplier={ACME}>
Zie: Set-modificaties
De elementen worden gecombineerd tot set-uitdrukkingen.
De bovenstaande set-uitdrukking is bijvoorbeeld gebaseerd op de aggregatie Sum(Sales).
De eerste operand retourneert verkopen voor het jaar 2021 van de huidige selectie. Dit wordt aangegeven door de set-id $ en de modificatie die een selectie van het jaar 2021 bevat. De tweede operand retourneert Sales voor Sweden en negeert de huidige selectie, die wordt aangegeven door de set-id 1.
Tot slot retourneert de uitdrukking een set met records die toebehoort aan een van de twee set-operanden, zoals wordt aangegeven door de set-operator +.
Voor een volledige beschrijving van de syntaxis, raadpleegt u Syntaxis voor set-uitdrukkingen.
Voorbeelden
Voorbeelden waarin de bovenstaande elementen van de set-uitdrukking worden gecombineerd, zijn beschikbaar in de volgende onderwerpen:
Raadpleeg Zelfstudie - Een set-uitdrukking maken als u andere uitdrukkingen wilt uitproberen.
Natuurlijke sets
Een set-uitdrukking vertegenwoordigt over het algemeen zowel een set met records in het gegevensmodel als een selectie die deze subset van gegevens definieert. In dit geval wordt de set een natuurlijke set genoemd.
Set-id's, met of zonder set-modificaties, vertegenwoordigen altijd natuurlijke sets.
Een set-uitdrukking die gebruikmaakt van set-operators vertegenwoordigt ook een subset van de records, maar deze kan over het algemeen nog steeds niet worden omschreven met behulp van selecties met veldwaarden. Een dergelijke uitdrukking wordt een niet-natuurlijke set genoemd.
De set die wordt verstrekt door {1-$} kan niet altijd worden gedefinieerd door een selectie. Dit is daarom geen natuurlijke set. Dit kunt u zien door de volgende gegevens te laden, deze aan een tabel toe te voegen en dan selecties te maken met behulp van filtervakken.
Load * Inline
[Dim1, Dim2, Number
A, X, 1
A, Y, 1
B, X, 1
B, Y, 1];
Als u selecties maakt voor Dim1 en Dim2 ziet u de weergave zoals in de onderstaande tabel.
De set-uitdrukking in de eerste meting gebruikt een natuurlijke set: deze komt overeen met de selectie die is gemaakt {$}.
De tweede meting is anders. Deze gebruikt {1-$}. Het is niet mogelijk om een selectie te maken die overeenkomt met deze set, daarom is dit een niet-natuurlijke set.
Dit onderscheid heeft een aantal gevolgen:
-
Set-modificaties kunnen alleen worden toegepast op set-id's. Ze kunnen niet worden toegepast op een willekeurige set-uitdrukking. Het is bijvoorbeeld niet mogelijk om de volgende set-uitdrukking te gebruiken:
{ (BM01 * BM02) <Field={x,y}> }
Hier geven de normale (ronde) haken aan dat de snijpunten tussen BM01 en BM02 geëvalueerd moeten worden voordat de set-modificatie wordt toegepast. De reden is dat er geen elementset aanwezig is die kan worden gewijzigd.
-
U kunt geen niet-natuurlijke set gebruiken in de elementfuncties van P() en E(). Deze functies retourneren een elementset, maar het is niet mogelijk om de elementset af te leiden van een niet-natuurlijke set.
-
Aan een meting die een niet-natuurlijke set gebruikt kan niet altijd de juiste dimensiewaarde worden toegewezen als het gegevensmodel veel tabellen bevat. In het volgende diagram worden enkele uitgezonderde verkoopcijfers bijvoorbeeld toegewezen aan de correcte Country, terwijl anderen NULL en Country bevatten.
Of de toewijzing correct wordt uitgevoerd is afhankelijk van het gegevensmodel. In dit geval kan het aantal niet worden toegewezen als het betrekking heeft op een land dat niet in de selectie is opgenomen.
Id | Beschrijving |
---|---|
1 | Vertegenwoordigt de volledige set van alle records in de toepassing, ongeacht eventueel uitgevoerde selecties. |
$ | Vertegenwoordigt de records van de huidige selectie. De set-uitdrukking {$} staat dus gelijk aan het niet aangeven van een set-uitdrukking. |
$1 | Vertegenwoordigt de vorige selectie. $2 vertegenwoordigt de vorige selectie op één na, enzovoort. |
$_1 | Vertegenwoordigt de volgende (voorwaartse) selectie. $_2 vertegenwoordigt de volgende selectie min één, enzovoort. |
BM01 | U kunt elke gewenste bladwijzer-id of bladwijzernaam gebruiken. |
MyAltState | U kunt verwijzen naar de selecties die zijn uitgevoerd in een alternatieve state met behulp van de naam van de state. |
Voorbeeld | Resultaat |
---|---|
sum ({1} Sales) | Retourneert de totale verkopen voor de app, waarbij selecties wel wordt genegeerd maar de dimensie niet. |
sum ({$} Sales) |
Retourneert de verkopen voor de huidige selectie, oftewel hetzelfde als sum(Sales). |
sum ({$1} Sales) |
Retourneert de verkopen voor de vorige selectie. |
sum ({BM01} Sales) |
Retourneert de verkopen voor de bladwijzer met de naam BM01. |
Voorbeeld | Resultaat |
---|---|
sum({$<OrderDate = DeliveryDate>} Sales) | Retourneert de verkopen voor de huidige selectie waarbij OrderDate = DeliveryDate. |
sum({1<Region = {US}>} Sales) |
Retourneert de verkopen voor de regio US, waarbij de huidige selectie buiten beschouwing wordt gelaten. |
sum({$<Region = >} Sales) |
Retourneert de verkopen voor de selectie, maar met de selectie in Region verwijderd. |
sum({<Region = >} Sales) |
Retourneert hetzelfde als in het voorbeeld hierboven. Wanneer de te modificeren set wordt weggelaten, wordt $ verondersteld. |
sum({$<Year={2000}, Region={“U*”}>} Sales) | Retourneert de verkopen voor de huidige selectie, maar met nieuwe selecties in zowel Year als Region. |