שדות (לצירופים)

בדף הזה יש התייחסות לפרמטר fields שהוא חלק מצירוף.

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

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

Usage

explore: view_name_1 {
  join: view_name_2 {
    fields: [
      field-or-set-specification,
      field-or-set-specification,
      ...
    ]
  }
}
היררכיה
fields
ערך ברירת המחדל
כל השדות בתצוגה המאוחדת

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

כללים מיוחדים
  • שמות של הגדרות תמיד מסתיימים בכוכבית (*)
  • ברמת הצירוף, אפשר רק לכלול שדות וקבוצות, ולא להחריג אותם. עם זאת, אפשר להחריג את כל השדות באמצעות הפרמטר fields עם רשימה ריקה, כך: fields: []

הגדרה

fields ברמת הצירוף מאפשר לכם לציין אילו שדות מתצוגה מצורפת יובאו לניתוח. אם לא משתמשים ב-fields, ברירת המחדל של Looker היא להוסיף את כל השדות מהתצוגה.

אפשר להשתמש ברשימה של שדות, כמו [field_a, field_b].

אפשר גם להפנות לקבוצת שדות (שנוצרו על ידי הפרמטר set), כמו [set_a*]. הכוכבית מציינת ל-Looker שאתם מפנים לשם של קבוצה ולא לשם של שדה.

דוגמאות

מוסיפים רק את השדה שנקרא name מהתצוגה customer לניתוח order:

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name]
  }
}

מוסיפים את השדות name, address ו-age מהתצוגה customer לניתוח order:

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name, address, age]
  }
}

מוסיפים את קבוצת השדות שנקראת order_fields מהתצוגה customer לניתוח order:

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [order_fields* ]
  }
}

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

הפונקציה fields יכולה להפנות רק לשדות מתוך join

fields יהיה צאצא של join, שמפנה לתצוגה. כל המאפיינים או המדדים שמצוינים ב-fields חייבים להיות חלק מהתצוגה הזו. לדוגמה, נניח שיש לנו:

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name]
  }
}

כדי שהמדד או המאפיין שנקרא name יפעלו בצורה תקינה, הם צריכים להיות בתצוגה customer.

חשוב לדעת

שימוש ב-fields: [] עם רשימה ריקה כדי להחריג את כל השדות

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

explore: order {
  join: customer {
    fields: []
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

בדוגמה הזו, אף אחד מהשדות מהתצוגה customer לא יוצג בניתוח order.

הדרך היחידה להסיר שדות ברמה join היא להחריג את כולם בבת אחת באמצעות fields: []. אי אפשר להשתמש בALL_FIELDS* כדי להחריג את כל השדות ברמה של join.

עם זאת, ברמה explore, אפשר להשתמש בערך ALL_FIELDS* כדי להחריג פריטים ספציפיים, כמו שמתואר בקטע אפשר להחריג פריטים ספציפיים באמצעות fields עם explore בדף הזה.

אפשר להחריג פריטים ספציפיים באמצעות fields עם explore

כש-fields מוטמע בפרמטר join, אפשר להחריג את כל השדות בבת אחת באמצעות fields: [] או לכלול שדות ספציפיים. אבל אי אפשר להחריג שדות ספציפיים בנפרד. לדוגמה, אם יש לכם 100 שדות ואתם רוצים להחריג רק אחד מהם, תצטרכו לציין את כל 99 השדות שכן רציתם.

אבל אפשר להשתמש בפרמטר explore כדי להגדיר את ALL_FIELDS* ואז להחריג שדות.fields לדוגמה:

explore: order {
  fields: [
    ALL_FIELDS*,
    -customer.unwanted_field_a,
    -customer.unwanted_field_b
  ]
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

שימו לב איך הצלחנו להפנות לשדות מהתצוגה המאוחדת customer בפרמטר fields ברמת הניתוח באמצעות התחביר view_name.field_name.

סוגים שונים של פרמטרים של fields מוחלים בזמנים שונים

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

ראשית, כל הfields פרמטרים תחתjoin מוחלים. כך נוצרת קבוצת השדות שאפשר לבחור מתוכה ב'ניתוח נתונים'. דוגמה:

explore: orders {
  join: users {
    fields: [name]
    sql_on: ${orders.user_id} = ${users.id} ;;
  }
}

במקרה הזה, השדות שיהיו זמינים הם כל השדות מ-orders, ו-name מ-users. זוהי קבוצת השדות שתהיה בקבוצת ALL_FIELDS* (מתואר בסעיף על אי הכללת פריטים בודדים).

אם עכשיו נוסיף פרמטר fields מתחת לפרמטר explore, נוסיף הגבלה מעל קבוצת הפרמטרים הזו. נניח שעשינו את הפעולות הבאות:

explore: orders {
  fields: [orders.price, users.address]
  join: users {
    fields: [name]
    sql_on: ${orders.user_id} = ${users.id} ;;
  }
}

במקרה כזה:

  • המוצר price מ-orders יוצג כצפוי, כי הוא נמצא בקבוצה ALL_FIELDS* שיצרנו.
  • ההודעה address מ-users לא תוצג, כי היא לא נכללה כש-users הצטרף (רק name נכללה).
  • גם name מ-users לא יופיע, כי לא הוספנו אותו לניתוח בשורה fields: [orders.price, users.address].