Podmienkové výrazy

Podmienkové výrazy sa používajú na vytváranie výrazov, ktoré konvertujú hodnoty.

Podmienkové výrazy opísané v tejto časti sú stavebnými blokmi na vytváranie výrazov, ktoré konvertujú hodnotu z jedného formátu na iný.

Riaďte sa týmito pravidlami:

  • V príkazoch CASE má výraz AND prednosť pred výrazom OR.
  • Reťazce musia byť v jednoduchých úvodzovkách.
Výraz Príklad Popis Syntax

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

Vyhodnotí každú podmienku WHEN a ak je splnená, priradí hodnotu v zodpovedajúcom výraze THEN.

Ak nie je splnená žiadna z podmienok WHEN, priradí predvolenú hodnotu zadanú vo výraze ELSE. Ak nie je zadaný žiadny výraz ELSE, systém automaticky pridá ELSE NULL.

Poznámka: Pozrite si časť Osvedčené postupy pri používaní príkazov CASE v analýzach a vizualizáciách.

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

Nazýva sa tiež CASE (Lookup). Najprv sa preskúma hodnota prvého výrazu a potom výrazy WHEN. Ak sa prvý výraz zhoduje s niektorým z výrazov WHEN, priradí sa hodnota v zodpovedajúcom výraze THEN.

Ak sa nezhoduje so žiadnym z výrazov WHEN, priradí sa predvolená hodnota zadaná vo výraze ELSE. Ak nie je zadaný žiadny výraz ELSE, systém automaticky pridá ELSE NULL.

Ak sa prvý výraz zhoduje s výrazmi vo viacerých klauzulách WHEN, priradí sa iba výraz nasledujúci po prvej zhode.

Poznámka: Pozrite si časť Najvhodnejšie postupy na používanie príkazov CASE v analýzach a vizualizáciách.

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]

Osvedčené postupy pri používaní príkazov CASE v analýzach a vizualizáciách

Keď v zostavách a zošitoch používate príkazy CASE, mali by ste vziať do úvahy stĺpce zostavy a poradie agregácie, pretože tie ovplyvňujú spôsob výpočtu výrazov a medzisúčtov.

  • Vo všeobecnosti platí, že pri používaní výrazov CASE je potrebné zabezpečiť, aby stĺpce použité vo výraze boli zahrnuté do zostavy.

  • Ak je dôležité poradie agregácie, zmeňte pravidlo agregácie zostavy z hodnoty Predvolené na hodnotu Súčet.
  • Ak je potrebné vyhodnotiť podmienku pred výpočtom agregácie (ak napríklad filtrovaný stĺpec nie je v zostave zobrazený), použite funkciu FILTER.

Príklad

Tento príklad používa dáta pre značku, typ produktu a výnosy.
Popis GUID-5837A210-154F-4FAC-922D-EBF0A21C349A-default.png je uvedený nižšie
.png

Ak chcete použiť podmienku na nastavenie hodnoty 0 pre výnosy fotoaparátu, vytvorte nasledujúci podmienkový výraz: CASE WHEN Product_Type = ‘Camera’ THEN 0 ELSE Revenue END.

Keď je zo zostavy vylúčená hodnota Product_Type, dáta na vyhodnotenie výrazu nie sú k dispozícii, pretože ten obsahuje Product_Type, a výsledky sú:
Popis GUID-22873F41-3679-45DF-821D-4167594FE069-default.png je uvedený nižšie
.png

Keď sa do zostavy pridá hodnota PRODUCT_TYPE a pre agregáciu zostavy sa nastaví SUM, výsledok bude agregovaný po výpočte hodnôt na základnej úrovni:
Popis GUID-0BEEE7E1-73CE-4BAA-98A2-683830E18E12-default.png je uvedený nižšie
.png

Namiesto príkazu CASE sa môže použiť výraz filtra: FILTER(Revenue using Product_Type != ‘Camera’). Výraz sa vypočíta nezávisle od stĺpcov zostavy a agregácie sa použijú po výpočte:
Popis GUID-F428B1A7-A9FF-425B-80F1-BB709769CE5C-default.png je uvedený nižšie
.png