CASE (Searched)

הצהרות CASE בודקות תנאי אחד או יותר ומחזירות תוצאה כשהתנאי הראשון מתקיים, או תוצאת ברירת מחדל אם אף אחד מהתנאים לא מתקיים.

מידע נוסף זמין במאמר בנושא IF.

דוגמאות לשימוש

שימוש נפוץ ב-CASE הוא ליצירת קטגוריות חדשות או קיבוצים חדשים של נתונים. לדוגמה, כדי לקבץ ערכים של מדינות נבחרות למאפיין 'אזור מכירה', אפשר ליצור הצהרת CASE כזו:


    CASE
        WHEN Country IN ("USA","Canada","Mexico") THEN "North America"
        WHEN Country IN ("England","France") THEN "Europe"
        ELSE "Other"
    END

תחביר


    CASE
        WHEN condition THEN result
        [WHEN condition THEN result]
        [...]
        [ELSE else_result]
    END

פרמטרים

  • condition – שדה או ביטוי לוגי. סעיפי WHEN בודקים את condition ומחזירים את הערך True אם התנאי שצוין מתקיים, או את הערך False אם התנאי לא מתקיים.

  • result – שדה או ביטוי מכל סוג. לכל פסקה של WHEN צריכה להיות פסקה תואמת של THEN, שמציינת את התוצאות אם התנאי WHEN condition מתקיים. אם יש כמה סעיפי WHEN, הפונקציה CASE מחזירה את הערך result של התנאי condition הראשון שמתקיים.

  • else_result (אופציונלי) – שדה או ביטוי מכל סוג. הפסקה ELSE else_result מציינת תוצאת ברירת מחדל עבור ההצהרה CASE. הסעיף הזה מוחזר אם אף אחד מהסעיפים WHEN לא נכון. אם הצהרת CASE לא כוללת סעיף ELSE, ואף אחד מהסעיפים WHEN לא נכון, ההצהרה CASE מחזירה NULL.

לכל הצהרת CASE יכול להיות רק סעיף ELSE אחד.

איך פועל החיפוש CASE

משפט חיפוש CASE מתחיל במילת המפתח CASE ומסתיים במילת המפתח END. בין לבין, יהיו כמה קטעים או סעיפים:

  • WHEN: תנאי שרוצים להעריך. אפשר לכלול כמה סעיפי WHEN בהצהרת CASE אחת.
  • THEN: התוצאה שמוחזרת אם התנאי של סעיף WHEN הוא true. צריך להוסיף פסוקית THEN אחת לכל פסוקית WHEN בהצהרת CASE.
  • ELSE: אופציונלי. אם אף אחד מהתנאים של סעיף WHEN לא מתקיים, הפונקציה CASE מחזירה את הערך בסעיף ELSE, או את הערך NULL אם לא מצוין סעיף ELSE.

הפונקציה CASE בודקת כל סעיף WHEN ברצף ומחזירה את התוצאה הראשונה שבה התנאי מתקיים. לא מתבצעת הערכה של סעיפי WHEN שנותרו ושל תוצאת ELSE. אם כל התנאים WHEN הם FALSE או NULL, הפונקציה CASE מחזירה את התוצאה ELSE, או אם אין פסקה ELSE, היא מחזירה NULL.

דוגמאות

בדיקת אי-שוויון

    CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END

סיווג של ערכים מספריים של מאפיינים למאגרי מידע נפרדים

לדוגמה, אתם יכולים להפריד בין הזמנות לפי הסכום שלהן: 'קטן', 'בינוני' או 'גדול':

    CASE
        WHEN Amount < 20 THEN "Small"
        WHEN Amount >= 20 and Amount < 100 THEN "Medium"
        WHEN Amount >= 100 THEN "Large"
    END

סיווג ערכים של מאפיין תאריך למאגרי מידע נפרדים

לדוגמה, אפשר לחלק שנה לסמסטרים על סמך תאריכים ספציפיים:

    CASE
        WHEN Date >= DATE(2018, 9, 23) and Date < DATE(2018, 12, 13) THEN "Fall Semester 2018"
        WHEN Date >= DATE(2018, 1, 3) and Date < DATE(2019, 3, 21) THEN "Winter Semester 2019"
        WHEN Date >= DATE(2019, 3, 27) and Date < DATE(2019, 6, 12) THEN "Spring Semester 2019"
        ELSE "Uncategorized"
    END

הערכה של תנאי AND לוגי

    CASE
        WHEN Country ISO Code = "US" AND Medium = "cpc"
        THEN "US - Paid"
        ELSE "other"
    END

הערכת תנאי לוגי AND/OR

    CASE
        WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*")
        AND is_livestream = TRUE
        OR Video Length > 600
        THEN "GA Livestream or long video"
    END

החזרה של שדה או ערך אחרים בהתאם לערך פרמטר

דוגמה 1: החזרת מאפיין על סמך ערך הפרמטר שנבחר. אתם יכולים להשתמש בטכניקה הזו כדי לאפשר למשתמשים לשנות את מאפיין הפירוט שמשמש בתרשים.

    CASE
        WHEN Breakdown = "Product Category" THEN Product Category
        WHEN Breakdown = "Store" THEN Store
    END

אפשר גם לכתוב את זה באמצעות תחביר פשוט של CASE:

    CASE Breakdown
        WHEN "Product Category" THEN Product Category
        WHEN "Store" THEN Store
    END

דוגמה 2: החזרת מדד אחר על סמך ערך פרמטר.

CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END

הצהרות משובצות בנושא CASE

אפשר להשתמש בהצהרות CASE כדי ליצור לוגיקה מורכבת יותר של הסתעפות:

    CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN
        CASE WHEN Color = "blue"
            THEN "BLUE HAT" ELSE "JUST A HAT"
        END
        ELSE "NOT A HAT"
    END