כיסוי

Usage

view: view_name {
  dimension: field_name {
    case: {
      when: {
        sql: SQL condition ;;
        label: "value"
      }
      # Possibly more when statements
      else: "value"
    }
    alpha_sort:  yes
  }
}
היררכיה
case
סוגי שדות אפשריים
מאפיין

מקבל
תנאי SQL ומחרוזת

כללים מיוחדים
אם רוצים שהערכים יהיו מסודרים לפי סדר אלפביתי, צריך להשתמש בפרמטר alpha_sort

הגדרה

case מאפשר לכם לסווג תוצאות באמצעות לוגיקה של מקרה. אפשר לכתוב הצהרות SQL גולמיות CASE במקום זאת, אבל שימוש ב-case ייצור תפריט נפתח למשתמשים בממשק המשתמש של Looker. הצהרת SQL CASE לא תיצור תפריט כזה.

הצורה הכללית של case היא:

dimension: status {
  case: {
    when: {
      sql: condition ;;
      label: "Label of Condition"
    }
    # possibly more when statements
    else: "Label If No Condition Met"
  }
}

הפרמטרים האלה פועלים באופן הבא:

  • when – אפשר להשתמש בכמה הצהרות when שרוצים כדי לייצג כל תנאי שרוצים לספק לו תווית. ההצהרות when מוערכות לפי הסדר, מהראשונה לרשימה ועד האחרונה, וההצהרה הראשונה when שמוערכת כ-True תקצה את התווית המשויכת.
  • sql — הפרמטר sql מקבל תנאי SQL שהערך המחושב שלו הוא True או False.
  • label – אם תנאי ה-SQL מתקיים, זו התווית שתוקצה. התווית שהוקצתה היא מסוג הנתונים string. הערך של כל label בהצהרת case חייב להיות ייחודי. אם משתמשים באותו ערך label לכמה תנאי SQL, רק לתנאי ה-SQL האחרון בהצהרת case מוקצה הערך label. דוגמאות מופיעות בהמשך הדף הזה.
  • else — אם אף אחד מהתנאים לא מתקיים, זו התווית שתשמש.

בחירת סדר המיון של התוויות באמצעות alpha_sort

בדרך כלל, הערכים של case מופיעים בסדר שבו אתם כותבים אותם. אם אתם מעדיפים מיון אלפביתי, אתם יכולים להשתמש ב-alpha_sort: yes כך:

dimension: status {
  alpha_sort: yes
  case: { ... }
}

דוגמאות

הקצאת כמה תוויות שקל לקרוא למספרי סטטוס שונים:

dimension: status {
  case: {
    when: {
      sql: ${TABLE}.status = 0 ;;
      label: "pending"
    }
    when: {
      sql: ${TABLE}.status = 1 ;;
      label: "complete"
    }
    when: {
      sql: ${TABLE}.status = 2 ;;
      label: "returned"
    }
    else: "unknown"
  }
}

אם אותו תנאי חוזר על עצמו ומחזיר תוויות שונות, LookML משתמש בתנאי הראשון שמוערך כ-true. בדוגמה הבאה, ${TABLE}.status = 0 מקבל את הערך pending ולא returned, כי התנאי pending מוערך קודם.

dimension: status {
  case: {
    when: {
      sql: ${TABLE}.status = 0 ;;
      label: "pending"
    }
    when: {
      sql: ${TABLE}.status = 1 ;;
      label: "complete"
    }
    when: {
      sql: ${TABLE}.status = 0 ;;
      label: "returned"
    }
    else: "unknown"
  }
}

אם כמה תנאים מחזירים את אותה תווית, LookML משתמש רק בתנאי הראשון. בדוגמה הבאה, Looker ישתמש ב-${TABLE}.status = 0 במקום ב-${TABLE}.status = 2 כדי ליצור את הצהרת ה-SQL‏ CASE שמוערכת כ-pending. אם ${TABLE}.status = 2, הביטוי CASE שווה ל-unknown.

view: orders
dimension: status {
  case: {
    when: {
      sql: ${TABLE}.status = 0 ;;
      label: "pending"
    }
    when: {
      sql: ${TABLE}.status = 1 ;;
      label: "complete"
    }
    when: {
      sql: ${TABLE}.status = 2 ;;
      label: "pending"
    }
    else: "unknown"
  }
}

חשוב לדעת

כשמאפיין מכיל פרמטר case שמפנה לשדה אחר, יכול להיות שהשדה הנוסף הזה יתווסף ל-SQL הבסיסי של שאילתה שבה נעשה שימוש במאפיין. אם השדה שאליו מתייחסים לא מופיע בתצוגה החזותית של השאילתה, והתצוגה החזותית היא תרשים טבלה עם עמודות שסודרו מחדש באופן ידני, יכול להיות שסדר העמודות בפורמטים מסוימים של הורדות יושפע.