מסננים (לשדות)

בדף הזה מוזכר הפרמטר filters שהוא חלק ממדד.

אפשר להשתמש ב-filters גם כחלק מ<term ref="טבלה נגזרת מבוססת LookML ‏(NDT)">טבלה נגזרת מבוססת LookML ‏(NDT)</term>, כמו שמתואר בדף התיעוד של הפרמטר explore_source.

אפשר להשתמש ב-filters גם כחלק מלוח בקרה, כמו שמתואר בדף התיעוד בנושא פרמטרים של לוח בקרה.

אפשר להשתמש ב-filters גם כחלק מרכיב בלוח הבקרה. דוגמה מייצגת לשימוש מופיעה בדף התיעוד בנושא רכיבים של תרשים עמודות אנכי.

Usage

view: view_name {
  measure: field_name {
    filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
  }
}
היררכיה
filters
סוגי שדות אפשריים
מדידה

מקבל
קבוצה של שמות מאפיינים וביטויי סינון תואמים ב-Looker

הגדרה

filters היא רשימה אופציונלית של ביטויי סינון שמוחלים על חישוב של מדד. היא פועלת רק עם סוגי המדדים הבאים שמבצעים צבירה:

  • type: count
  • type: count_distinct
  • type: sum
  • type: average

התחביר של מסננים הוא:

filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]

במאמר בנושא הערות על סינון ב-Looker מוסבר איך לכתוב ביטויי סינון תקינים. מציבים את כל ביטוי המסנן במירכאות, כמו בדוגמאות הבאות.

אפשר גם להשתמש ב-filters עם פרמטרים של Liquid ומסננים מבוססי-תבניות כדי ליצור מדדים מסוננים דינמיים עם ערך מסנן שיכול להשתנות באופן דינמי על סמך קלט משתמש בלוח בקרה או ב-Look. הגישה הזו מאפשרת למשתמשים לבחור ערכי מסננים שחלים רק על מדד ספציפי, בלי לסנן את כל השאילתה באמצעות פסקה WHERE כללית. בהמשך הדף מופיע הקטע יצירת מדד מסונן דינמי.

דוגמאות

יש הרבה דרכים להשתמש ב-filters למדדים. בדוגמאות הבאות מפורטים כמה פתרונות לתרחישי שימוש נפוצים.

סינון בכמה שדות

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

measure: this_week_count {
  type: count_distinct
  sql: ${TABLE}.id ;;
  filters: [created_date: "7 days", user.status: "-disabled"]
  # Reference fields from other joined views with view_name.field_name syntax
  # Minus sign means "not" in this case, but check notation docs for details
}

סינון לפי מימד yesno

דוגמה נוספת: נתונים שכוללים שורה אחת לכל אדם, שהוא עובד רגיל או קבלן. יש שדה, is_contractor, מסוג yesno, שמכיל yes אם האדם הוא קבלן. המדד הזה יספור רק שורות של קבלנים:

measure: contractor_count {
  type: count
  filters: [is_contractor: "yes"]
}

הוספת כמה ערכי סינון

בדוגמה הבאה, הביטוי filters מכיל כמה ערכים. המדד יספור את כל השורות שתואמות לאחד מארבעת הערכים בשדה state:

measure: customers_by_state {
  type: count
  filters: [state: "California, Nevada, Washington, Oregon"]
}

סינון של ערכי NULL

בדוגמה הזו, המדד יספור מזהים ייחודיים שנוצרו ב-7 הימים האחרונים ויכללו ערך בשדה user.email_address שאינו NULL:

measure: this_week_count_with_email {
  type: count_distinct
  sql: ${TABLE}.id ;;
  filters: [created_date: "7 days", user.email_address: "-NULL"]
}

מכיוון שהשדה user.email_address הוא מסוג string, נעשה שימוש בתחביר "-NULL". מידע נוסף זמין בדף ביטויי סינון ב-Looker.

הוספת תנאי סינון מספריים

בדוגמה הזו, המסנן מקבל ערך מספרי. המדד יוסיף רק הזמנות עם price של יותר מ-100:

measure: total_amt_large_orders {
  type: sum
  filters: [orders.price: ">100"]
  sql: ${orders.price} ;;
}

שימוש באופרטור AND כדי לשלב תנאים

בדוגמה הזו, המדד משתמש בביטוי מסנן עם האופרטור AND כדי לחשב את סך ההזמנות מלקוחות בקבוצת הגיל 18-25:

measure: sales_18_to_25 {
  type: sum
  filters: [customers.age: ">=18 AND <=25"]
  sql: ${orders.price} ;;
}

שימוש בפסיקים כדי לשלב תנאים

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

measure: sales_less_25_or_greater_65 {
  type: sum
  filters: [customers.age: "<25, >65"]
  sql: ${orders.price} ;;
}

יצירת מדד דינמי מסונן

בדוגמה הזו, מסנן נותן למשתמש את האפשרות לראות ספירה של הזמנות – מסוננות לפי הסטטוס שהמשתמש בוחר – במסנן של Look או של לוח בקרה:

קודם יוצרים שדה למסנן בלבד שמאפשר למשתמש לבחור ערך:

  filter: status_filter {
    type: string
    suggest_dimension: status
  }

לאחר מכן, יוצרים מאפיין מוסתר שמסתמך על מסננים מבוססי-תבנית כדי לתעד את הבחירה של המשתמש מהשדה הקודם שמיועד רק למסננים. המאפיין הזה יחזיר את הערך yes בכל פעם שבוחרים ערך בשדה המסנן:

  dimension: status_satisfies_filter {
    type: yesno
    hidden: yes
    sql: {% condition status_filter %} ${status} {% endcondition %} ;;
  }

לבסוף, יוצרים מדד שמסנן לפי המאפיין type: yesno:

  measure: count_dynamic_status {
    type: count
    filters: [status_satisfies_filter: "yes"]
  }

אם המשתמש לא בוחר ערך בשדה של סינון בלבד, ערך ברירת המחדל של ה-SQL יהיה 1=1, ולא תהיה לכך השפעה על ערכי המדדים.

אתגרים נפוצים

אל תשתמשו ב-filters עם מדדים של type: number

משתמשים רבים מנסים להשתמש ב-filters עם מדדים של type: number, אבל זה לא עובד:

# Will NOT work
measure: total_food_profit {
  type: number
  sql: ${total_revenue} - ${total_cost} ;;
  filters: [segment: "food"]
}
measure: total_revenue {
  type: sum
  sql: ${revenue} ;;
}
measure: total_cost {
  type: sum
  sql: ${cost} ;;
}

במקום זאת, צריך להחיל פרמטר filters על כל אחד מהמדדים שמרכיבים את המדד type: number, באופן הבא:

# Will work
measure: total_food_profit {
  type: number
  sql: ${total_food_revenue} - ${total_food_cost} ;;
}
measure: total_food_revenue {
  type: sum
  sql: ${revenue} ;;
  filters: [segment: "food"]
}
measure: total_food_cost {
  type: sum
  sql: ${cost} ;;
  filters: [segment: "food"]
}