Wyrażenia warunkowe służą do przekształcania wartości.
Wyrażenia warunkowe opisane w tej sekcji są blokami konstrukcyjnymi służącymi do tworzenia wyrażeń, które przekształcają wartość z jednej postaci w inną.
Należy przestrzegać następujących reguł:
CASE
operator AND
ma pierwszeństwo przed operatorem OR
.Wyrażenie | Przykład | Opis | Składnia |
---|---|---|---|
CASE (If) |
|
Ta forma instrukcji CASE oblicza każdy warunek Jeśli nie jest spełniony żaden z warunków Uwaga: Zob. Najlepsze praktyki w zakresie używania instrukcji CASE w analizach i wizualizacjach. |
|
CASE (Switch) |
|
Ta forma jest także określana jako forma Jeśli żadne z wyrażeń Jeśli pierwsze wyrażenie jest zgodne z wyrażeniem z więcej niż jednej klauzuli |
|
IfCase > ELSE |
- |
- |
|
IfCase > IFNULL |
- |
- |
|
IfCase > NULLIF |
- |
- |
|
IfCase > WHEN |
- |
- |
|
IfCase > CASE |
- |
- |
|
SwitchCase > ELSE |
- |
- |
|
SwitchCase >IFNULL |
- |
- |
|
SwitchCase > NULLIF |
- |
- |
|
SwitchCase > WHEN |
- |
- |
|
Używając instrukcji CASE w raportach i skoroszytach, należy brać pod uwagę kolumny raportu i kolejność agregacji, gdyż ma to wpływ na sposób obliczania wyrażeń i podsumowań częściowych.
Generalnie, gdy są używane instrukcje CASE, należy się upewnić, że wszystkie kolumny, które występują w wyrażeniu, zostały zawarte w raporcie.
Jeśli przed agregacją trzeba obliczyć warunek (na przykład, gdy filtrowana kolumna nie jest wyświetlana w raporcie), należy użyć funkcji FILTER.
Przykład
W tym przykładzie są używane dane z kolumn Brand, Product Type i Revenue.
.png"
Aby zastosować do danych Camera warunek "przychód = 0", należy utworzyć następujące wyrażenie warunkowe: CASE WHEN Product_Type = 'Camera' THEN 0 ELSE Revenue END
.
Jeśli w raporcie nie ma kolumny Product_Type, brakuje danych do obliczenia wyrażenia, ponieważ występuje w nim kolumna Product_Type. Są wówczas uzyskiwane następujące wyniki:
.png"
Jeśli do raportu zostanie dodana kolumna PRODUCT_TYPE i agregacja raportu zostanie ustawiona na SUM, wynik będzie agregowany po obliczeniu wartości poziomu podstawowego:
.png"
Alternatywą użycia instrukcji CASE jest użycie wyrażenia filtrującego: FILTER(Revenue using Product_Type != 'Camera'). Wyrażenie jest obliczane niezależnie od kolumn występujących w raporcie, a agregacje są stosowane dopiero po obliczeniu:
.png"