Referenser till fält, mått och variabler
Ett uttryck kan innehålla referenser till fält, variabler och mått.
I de flesta fall är uttryck aggregeringar, dvs. beräkningar som kan omfatta flera poster. Det innebär att alla fältreferenser i ett uttryck måste omslutas av en aggregeringsfunktion. Om ingen aggregeringsfunktion används, används funktionen Only().
När namnet på ett mått används inuti ett uttryck tolkas det som ett alias för måttet. Det innebär att du kan återanvända element som redan har definierats. Etiketter för originalmått och diagrammått kan användas på det här sättet. Diagrammåttet måste dock finnas i samma diagram. Du kan inte använda etiketter för mått i andra diagram.
Du kan definiera ett mått rekursivt. Måttet kan alltså innehålla en referens till sig självt. Det ska du dock bara göra i diagram med få rader. Prestanda försämras om diagrammet har många rader. Om flera hundra rader ingår slutar den rekursiva definitionen att fungera.
En variabel kan användas på två olika sätt, i en direkt referens eller i en dollarexpansion. Om du använder en direkt referens används variabelvärdet i beräkningen. Om du använder en dollarexpansion ersätts hela dollarexpansionen av variabelvärdet innan uttrycket parsas. Därför kan de två metoderna returnera olika resultat.
Hur namn tolkas
Ett namn inne i ett uttryck kan vara en referens till ett fält, en variabel, en funktion eller ett mått. Situationen avgör hur namnet tolkas.
Exempel:
Strängen XXX representerar ett fält, en variabel, en funktion eller ett mått. XXX kommer att tolkas som någon av dessa, beroende på hur du skapar uttrycket.
Uttryck | XXX tolkas som |
---|---|
XXX | mått, variabel eller fält |
$(XXX) | variabel |
Antal(XXX) | fält eller variabel |
XXX() | funktion |
Du ska inte använda samma namn för ett fält och en variabel (eller ett mått). Men om du gör det, och en oklarhet föreligger, används följande prioritetsordning:
-
Om namnet är placerat inuti en aggregeringsfunktion prioriteras ett fält före en variabel.
-
Om namnet är placerat utanför en aggregeringsfunktion prioriteras en måttetikett före ett variabelnamn, som i sin tur prioriteras före ett fältnamn.
Regler för uttryck
Följande regler gäller för diagramuttryck:
-
Om en fältreferens inte omsluts av en aggregeringsfunktion använder motorn funktionen Only().
-
Alla uttryck returnerar ett tal och/eller en sträng, beroende på vad som är aktuellt.
-
Logiska funktioner och operatorer returnerar 0 för False, -1 för True. Nummer-till-sträng-konverteringar och sträng-till-nummer-konverteringar är implicita.
-
Logiska operatorer och funktioner tolkar 0 som False och alla andra som True.
-
Uttryck som inte kan få en korrekt tolkning, exempelvis till följd av felaktiga parametrar eller funktioner, returnerar NULL.