Skip to content

Valemid

Valemid võimaldavad parameetril arvutada oma väärtuse automaatselt iga salvestamisega, tuginedes sama objekti andmetele, selle ülemobjektidele, alam-objektidele või sellele viitavatele objektidele.

Valemi kasutamiseks: sea parameetri definitsioonil lipp formula ja kirjuta avaldis valemi väärtusena. Arvutatud parameetreid ei saa käsitsi muuta ja need jäetakse objekti dubleerimisel vahele.

Valemid hinnatakse kahes etapis, nii et teistest valemiparameetritest sõltuvad parameetrid lahendatakse õigesti.

INFO

Kaheetapiline hindamine tähendab, et valem võib turvaliselt viidata teisele sama objekti arvutatud parameetrile. Esimene etapp lahendab lihtsad väljad; teine lahendab arvutatud parameetrite vahelised sõltuvused.

Süntaks

Valem kirjutatakse tühikutega eraldatud väärtustena, millele järgneb valikuline funktsiooni nimi:

field1 field2 field3 FUNCTION

Kui funktsiooni pole määratud, kasutatakse vaikimisi CONCAT.

Pesastatud valemid

Kasuta sulge valemite pesastamiseks ja keeruliste arvutuste loomiseks:

(field1 field2 SUM) (field3 field4 SUM) MULTIPLY

Sisemised valemid hinnatakse esmalt, seejärel kasutatakse nende tulemusi välimises valemis. Pesastamine võib olla mitmetasemeline.

Näited:

  • (price tax SUM) quantity MULTIPLY — Arvuta kogusumma maksuga koguse kohta
  • ((a b SUM) (c d SUM) MULTIPLY) 100 DIVIDE — Keeruline pesastatud arvutus
  • (min_value max_value SUM) 2 DIVIDE — Miinimumi ja maksimumi keskmine

Väljaviited

Sama objekt

ViideLahendatakse
propertyNameSelle parameetri väärtus(ed) praegusel objektil
_idPraeguse objekti ID
'literal' või "literal"Stringiliteraal
123 / 45.67Arvliteraal

Viidatavad objektid

ViideLahendatakse
propertyName.*.propertyParameetri väärtus kõigist propertyName-i poolt viidatavatest objektidest
propertyName.type.propertyParameetri väärtus viidatavatest objektidest filtreerituna objektitüübi järgi
propertyName.*._idKõigi viidatavate objektide ID-d
propertyName.type._idTüübi järgi filtreeritud viidatavate objektide ID-d

Alam-objektid

ViideLahendatakse
_child.*.propertyNamepropertyName kõigist alam-objektidest
_child.typeName.propertyNamepropertyName konkreetset tüüpi alam-objektidest
_child.*._idKõigi alam-objektide ID-d
_child.typeName._idKonkreetset tüüpi alam-objektide ID-d

Viitajate objektid

Objektid, mis viitavad sellele objektile enda viiteparameetrite kaudu:

ViideLahendatakse
_referrer.*.propertyNamepropertyName kõigist objektidest, mis sellele objektile viitavad
_referrer.typeName.propertyNamepropertyName konkreetset tüüpi viitajatest
_referrer.*._idKõigi viitajate ID-d
_referrer.typeName._idKonkreetset tüüpi viitajate ID-d

INFO

typeName viiakse vastavusse viitaja objektitüübi name parameetriga (nt invoice), mitte selle kuvanimeduse label-iga. Kui tüübi name ja label erinevad, kasuta name väärtust.

Funktsioonid

FunktsioonKirjeldus
CONCATÜhendab kõik väärtused stringidena (vaikimisi, kui ühtegi funktsiooni pole määratud)
CONCAT_WSÜhendab väärtused eraldajaga — viimast väärtust kasutatakse eraldajana
COUNTTagastab väärtuste arvu
SUMSummeerib kõik arvväärtused
SUBTRACTLahutab ülejäänud väärtused esimesest
MULTIPLYKorrutab kõik väärtused omavahel
DIVIDEJagab esimese väärtuse ülejäänud väärtustega. Tagastab undefined, kui mõni jagaja on null.
AVERAGETagastab aritmeetilise keskmise
MINTagastab väikseima väärtuse
MAXTagastab suurima väärtuse
ABSTagastab esimese väärtuse absoluutväärtuse
ROUNDÜmardab N kümnendkohani — viimast väärtust kasutatakse N-na

WARNING

DIVIDE tagastab undefined, kui mõni väärtus pärast esimest on null. Käitle seda allavoolu valemites või veendu, et jagaja on alati nullist erinev.

Tühja sisendi käitumine

Kui ühtegi väärtust ei lahendata (nt viidatav parameeter on tühi või määramata), tagastavad enamik funktsioone undefined ja parameetrit lihtsalt ei kirjutata. Kolm funktsiooni tagastavad väärtuse ka tühja sisendi korral:

FunktsioonTühja sisendi tulemus
COUNT0
SUM0
MULTIPLY1 (korrutisidentiteet)
Kõik teisedundefined — parameetrit ei seadistata

Näited

Täisnimi kahest väljast:

first_name last_name ' ' CONCAT_WS

Koguhind:

price quantity MULTIPLY

Hind maksuga, koguse kohta:

(price tax SUM) quantity MULTIPLY

Alam-objektide loendamine:

_child.*._id COUNT

Keskmine hind alam-objektide üleselt:

_child.*.price AVERAGE

Tulemuse ümardamine 2 kümnendkohani:

(total quantity DIVIDE) 2 ROUND

Kasum viidatavatest arvetest:

_referrer.invoice.amount SUM