Expression processor

Deze processor is een veelzijdige processor die een uitdrukking beschouwt als een argument en het resultaat ervan in een veld plaatst.

De uitdrukking kan samengesteld zijn uit:

  • identifiers,
  • literals (cijfers, tekstuele literals, booleans en trefwoorden),

  • operators,
  • functions.

Voorvereiste

De Expression-processor is zinvoller in evaluatiemodus (wat betekent "het resultaat van de uitdrukking berekenen en weergeven"), die wordt geactiveerd door de uitdrukking te beginnen met een gelijkheidsteken ("="). Zo niet zal de processor de uitdrukking niet evalueren en deze als dusdanig gewoon in het outputveld plaatsen.

Het gelijkheidsteken ("=") in het begin wordt in alle volgende voorbeelden weggelaten.

De processor instellen

Om de parameters van de Expression processor in te stellen, dient u de aanwijzingen in onderstaande tabel te volgen.

Label

Omschrijving

Verplicht

Uitdrukking

Uitdrukkingspatroon

ja

Outputveld

Veld waarop de uitdrukking zal worden toegepast. Dit kan een bestaand veld zijn dat gekozen wordt uit de lijst of een nieuw veld dat hiervoor is aangemaakt (in dat geval, kies Invoer tekst uit de lijst en noteer de naam van het nieuwe veld in de tekstruimte eronder).

ja

Een uitdrukking opbouwen

Een uitdrukking is een instructie voor de processor om een operatie uit te voeren en de waarde ervan in een nieuwe of bestaande kolom van de dataset weer te geven.

Deze uitdrukkingen zien eruit als wat we "formules" noemen in een spreadsheet software. Het grootste verschil is dat de processor in plaats van naar elkaar verwijzende cellen (bijv.: A1 + B2`), operaties kan uitvoeren met de waarden van welbepaalde kolommen (bijv.: column_1 + column_2).

Net zoals in een formule kunnen uitdrukkingen elke combinatie van verschillende elementen zijn. De Expression-processor ondersteunt de volgende elementen:

  • identifiers (bijv.: een veldnaam zoals column_1 of een geforceerde veldnaam, zoals $column_1),

  • literals:

    • cijfers (bijv.: 2 of 3.6),

    • tekstuele literals (bijv. "hallo" of 'wereld'),

    • booleans (bijv.: 'waar' of 'onwaar'),

    • trefwoorden (bijv.: een wiskundige constante, zoals pi en e),

  • operatoren (bijv.: +, OR, not, <=),

  • functies (bijv.: now(), sin(number), startswith("hello', 'he')).

Identifiers

Het belangrijkste kenmerk van de Expression-processor is het vermogen om operaties uit te voeren op de kolommen van een record. De technische identifier (of veldnaam) van een kolom kan in een uitdrukking worden gebruikt om toegang te hebben tot de waarde van dit veld voor het huidige record. Deze technische identifier kan teruggevonden worden in de veldopties, als de Naam van dit veld.

Voorbeelden:

  • column_1 om toegang te hebben tot een veld met de naam column_1 (en misschien gelabeld als "Column 1")

  • name_en om toegang te hebben tot een veld met de naam name_en (en misschien gelabeld als "Name (EN)")

Belangrijk

In sommige gevallen kan de veldnaam dubbelzinnig zijn. Bijvoorbeeld wanneer hij een cijfer is, wanneer hij begint met een cijfer of wanneer hij een voorbehouden trefwoord is, zoals "pi" (de wiskundige constante het cijfer van Euler).

Om de Expression-processor te dwingen een identifier te evalueren als een veldnaam, is het mogelijk om een prefix te plaatsen voor elke identifier met het dollarteken ("$"). Het dollarteken kan voor elke veldnaam worden gebruikt, maar is enkel verplicht voor dubbelzinnige veldnamen.

Voorbeelden:

  • $column_1 om toegang te hebben tot een veld met de naam column_1 (en misschien gelabeld als "Column 1")

  • $name_en om toegang te hebben tot een veld met de naam name_en (en misschien gelabeld als "Name (EN)")

  • $20_to_25_yo om toegang te hebben tot een veldnaam met de naam 20_to_25_yo (en misschien gelabeld als "20 tot 25 jaar oud")

  • $33 om toegang te hebben tot een veld met de naam 33

  • $pi om toegang te hebben tot een veld met de naam pi

In alle volgende voorbeelden kan elk cijfer of elke tekstuele literal vervangen worden door een veldnaam waarin waarden van hetzelfde type staan. De Expression-processor extraheert de waarde voor de gespecificeerde kolom en voert daarmee de vereiste operatie uit.

Er kunnen tezelfdertijd verschillende velden (of zelfs hetzelfde veld verschillende keren) gebruikt worden in een uitdrukking.

Literals

Literals zoals cijfers, tekstuele literals (met enkele of dubbele aanhalingstekens), booleans en trefwoorden kunnen in elke uitdrukking gebruikt worden.

Voorbeelden:

  • 3
  • 2.5
  • "Hello" of 'Hello'

  • 'Een langere zin'

  • 'true' of 'false'

  • pi, PI of Pi

  • e of E

Operatoren

Operatoren zijn symbolen die zich over het algemeen gedragen als functies maar gebruikt worden met een natuurlijkere syntax.

De Expression-processor ondersteunt 3 soorten operatoren, afhankelijk van het aantal parameters er rond:

  • unaire operatoren kunnen gebruikt worden als prefixen of suffixen om de waarde van 1 uitdrukking te wijzigen,

  • binaire operatoren kunnen rekenkundige operatoren zijn om een berekening tussen 2 uitdrukkingen uit te voeren of boolean operatoren om het resultaat van 2 uitdrukkingen te vergelijken,

  • de ternaire operatoren om een voorwaardelijke uitdrukking om te vormen tot ofwel 1 van 2 mogelijke resultaten.

Opmerking

De bewerkingsvolgorde voor operatoren is als volgt: factorieel, exponentieel, teken, euclidische deling, functie-evaluatie, vermenigvuldiging/deling, optellen/aftrekken, samenvoeging, niet, vergelijking, en, of, ternaire operator, ternaire operator zonder iets anders.

Unaire operatoren

Operator

Omschrijving

Voorbeeld

-

Prefix dat de volgende waarde ontkent

- 4, - [uitdrukking]

not, ! (not)

Boolean operator die de volgende voorwaarde omkeert

  • not('true') of !('true') is false

  • not(4 > 5) is true
  • !(5 <= 10) is false

! (factorieel)

Suffix dat de factorieel van een uitdrukking berekent

3! geeft 1*2*3

Binaire operatoren

Operator

Omschrijving

Voorbeeld

+, -, *, /, %, //, ^

Rekenkundige operatoren: optellen, aftrekken, vermenigvuldigen, delen, modulo, euclidische deling, kracht

  • 2 + 3 geeft 5

  • 5 - 8 geeft -3

  • 9 * 3 geeft 27

  • 15 / 6 geeft 2.5

  • 15 % 6 geeft 3

  • 15 // 6 geeft 2

  • 2 ^ 3 geeft 8

  • column_1 + column2

en, &&, or, || (geeft een boolean)

Boolean operatoren: en, of

  • 'true' en 'true' is true

  • 'true' && 'false' is false
  • 'true' of 'false' is true

  • 'false' || 'false' is false
>, <, >=, <=, ==, !=

Vergelijkingsoperatoren: groter dan, kleiner dan, groter dan of gelijk aan, kleiner dan of gelijk aan, gelijk aan, verschillend van geeft een boolean

  • 3 < 4 is true
  • 5 >= 10 is false
&

Operator voor het samenvoegen van strings

'Hallo' & ' wereld' geeft 'Hallo wereld'

Ternaire operator

De uitdrukking [voorwaarde] ? [resultaat indien waar] : [resultaat indien onwaar] wordt de ternaire operator genoemd en laat toe om verschillende resultaten op te leveren afhankelijk van een voorwaarde.

Opmerking

Een ternaire operator kan gelezen worden als "wanneer [voorwaarde] dan [resultaat indien waar] anders [resultaat indien onwaar]".

Voorbeelden:

  • 'true' ? 'hallo' : 'vaarwel' geeft 'hallo'

  • 'false' ? 'hallo' : 'vaarwel' geeft 'vaarwel

  • 4 > 3 ? '4 is groter' : '3 is groter' geeft '4 is groter'

  • 10 <= 9 ? '9 is groter' : '10 is groter' geeft '10 is groter'

Het laatste deel van de ternaire operator is optioneel, wat betekent dat de volgende uitdrukkingen geldig zijn:

  • 'true' ? 'hallo' geeft 'hallo'

  • 'false' ? 'hallo' geeft een leeg resultaat

Functies

Functies worden gebruikt om meer geavanceerde operaties in een uitdrukking uit te voeren. Ze kunnen 0 of meerdere parameters bevatten en transformaties erop uitvoeren, zoals:

  • tekstbehandeling,

  • wiskundige functies,

  • datum- en tijdbehandeling.

Tekstbehandeling

Boolean functies

Functie

Omschrijving

Voorbeeld

isalpha([text])

Waar indien tekst enkel letters bevat

 
isnumeric([text])

Waar indien tekst enkel cijfers bevat

 
isalnum([text])

Waar indien tekst enkel letters of cijfers bevat

 
isdecimal([text])

Waar indien tekst een geldig decimaal cijfer is

 
isdigit([text])

Waar indien tekst een enkel karakter is

 
islower([text])

Waar indien tekst in kleine letters staat

 
isupper([text])

Waar indien tekst in hoofdletters staat

 
empty([text])

Waar indien tekst leeg is

 
contains([text],[text]), startswith([text],[text]), endswith([text],[text])

Waar indien tekst (1ste argument) begint met tekst, eindigt met tekst of tekst bevat (2de argument)

  • contains("hallo", "l") geeft True

  • startswith("hallo', 'he') geeft True

  • endswith("hallo', 'he') geeft False

Verwerkingsfuncties

Functie

Omschrijving

Voorbeeld

length([text])

Geeft de lengte van de tekst

length('hello') geeft 5

lower([text]), upper([text])

Zet tekst om naar kleine letters, naar hoofdletters

 
capitalize([text]), capitalize_all([text])

Zet de eerste letter van de tekst, de eerste letter van elk woord om naar een hoofdletter

 
  • ljust([text],[numeric],[text])
  • rjust([text],[numeric],[text])
  • center([text],[numeric],[text])

Een tekst links, rechts en centraal motiveren (1ste argument) tot hij [numeric] karakters met een andere tekst bereikt (3de argument)

  • ljust("4400", 5, "0") geeft "44000"

  • rjust("4400", 5, "0") geeft "04400"

  • center("4400", 6,"0") geeft "044000"

normalize([text])

Converteert een tekst naar zijn ascii-weergave

normalize("你好") geeft "ni hao"

substring([text],[numeric],[numeric])

Extraheer een substring van tekst te beginnen met aangegeven index in 2de argument en met een lengte die aangegeven staat in 3de argument (optioneel).

substring('hallo', 1, 3) geeft "all"

Wiskundige functies

Functie

Omschrijving

Voorbeeld

abs([numeric])

Absolute waarde

abs(-4) geeft 4

sqrt([numeric])

Vierkantswortel

 
floor([numeric]), ceil([numeric])

Bodem- en plafondfuncties

  • floor(4.6) geeft 4

  • ceil(3.3) geeft 4

max([numeric],[numeric]), min([numeric],[numeric])

Maximale en minimale functies

 
round([numeric])

Geeft het dichtstbijzijnde geheel getal

  • round(4.6) geeft 5

  • round(3.3) geeft 4

random([numeric])

Willekeurig weergeven van cijfers (tussen 0 en [numeric])

random(10) geeft bijvoorbeeld 7.27846540481

pow([numeric], [numeric])

Krachtfunctie

pow(2, 3) geeft 8

exp([numeric]), log([numeric]), log10([numeric])

Exponentieel, logaritme en 10 logaritmische basisfuncties

exp(1) geeft E

radians([numeric])

Converteert een hoek van graden naar radialen

radians(180) geeft PI

degrees([numeric])

Converteert een hoek van radialen naar graden

degrees(PI) geeft 180

cos([numeric]), cosh([numeric]), sin([numeric]), sinh([numeric]), tan([numeric]), tanh([numeric])

Cosinus, hyperbolische cosinus, sinus, hyperbolische sinus, tangens, hyperbolische tangens (in radialen)

sin(PI) geeft 0

acos([numeric]), acosh([numeric]), asin([numeric]), asinh([numeric]), atan([numeric]), atanh([numeric])

Omgekeerde cosinus, omgekeerde hyperbolische cosinus, omgekeerde sinus, omgekeerde hyperbolische sinus, omgekeerde tangens, omgekeerde hyperbolische tangens (in radialen)

acos(0) geeft PI/2

Datum- en tijdbehandeling

Functie

Omschrijving

Voorbeeld

year([datetime]), quarter([datetime]), month([datetime]), day([datetime]), dayofweek([datetime]), hour([datetime]), minute([datetime]), second([datetime])

Extraheer het jaar, kwartaal, maand, dag, dag van de week, uren, minuten, seconden uit een datetime

  • year("2014-06-07") geeft 2014

  • hour("2014-06-07 17:00") geeft 17

  • hour("2014-06-07 17:00", "Europa/Parijs") geeft 19

add_years([datetime],[numeric]), add_months([datetime],[numeric]), add_days([datetime],[numeric]), add_hours([datetime],[numeric]), add_minutes([datetime],[numeric]), add_seconds([datetime],[numeric])

Voeg jaren, maanden, dagen, uren, minuten, seconden toe aan een datetime

add_months("2014-11-14", "3") geeft 2015-02-14

fromtimestamp([numeric])

Converteert een tijdzegel naar een datetime

 
quartertodaterange([numeric])

Converteert een kwartaal (bijv. "2014Q2", "2019q1") naar een datumbereik

quartertodaterange("2014Q2") geeft "2014-04-01 / 2014-06-30"

datediff([datetime], [datetime], [unit])

Tel het aantal eenheden tussen twee datetimes. [eenheid] kan "jaar", "maand", "dag", "uur", "minuut", "seconde" zijn.

  • datediff("2014-02-28", "2015-02-28", "maand") geeft 12

  • datediff("2014-02-28T20:00:00Z", "2014-02-28T21:00:00Z", "minuut") geeft 60