Betingelsesudtryk

Du bruger betingelsesudtryk til at oprette udtryk, der konverterer værdier.

De betingelsesudtryk, som beskrives i dette afsnit, er byggeblokke, der bruges til at oprette udtryk, som konverterer en værdi fra en form til en anden.

Følg disse regler:

  • I CASE-sætninger har AND forrang over OR.
  • Strenge skal sættes i enkelte anførselstegn.
Udtryk Eksempel Beskrivelse Syntaks

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

Evaluerer hver WHEN-betingelse, og, hvis den er opfyldt, tildeler værdien i det tilsvarende THEN-udtryk.

Hvis ingen af WHEN-betingelserne er opfyldt, tildeles den standardværdi, som er angivet i ELSE-udtrykket. Hvis intet ELSE-udtryk er angivet, tilføjer systemet automatisk ELSE NULL.

Bemærk: Se Bedste praksis for brug af CASE-sætninger i analyser og visualiseringer.

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

Kaldes også CASE (Lookup). Værdien af det første udtryk undersøges og derefter WHEN-udtrykkene. Hvis det første udtryk matcher et WHEN-udtryk, tildeles værdien i det tilhørende THEN-udtryk.

Hvis ingen af WHEN-udtrykkene matcher, tildeles den standardværdi, som er angivet i ELSE-udtrykket. Hvis intet ELSE-udtryk er angivet, tilføjer systemet automatisk ELSE NULL.

Hvis det første udtryk matcher et udtryk i flere WHEN-klausuler, tildeles kun udtrykket efter det første match.

Bemærk: Se Bedste praksis for brug af CASE-sætninger i analyser og visualiseringer.

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]

Bedste praksis for brug af CASE-sætninger i analyser og visualiseringer

Når du bruger CASE-sætninger i rapporter og projektmapper, skal du overveje rapportens kolonner og aggregeringsrækkefølgen, da de påvirker, hvordan udtryk og subtotaler beregnes.

  • Når du bruger CASE-udtryk, skal du generelt sikre dig, at eventuelle kolonner, der bruges i udtrykket, er inkluderet i rapporten.

  • Hvis rækkefølgen af aggregeringen er vigtig, skal du ændre rapportens aggregeringsregel fra Standard til Sum.
  • Hvis en betingelse skal evalueres, før aggregeringen beregnes (for eksempel, hvis den filtrerede kolonne ikke vises i rapporten), skal du bruge funktionen FILTER.

Eksempel

Dette eksempel bruger data for Brand, Product Type og Revenue.
Beskrivelse af GUID-5837A210-154F-4FAC-922D-EBF0A21C349A-default.png følger
.png

For at anvende en betingelse, der angiver Camera revenue til 0, skal du oprette følgende betingede udtryk: CASE WHEN Product_Type = ‘Camera’ THEN 0 ELSE Revenue END.

Når Product_Type udelades i rapporten, er data ikke tilgængelige til evaluering af udtrykket, fordi de indeholder Product_Type, og resultaterne er:
Beskrivelse af GUID-22873F41-3679-45DF-821D-4167594FE069-default.png følger
.png

Når du føjer PRODUCT_TYPE til rapporten og angiver rapportaggregeringen til SUM, aggregeres resultaterne, når værdierne på basisniveau er beregnet:
Beskrivelse af GUID-0BEEE7E1-73CE-4BAA-98A2-683830E18E12-default.png følger
.png

Et alternativ til brug af CASE er at bruge et filterudtryk: FILTER(Revenue using Product_Type != ‘Camera’). Udtrykket beregnes uafhængigt af rapportens kolonner, og aggregeringer anvendes efter beregningen:
Beskrivelse af GUID-F428B1A7-A9FF-425B-80F1-BB709769CE5C-default.png følger
.png