Concept: Prism-expressietaal
Prism Analytics bevat een eigen expressietaal die is samengesteld uit functies en operatoren. U gebruikt de Prism-expressietaal om een
expressie
te maken, die u kunt gebruiken om nieuwe waarden te maken of bestaande waarden te filteren.Een expressie berekent of produceert een waarde door velden, constante waarden, operatoren en functies te combineren. Een expressie voert een waarde van een bepaald veldtype uit, zoals numerieke waarden of tekstwaarden. Eenvoudige expressies kunnen bestaan uit één constante waarde, de waarden van een bepaald veld of alleen een functie. U kunt operatoren gebruiken om twee of meer eenvoudige expressies samen te voegen tot een complexe expressie.
U kunt expressies in gegevenssets gebruiken:
- Berekende velden.Gebruik expressies om berekende velden te definiëren die van invloed zijn op de brongegevens. Een expressie van een berekend veld genereert de bijbehorende waarden op basis van een berekening of voorwaarde en retourneert een waarde voor elke invoerrij. Expressies voor berekende velden kunnen waarden uit andere velden, constanten, wiskundige operatoren, vergelijkingsoperatoren of ingebouwde rijfuncties bevatten.
- Filter fasen.Gebruik een expressie in een filterfase om het bereik van de brongegevens van een gegevensset te beperken.
De opbouwfunctie voor expressies helpt u bij het maken van expressies voor berekende velden in een gegevensset. Het toont de beschikbare velden in de gegevensset, plus de lijst met Prism-functies. Hiermee worden uw expressies gevalideerd op de juiste syntaxis, invoerveldtypen, enzovoort.
Functie-invoer en -uitvoer
Functies nemen een of meer invoerwaarden en retourneren een uitvoerwaarde. Invoerwaarden kunnen een letterlijke waarde zijn of de naam van een veld dat een waarde bevat. In beide gevallen verwacht de functie dat de invoerwaarde een bepaald veldtype is, zoals Tekst of Geheel getal. Voorbeeld: de functie CONCAT() combineert tekstinvoer en voert een nieuwe tekst uit.
In dit voorbeeld ziet u hoe u de functie CONCAT() gebruikt om de waarden in de velden
maand
, dag
en jaar
samen te voegen, gescheiden door de letterlijke slash:CONCAT([month],"/",[day],"/",[year])
De retourwaarde van een functie kan hetzelfde zijn als het invoertype of een geheel nieuw veldtype. Voorbeeld: de functie TO_DATE() neemt een tekst als invoer, maar voert een datumwaarde uit. Als een functie een tekst verwacht, maar een ander veldtype als invoer krijgt, retourneert de functie een fout.
Functies worden doorgaans geclassificeerd op basis van het veldtype en het doel waarvoor ze dienen. Voorbeeld: CONCAT() is een tekstfunctie en TO_DATE() is een conversiefunctie van het veldtype.
Functies nesten
Functies kunnen andere functies als argumenten gebruiken. Voorbeeld: u kunt de functie CONCAT gebruiken als argument voor de functie TO_DATE(). Het eindresultaat is een datumwaarde in de notatie 31-10-2014.
TO_DATE(CONCAT([month],"/",[day],"/",[year]),"MM/dd/yyyy")
De geneste functie moet het juiste veldtype retourneren. Omdat TO_DATE() tekstinvoer verwacht en CONCAT() een tekst retourneert, is het nesten geslaagd.
Verwijzen naar velden in de huidige gegevensset
U wordt aangeraden alle veldnamen tussen vierkante haken te plaatsen (
[]
). Voorbeeld:TO_INT([sales])
TO_INT([Sale Amount])
TO_INT([2013_data])
TO_INT([count])
Als een veldnaam ] (vierkante haakje sluiten) bevat, moet u het vierkante haakje sluiten door het te verdubbelen ]]. Stel dat u deze veldnaam hebt:
[Total Sales]
U plaatst de volledige veldnaam tussen vierkante haken en maakt een escapeteken voor het haakje sluiten dat deel uitmaakt van de werkelijke veldnaam:
[[Total Sales]]]
Waarden letterlijke tekst
Als u een letterlijke of werkelijke tekstwaarde wilt opgeven, plaatst u de waarde tussen dubbele aanhalingstekens (
"
). Voorbeeld: met deze expressie worden de waarden van een genderveld
geconverteerd naar de letterlijke waarden van man
, vrouw
of onbekend
:
CASE WHEN [gender]="M"THEN"male"WHEN [gender]="F"THEN"female"ELSE"unknown"END
Als u een letterlijke aanhalingsteken wilt escapen binnen een letterlijke waarde zelf, verdubbelt u het letterlijke aanhalingsteken. Voorbeeld:
CASE WHEN [height]="60""" THEN "5 feet" WHEN [height]="72""" THEN "6 feet" ELSE "other" END
De functie REGEX() is een speciaal geval. In de functie REGEX() worden tekstexpressies ook tussen aanhalingstekens geplaatst. Als een tekstexpressie letterlijke aanhalingstekens bevat, moet u het letterlijke aanhalingsteken verdubbelen. Voorbeeld:
REGEX([height], "\d\'(\d)+""")
Letterlijke datumwaarden
Als u wilt verwijzen naar een datumwaarde in een expressie in de fase Filter, moet u deze notatie (of een verkorte versie ervan) gebruiken zonder tussenliggende aanhalingstekens of andere interpunctie:
yyyy-MM-ddTHH:mm:ss:SSSZ
Voorbeeld:
[Order Date] BETWEEN 2016-06-01T00:00:00.000Z AND 2016-07-31T00:00:00.000Z
Als de filterexpressie een verkorte versie van de volledige notatie is, wijst Prism alle niet-opgenomen waarden toe met de waarde nul (0). Voorbeeld: deze expressie:
[Order Date] >= 2017-01-01
Is gelijk aan:
[Order Date] >= 2017-01-01T00:00:00.000Z
Als u in een expressie van een berekend veld naar een letterlijke datumwaarde wilt verwijzen, moet u de notatie van de datum- en tijdcomponenten opgeven met TO_DATE, waaraan een argument letterlijke tekst en een notatietekenreeks moeten worden doorgegeven. Voorbeeld:
CASE WHEN [Order Date]=TO_DATE("2013-01-01 00:00:59 PST","yyyy-MM-dd HH:mm:ss z") THEN "free shipping" ELSE "standard shipping" DONE
Letterlijke numerieke waarden
Voor letterlijke numerieke waarden kunt u het getal zelf opgeven zonder speciale escapetekens of opmaak. Voorbeeld:
CASE WHEN [is married]=1THEN "married" WHEN [is married]=0THEN "not_married" ELSE NULL END