Expresiile condiţionate

Utilizaţi expresii condiţionate pt. a crea expresii care convertesc valori.

Expresiile condiţionate descrise în această secţiune sunt blocuri modulare pt. a crea expresii care convertesc o valoare dintr-o formă în alta.

Urmaţi aceste reguli:

  • În instrucţiunile CASE, AND are prioritate asupra OR.
  • Şirurile trebuie să fie încadrate în ghilimele simple.
Expresie Exemplu Descriere Sintaxă

CASE (If)

CASE

WHEN score-par < 0 THEN 'Under Par'

WHEN score-par = 0 THEN 'Par'

WHEN score-par = 1 THEN 'Bogey'

WHEN score-par = 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

Evaluează fiecare condiţie WHEN şi, dacă este satisfăcută, asignează valoarea din expresia THEN corespunzătoare.

Dacă nu este satisfăcută niciuna dintre condiţiile WHEN, asignează valoarea prestabilită specificată în expresia ELSE. Dacă nu este specificată nicio expresie ELSE, sistemul va adăuga automat un ELSE NULL.

Notă: Consultaţi Cele mai bune practici pentru utilizarea instrucţiunilor CASE în analize şi vizualizări.

CASE WHEN request_condition1 THEN expr1 ELSE expr2 END

CASE (Switch)

CASE Score-par

WHEN -5 THEN 'Birdie on Par 6'

WHEN -4 THEN 'Must be Tiger'

WHEN -3 THEN 'Three under par'

WHEN -2 THEN 'Two under par'

WHEN -1 THEN 'Birdie'

WHEN 0 THEN 'Par'

WHEN 1 THEN 'Bogey'

WHEN 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

Este referită, de asemenea, drept CASE (Lookup). Este examinată valoarea primei expresii, apoi expresiile WHEN Dacă prima expresie corespunde unei expresii WHEN, asignează valoarea în expresia THEN corespunzătoare.

Dacă nu corespunde nicio expresie WHEN, asignează valoarea prestabilită specificată în expresia ELSE. Dacă nu este specificată nicio expresie ELSE, sistemul va adăuga automat un ELSE NULL.

Dacă prima expresie corespunde unei expresii din mai multe clauze WHEN, este asignată doar expresia care urmează după prima corespondenţă.

Notă Consultaţi Cele mai bune practici pentru utilizarea instrucţiunilor CASE în analize şi vizualizări.

CASE expr1 WHEN expr2 THEN expr3 ELSE expr4 END

IfCase > ELSE

-

-

ELSE [expr]

IfCase > IFNULL

-

-

IFNULL([expr], [value])

IfCase > NULLIF

-

-

NULLIF([expr], [expr])

IfCase > WHEN

-

-

WHEN [Condition] THEN [expr]

IfCase > CASE

-

-

CASE WHEN [Condition] THEN [expr] END

SwitchCase > ELSE

-

-

ELSE [expr]

SwitchCase >IFNULL

-

-

IFNULL([expr], [value])

SwitchCase > NULLIF

-

-

NULLIF([expr], [expr])

SwitchCase > WHEN

-

-

WHEN [Condition] THEN [expr]

Cele mai bune practici pentru utilizarea instrucţiunilor CASE în analize şi vizualizări

La utilizarea instrucţiunilor CASE în rapoarte şi registre de lucru, trebuie să ţineţi cont de coloanele raportului şi ordinea de agregare, deoarece acestea afectează modul de calculare pentru expresii şi subtotaluri.

  • În general, la utilizarea expresiile CASE, verificaţi ca orice coloane utilizate în expresii să fie incluse în raport.

  • Dacă ordinea de agregare este importantă, modificaţi regula de agregare pentru raport de la Prestabilită la Sumă.
  • Când o condiţie trebuie să fie evaluată înainte de calcularea agregării (de exemplu, dacă coloana filtrată nu este afişată în raport), utilizaţi funcţia FILTER.

Exemplu

Acest exemplu utilizează date pentru brand, tip de produs şi venituri.
Urmează descrierea GUID-5837A210-154F-4FAC-922D-EBF0A21C349A-default.png
.png

Pentru aplicarea unei condiţii pentru setarea venitului Camera la 0, creaţi următoarea expresie condiţională: CASE WHEN Product_Type = ‘Camera’ THEN 0 ELSE Revenue END.

Când Product_Type este exclus din raport, datele nu sunt disponibile pentru evaluarea expresiei, deoarece conţine Product_Type, iar rezultatele sunt:
Urmează descrierea GUID-22873F41-3679-45DF-821D-4167594FE069-default.png
.png

Prin adăugarea PRODUCT_TYPE la raport şi setarea agregării raportului la SUM, rezultatele sunt agregate după calcularea valorilor nivelului de bază:
Urmează descrierea GUID-0BEEE7E1-73CE-4BAA-98A2-683830E18E12-default.png
.png

O alternativă la utilizarea CASE este utilizarea unei expresii de filtrare: FILTER(Revenue using Product_Type != ‘Camera’). Expresia este calculată independent de coloanele de raportare, iar agregările sunt aplicate după calcul:
Urmează descrierea GUID-F428B1A7-A9FF-425B-80F1-BB709769CE5C-default.png
.png