התאמה אישית של בלוקים של Looker
בדף הזה מפורטות שיטות מומלצות ודוגמאות לאופן ההתאמה של בלוקים של Cortex Framework Looker לדרישות העסקיות הספציפיות שלכם:
התקנה
יש כמה דרכים להתקין את Cortex Framework Looker Blocks, כמו שמפורט במסמכי Deploy Looker Blocks. עם זאת, אנחנו ממליצים לשכפל את המאגר כי זו השיטה הכי פשוטה להתאמה אישית של בלוקים לצרכים העסקיים שלכם.
ה-Cortex Framework Looker Blocks נוצרו בגישה שכבתית, שבה כל שכבה מוסיפה חלק לוגי מצטבר לשכבה הקודמת:
- שכבת הבסיס: תצוגות LookML שנוצרו על ידי מכונה ומפנות לטבלאות מקור.
- שכבת ליבה: שינויים בכתב יד שמוסיפים שדות חדשים או משנים שדות בשכבת הבסיס.
- שכבה לוגית: אפשר לעיין בהגדרות ובצירופים בתצוגות שונות.
השימוש בשיפורים הוא המפתח לגישה השכבתית הזו ולהתאמה אישית. כדי לפעול לפי העיקרון DRY (אל תחזור על עצמך), נעשה שימוש ב-extends וב-constants. תוכן דינמי לתוויות, להצהרות SQL, ל-HTML ולמאפייני קישור נוצר באמצעות שפת התבניות Liquid.
שיטות מומלצות כלליות של Google:
ארגון קבצים ותיקיות
בבלוק של Looker, כל תיקייה מייצגת אוסף של סוגי אובייקטים (כמו תצוגות, Explore, מרכזי בקרה ועוד). כל אובייקט מוגדר בקובץ נפרד. תיקיית הבסיס של הפרויקט מכילה את קובצי המפתח הבאים:
- קובץ
.model - קובץ מניפסט
- קובצי README וקובצי Markdown אחרים
- קבצים מ-Marketplace (אם הבלוק זמין גם ב-Looker Marketplace)

דגם
ניהול מודולרי של קבצים מאפשר לשמור על קובץ model של הפרויקט קטן באמצעות הפרמטרים הבאים:
- חיבור
-
סוגי הקבצים שכלולים הם:
- רכיבים (קבוצות נתונים,
named_value_formatsכשזה רלוונטי) - ניתוחים (ניתוחים לא מוגדרים בקובץ המודל)
- מרכזי בקרה
- רכיבים (קבוצות נתונים,
הצהרות include של התצוגות שנעשה בהן שימוש בבלוק מוגדרות בכל קובץ Explore בנפרד, ולא במיקום הזה, כמו בדוגמה הבאה:
connection: "@{CONNECTION_NAME}"
include: "/components/**/*.lkml"
include: "/explores/**/*.explore"
include: "/dashboards/**/*.dashboard"
מניפסט
קובץ המניפסט מציין את הקבועים שמוזכרים לאורך הפרויקט. הנה כמה דוגמאות לקבועים שבהם אנחנו משתמשים בבלוקים שלנו:
- שם החיבור
- מזהה פרויקט
- מערך נתונים לדיווח
ב-Cortex Framework Looker Blocks נעשה גם שימוש בקבועים כדי להגדיר את הדברים הבאים:
- הצגת תוויות
- תוויות של שדות
- פורמטים של HTML
- קישורים לכתובות URL
- שמות לוחות הבקרה
בודקים את הקבועים שהוגדרו עבור בלוק של Looker ומשנים את הערכים בהתאם לצורך. השינויים יחולו בכל מקום שבו יש הפניה לקבוע.
מאפייני משתמש
כדי להשתמש בחלק מ-Looker Blocks, האדמין צריך להגדיר מאפייני משתמש במופע Looker. מאפייני המשתמשים האלה של שפת ברירת המחדל או המטבע מאפשרים לכם להתאים אישית את אופן הצגת לוחות הבקרה לכל משתמש או קבוצה. מידע נוסף על מאפייני המשתמשים הנדרשים מופיע בסקירה הכללית של כל בלוק.
תצוגות
התצוגות שנמצאות בתיקיית הבסיס הן אלה שנוצרו באופן אוטומטי באמצעות Create View from Table. הקבצים האלה השתנו באופן מינימלי:
- החלפנו את מזהה הפרויקט ואת שם מערך הנתונים בקבועים.
- העברנו תצוגות שמבוססות על Nested Records לקבצים נפרדים.
- הסרנו הגדרות מיותרות של שדות לניתוח מעמיק.
שינויים משמעותיים בתצוגות האלה, כמו תוויות, מאפיינים חדשים ומדדים, נוצרו בתיקייה Core באמצעות שיפורים, הרחבות או טבלאות נגזרות.
בתיקיית הליבה, התצוגות מקבלות שם עם סיומת שמציינת את סוג התצוגה:
-
_rfnלחידוד. -
_extלצפייה שדורשת הרשאה. -
_sdtלטבלה נגזרת שמבוססת על SQL. -
_ndtלטבלה נגזרת מבוססת LookML (NDT). -
_pdtלטבלה נגזרת מתמידה (PDT). -
_xvwכדי להפנות שדות מתצוגות מפורטות שונות.

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

רשומות חוזרות בתוך רשומות
בטבלאות בסיסיות שמכילות רשומות חוזרות מוטמעות, Looker יוצר תצוגות נפרדות כדי לבטל את ההטמעה של הרשומות האלה. לדוגמה, ב-Oracle EBS בלוק של Looker, הטבלה sales_orders מכילה מבנה חוזר מוטמע בשם lines. Looker מתייחס אליהם כשתי תצוגות נפרדות: sales_orders ו-sales_orders__lines.
כדי להצטרף לרשומות האלה שלא מקוננות בתוך Explore, צריך להגדיר את הצירוף באמצעות המאפיין sql בשילוב עם הפקודה UNNEST.

מידע נוסף זמין במאמר איך יוצרים מודל של נתוני BigQuery מקוננים ב-Looker.
ניווט בקוד של Looker Block והסבר עליו
בלוקי Looker של Cortex Framework מכילים הערות מפורטות בתצוגות ובאובייקטים אחרים. כדי לשפר את הניווט בקוד ואת ההבנה שלו, מומלץ להשתמש באפשרות Fold LookML (קיפול LookML) שזמינה בסביבת הפיתוח של LookML.



שדות
המונח field מתייחס לאובייקטים כמו dimension, measure, filter או parameter. בקטעים החדשים יותר האלה, פעלנו לפי העקרונות הבאים:
- השמות של המאפיינים הם בפורמט snake_case (אותיות קטנות וקו תחתון בין מילים). לדוגמה:
customer_name. - שמות העמודות מהטבלאות הבסיסיות משמשים לשמות המאפיינים. אפשר להחיל תוויות על מאפיינים כדי לתת להם שם שמתאים לעסק.
לדוגמה, מאפיין בשם
division_hdr_spartיכול להיות מסומן כ-"מזהה חלוקה". - בטבלאות עם הרבה עמודות, השדות מוסתרים כברירת מחדל. בעזרת שיפור של התצוגה, מגדירים את המאפיין
hiddenלערך no עבור קבוצת המשנה של השדות שרוצים להציג ב-Explore. אם שדה מסוים לא מופיע כמו שציפיתם, אפשר לערוך את מאפיין השדה כדי לפתור את הבעיה. - המאפיינים
View_labelו-group_labelמשמשים לארגון שדות בתוך ניתוח ב-Explore, במקומות שבהם זה רלוונטי. - לגבי שדות שמשמשים בכמה תצוגות מפורטות, מאפיינים כמו label מוגדרים בתצוגה מפורטת 'משותפת', שבהמשך מורחבת לתצוגות מפורטות אחרות. הגישה הזו מרכזת את ההגדרה של הנכס ומקדמת שימוש חוזר. כל השינויים הנדרשים מתבצעים בתצוגה 'משותפת', כדי להבטיח שהשינויים ישתקפו בכל התצוגות שבהן התצוגה 'משותפת' מורחבת.
- פרמטרים שמשמשים בכמה תרשימי Explore או שדות שמפנים לכמה תצוגות מוגדרים בתצוגה של שדות בלבד עם הסיומת
_xvw. מידע נוסף זמין במאמר בנושא איך נמנעים מחוסר עקביות בדוחות של Explore.
דוגמאות לעריכה
בקטע הזה מופיעות דוגמאות להתאמות אישיות נפוצות.
ביטול ההסתרה של שדה
תצוגת הבסיס כוללת את כל המאפיינים מטבלה בסיסית. אם רוב המאפיינים לא צריכים להיות גלויים, נעשה שימוש בהיצרות כדי להסתיר את כל השדות כברירת מחדל. כדי לעשות זאת, צריך להגדיר את המאפיין fields_hidden_by_default כ-yes. הסתרנו את קבוצת המשנה של השדות שרלוונטיים ללוחות הבקרה של LookML שנכללו. בדוגמה הבאה, תצוגת הבסיס נקראת sales_orders ויש לה מאפיין שנקרא item_posnr.
view: sales_order {
sql_table_name: reporting.sales_order ;;
dimension: item_posnr {
type: string
sql: ${TABLE}.Item_POSNR
}
}
השיפור של התצוגה הזו מוגדר בקובץ עם הסיומת _rfn. ההגדרה המדויקת קובעת את מאפיין התצוגה fields_hidden_by_default לערך yes, כלומר כל השדות מוסתרים בהתחלה. כדי להציג את השדה item_posnr בתצוגה, מגדירים את המאפיין hidden לערך no.
view: +sales_order {
fields_hidden_by_default: yes
dimension: item_posnr {
hidden: no
}
}
שינוי התווית של תצוגת הפרמטרים
כמה Looker Blocks משתמשים בקבוצה משותפת של פרמטרים שמוגדרים בקובץ עצמאי. לדוגמה, בלוק Oracle EBS משתמש בקובץ otc_common_parameters_xvw. בתצוגה הזו מופיעה התווית '🔍 מסננים', שמוגדרת כקבוע בקובץ המניפסט.
כדי לשנות את התווית:
- מאתרים את הקבוע
label_view_for_filtersבקובץ המניפסט. - עורכים את הערך של הקבוע לתווית שבחרתם.
- שומרים את קובץ המניפסט.
השינוי יתעדכן אוטומטית בכל מקום שבו נעשה שימוש בקבוע
label_view_for_filters.
Manifest
constant: label_view_for_filters {
value: "My Filters"
}
לחלופין, אפשר לעבור לתצוגה otc_common_parameters_xvw ולערוך את המאפיין label לערך הרצוי.
view: otc_common_parameters_xvw {
label: "My Filters"
}
הוספת מדד חדש
אפשר להוסיף מדדים חדשים ישירות לסינון הרלוונטי. בדוגמה הבאה מוצג מדד חדש שנוסף לשיפור של הזמנות המכירה:
view: +sales_orders {
measure: customer_count {
type: count_distinct
sql: ${customer_id}
}
}
הוספת שכבת חידוד שנייה
אפשר ליצור שיפורים חדשים על בסיס שיפורים קיימים. לדוגמה, שימוש בפקודה הבאה, שבה sales_orders הוא שם של קובץ:sales_orders_rfn.viewaverage_sales
include: "/views/base/sales_orders"
view: +sales_orders {
measure: average_sales {
type: average
sql: ${order_value}
}
}
כדי ליצור קובץ שיפור שני:
- יוצרים קובץ חדש לשיפור הנתונים: נותנים לו את השם
sales_orders_rfn2.view. - כולל את קובץ השיפור הראשון: כל ההגדרות מ-
sales_orders_rfnייכללו ב-sales_orders_rfn2. - עריכת מאפיין התווית: משנים את המאפיין
labelשלaverage_salesל-average spend או לתווית אחרת שתבחרו. הוספת מאפיין חדש: כוללים את הקוד של המאפיין החדש בקובץ
sales_orders_rfn2.view.include: "/views/core/sales_orders_rfn.view" view: +sales_orders { measure: average_sales { label: "Average Spend" } dimension: customer_name_with_id { type: string sql: CONCAT(${customer_id},' ',${customer_name}) } }הכללת קובץ שיפור שני ב-Explore: כל ההגדרות והשיפורים מ-
sales_orders_rfn2ייכללו ב-Explore.include: "/views/core/sales_orders_rfn2.view" explore: sales_orders { }
יצירת שכבת סינון חדשה
אפשר להחליף את העידון של כל תצוגת בסיס שמוגדרת ב-Cortex Framework בלוק של Looker אם היא לא עונה על הדרישות הספציפיות שלכם. אפשר לערוך ישירות את קובץ _rfn כדי להסיר הגדרות שדות לא נחוצות או להוסיף הגדרות חדשות.
אפשרות אחרת היא ליצור קובץ חדש של הגדרות מדויקות:
- יוצרים קובץ חדש לשיפור ההגדרות: נותנים לו את השם
sales_invoices_rfnושומרים אותו. - הכללת תצוגת הבסיס: כל ההגדרות מתצוגת הבסיס
sales_invoicesייכללו בתצוגהsales_invoices_rfn. הוספת ההתאמות האישיות שנבחרו: חשוב להגדיר גם מאפיין כמפתח ראשי.
include: "/views/base/sales_invoices.view" view: +sales_invoices { fields_hidden_by_default: yes dimension: invoice_id { hidden: no primary_key: yes value_format_name: id } dimension: business_unit_name { hidden: no sql: CONCAT(${business_unit_id}, ":",${TABLE}.BUSINESS_UNIT_NAME) ;; } }כוללים את הזיקוק החדש ב-Explore: משתמשים בקובץ החדש בנכס
includeבמקום בזיקוק שמופיע ב-Cortex Framework בלוק של Looker.include: "/views/my_customizations/sales_invoices_rfn.view" explore: sales_invoices { }
עריכת מסננים במרכז שליטה של LookML
הקבוצה הנפוצה של מסנני מרכז הבקרה שמשמשים בכמה מרכזי בקרה של LookML מוגדרת במרכז בקרה ששמו מסתיים ב-_template, והיא מורחבת לכל מרכז בקרה. אחרי ההרחבה, אפשר לשנות את אובייקטי המסנן לפי הצורך עבור לוח בקרה ספציפי.
עריכה של כל מרכזי הבקרה
כדי לשנות את סוג המסנן בכל לוחות הבקרה, מאתרים את קובץ התבנית שמגדיר את המסנן. עורכים את סוג המאפיין ui_config ואת מאפייני התצוגה לפי ההגדרות הרצויות. השינוי הזה יחול על כל מרכזי הבקרה שמרחיבים את התבנית. דוגמה לקובץ otc_template.dashboard:
- dashboard: otc_template
extension: required
filters:
- name: customer_country
title: "Sold to Customer: Country"
type: field_filter
default_value: ''
allow_multiple_values: true
required: false
ui_config:
type: dropdown_menu
display: popover
explore: countries_md
field: countries_md.country_name_landx
עריכה של לוח בקרה ספציפי
כדי לשנות מסנן בלוח בקרה ספציפי, מאתרים את קובץ לוח הבקרה וכוללים את שם המסנן יחד עם המאפיינים שנבחרו שצריך לשנות. השינוי הזה יחול רק על לוח הבקרה הזה. לדוגמה,
כדי לשנות את הכותרת, את סוג ממשק המשתמש ואת התצוגה של customer_country
המסנן של otc_order_status.dashboard, רק המאפיינים האלה ייכללו בקובץ של לוח הבקרה. שאר המאפיינים יועברו בירושה מהתבנית המורחבת.
- dashboard: otc_order_status
title: Order Status
extends: otc_template
filters:
- name: customer_country
title: "Customer Country"
ui_config:
type: dropdown_menu
display: inline
מידע נוסף על יצירה ושינוי של מרכזי בקרה ב-LookML זמין במאמר יצירת מרכזי בקרה ב-LookML.