Podmíněné výrazy

Podmíněné výrazy slouží k tvorbě výrazů, které převádí hodnoty.

Podmíněné výrazy popsané v tomto oddílu jsou stavebními kameny pro tvorbu výrazů, které převádějí hodnotu z jedné formy do druhé.

Dodržujte tato pravidla:

  • V příkazech CASEAND přednost před OR.
  • Řetězce musejí být v jednoduchých uvozovkách.
Výraz Příklad Popis Syntaxe

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í všechny podmínky WHEN a pokud jsou naplněny, přiřadí hodnotu odpovídající výrazu THEN.

Pokud se nezjistí shoda s žádnou podmínkou WHEN, přiřadí se výchozí hodnota specifikovaná ve výrazu ELSE. Není-li specifikován výraz ELSE, systém automaticky přidá klíčová slova ELSE NULL.

Poznámka: Viz Osvědčené postupy pro používání příkazů CASE v analýzách a vizualizacích.

CASE WHEN podmínka_požadavku_1 THEN výraz_1 ELSE výraz_2 END

CASE (přepínač)

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

Uváděno také jako CASE (Lookup). Vyhodnotí se hodnota prvního výrazu a pak výrazy WHEN. Pokud první výraz odpovídá některému výrazu WHEN, přiřadí se hodnota v odpovídajícím výrazu THEN.

Pokud se nezjistí shoda s žádným výrazem WHEN, přiřadí se výchozí hodnota specifikovaná ve výrazu ELSE. Není-li specifikován výraz ELSE, systém automaticky přidá klíčová slova ELSE NULL.

Pokud první výraz odpovídá výrazu v několika klauzulích WHEN, přiřadí se pouze výraz následující po první shodě.

Poznámka Viz Osvědčené postupy pro používání příkazů CASE v analýzách a vizualizacích.

CASE výraz_1 WHEN výraz_2 THEN výraz_3 ELSE výraz_4 END

IfCase > ELSE

-

-

ELSE [výraz]

IfCase > IFNULL

-

-

IFNULL([výraz], [hodnota])

IfCase > NULLIF

-

-

NULLIF([výraz], [výraz])

IfCase > WHEN

-

-

WHEN [podmínka] THEN [výraz]

IfCase > CASE

-

-

CASE WHEN [podmínka] THEN [výraz] END

SwitchCase > ELSE

-

-

ELSE [výraz]

SwitchCase > IFNULL

-

-

IFNULL([výraz], [hodnota])

SwitchCase > NULLIF

-

-

NULLIF([výraz], [výraz])

SwitchCase > WHEN

-

-

WHEN [podmínka] THEN [výraz]

Osvědčené postupy pro používání příkazů CASE v analýzách a vizualizacích

Při použití příkazů CASE v sestavách a sešitech vezměte v úvahu sloupce sestavy a pořadí agregace, protože ty ovlivňují způsob výpočtu výrazů a mezisoučtů.

  • Obecně platí, že při použití výrazů CASE je nutné se ujistit, že do sestavy jsou zahrnuty všechny sloupce použité ve výrazu.

  • Pokud je důležité pořadí agregace, změňte pravidlo agregace sestav z Výchozí na Součet.
  • Pokud má být podmínka vyhodnocena před vypočítáním agregace (například pokud se v sestavě nezobrazuje filtrovaný sloupec), použijte funkci FILTER.

Příklad

Tento příklad používá data pro značku, typ produktu a výnosy.
Popis GUID-5837A210-154F-4FAC-922D-EBF0A21C349A-default.png následuje
.png''

Chcete-li použít podmínku pro nastavení výnosů z produktu Camera na hodnotu 0, vytvořte následující podmíněný výraz: CASE WHEN Product_Type = ‘Camera’ THEN 0 ELSE Revenue END.

Když je parametr Product_Type vyloučen ze sestavy, nejsou dostupná data k vyhodnocení výrazu, protože ten obsahuje parametr Product_Type, a výsledky budou následující:
Popis GUID-22873F41-3679-45DF-821D-4167594FE069-default.png následuje
.png''

Přidáním PRODUCT_TYPE do sestavy a nastavením agregace sestavy na SUM se výsledky agregují po výpočtu hodnot základní úrovně takto:
Popis GUID-0BEEE7E1-73CE-4BAA-98A2-683830E18E12-default.png následuje
.png''

Alternativou k použití CASE je použít výraz filtru: FILTER (Revenue using Product_Type != ‘Camera’). Výraz se vypočítá nezávisle na sloupcích sestavy a po výpočtu se použijí agregace:
Popis GUID-F428B1A7-A9FF-425B-80F1-BB709769CE5C-default.png následuje
.png''