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 הבסיסי של שאילתה שבה נעשה שימוש במאפיין. אם השדה שאליו מתייחסים לא מופיע בתצוגה החזותית של השאילתה, והתצוגה החזותית היא תרשים טבלה עם עמודות שסודרו מחדש באופן ידני, יכול להיות שסדר העמודות בפורמטים מסוימים של הורדות יושפע.