ביטויים של Looker
ביטויים ב-Looker (לפעמים נקראים Lexp) משמשים לביצוע חישובים של:
ביטוי של Looker מורכב משילוב של הרכיבים הבאים:
NULL: הערך
NULLמציין שאין נתונים, והוא יכול להיות שימושי כשרוצים לבדוק שמשהו ריק או לא קיים.קבוע: קבוע הוא ערך קבוע שאתם מספקים. מספר כמו
7או מחרוזת כמוCompletedהם קבועים.שדה Looker: הפניה לשדה Looker, שכולל מאפיינים, מדדים וחישובים בטבלה.
אופרטור של Looker: יש כמה סוגים של אופרטורים (שמופיעים בדף התיעוד פונקציות ואופרטורים של Looker):
- אופרטורים מתמטיים (כמו
+,-,*ו-/) - אופרטורים להשוואה (כמו
=,>ו-<=) - אופרטורים לוגיים (כמו
AND,ORו-NOT)
- אופרטורים מתמטיים (כמו
פונקציה של Looker: הפונקציות האלה דומות במהותן לפונקציות של Excel. פונקציות מאפשרות לכם לשנות את הנתונים או להפנות לנתונים בדרכים מורכבות. כל הפונקציות הזמינות מפורטות בדף התיעוד בנושא פונקציות ואופרטורים ב-Looker.
יצירת ביטויים ב-Looker
חישובים בטבלה, שדות בהתאמה אישית ומסננים בהתאמה אישית משתמשים בכלי לעריכת ביטויים ב-Looker. כשמקלידים את הביטוי, Looker מציג הנחיות עם פונקציות, אופרטורים ושמות שדות שאולי תרצו להשתמש בהם.
הצגת כל ההצעות
כדי לגשת לעורך הביטויים של Looker ב'ניתוח נתונים', יוצרים חישובים בטבלה, שדה מותאם אישית או מסנן מותאם אישית.
מקלידים רווח כדי לראות רשימה של כל השדות, הפונקציות והאופרטורים שאפשר לבחור מתוכם. אם שדה מסוים נבחר כרגע ב'ניתוח נתונים', Looker מציג נקודה שחורה מימין לשדה ומציג את השדה בראש הרשימה.
התחילו להקליד בכלי לעריכת ביטויים של Looker כדי לצמצם את הרשימה לפריטים שמעניינים אתכם.
בכלי לעריכת שדות בהתאמה אישית מוצגים שדות של 'ניתוח נתונים' שנמצאים בשימוש כרגע, אם הם תואמים לפונקציה של השדה בהתאמה אישית.
הוספת שדה
כדי לכלול שדה Looker בביטוי, מתחילים להקליד את שם השדה. בזמן ההקלדה, העורך מצמצם את החיפוש לרשימה של שדות ופונקציות שמכילים את מה שהקלדתם. אפשר להקליד את שם השדה כמו שהוא מופיע בדף הניתוח, או להשתמש בשם LookML שלו אם אתם יודעים אותו.
כשבוחרים שדה מהרשימה, Looker מוסיף אותו לביטוי באמצעות השם ב-LookML בצורה ${view_name.field_name}. כך תוכלו לוודא שלכל השדות יש שמות ייחודיים בביטוי.
הוספת סכומים כוללים
אם אתם יוצרים ביטוי שמבוסס על ניתוח שבו הצגתם סכומים כוללים, אתם יכולים לכלול בביטוי גם סכומים כוללים של עמודות ושל שורות. סכומי העמודות מופיעים בעורך עם המילה Total (סך הכול) לפני שם השדה ב-LookML. לדוגמה, אם יש שדה בשם Count, Looker ייתן לסכום הכולל של העמודה בשדה הזה את השם Count - Total.
שם ה-LookML של סכומים כוללים הוא מהצורה ${view_name.field_name:total}, כאשר :total מתווסף לסוף שם השדה.
בסך הכול של השורה, המילים Row Totals (סך הכול של השורה) מופיעות לפני שם השדה בעורך. בשדה LookML name (שם LookML) של השדה, התו :row_total מתווסף לסוף שם השדה, כמו ${view_name.field_name:row_total}.
הוספת אופרטורים
אם צריך, אפשר להוסיף לביטוי אופרטורים לוגיים כמו AND, OR ו-NOT. בדרך כלל, האופרטורים AND מוערכים לפני האופרטורים OR, אבל אפשר לשנות את ההתנהגות הזו באמצעות סוגריים. אפשר גם להשתמש באופרטורים להשוואה (כמו >, = ו-<=) ובאופרטורים מתמטיים (כמו + ו-*).
כשמעבירים את הסמן מעל אופרטור, הערות לגבי שימוש נכון מוצגות בחלונית המידע.
הוספת פונקציות
כדי לכלול פונקציית Looker בביטוי, מתחילים להקליד את שם הפונקציה. בזמן ההקלדה, העורך מצמצם את החיפוש לרשימה של שדות ופונקציות שמכילים את מה שהקלדתם.
פונקציות יכולות להיות מורכבות מארגומנטים (או משתנים) שנדרש להם סוג מסוים, כמו שדה, מספר או תשובה של כן/לא. כשמעבירים את הסמן מעל פונקציה, אפשר לבדוק את ההערות שמוצגות לצד הביטוי בחלונית המידע כדי להבין אילו ארגומנטים צריך לספק, ומה הסוג שלהם.
רשימה מלאה של הפונקציות שזמינות ב-Looker מופיעה בדף התיעוד פונקציות ואופרטורים ב-Looker.
שימוש בהצעות לתיקון שגיאות ובחלונית המידע
חלונית מידע מוצגת ב-Looker לצד הכלי לעריכת ביטויים ב-Looker. בחלונית הזו מוצגים מסמכים והצעות, במיוחד אם יש שגיאה בביטוי.
בחלונית המידע שליד הכלי לעריכת ביטויים מוצג המידע הבא:
הדגשת שגיאות: Looker מציג קו אדום מתחת לכל חלק בביטוי שעדיין לא נכון.
הצעות ופרטי שגיאות: Looker מציג הצעות לגבי מה כדאי להוסיף בהמשך לביטוי. אם יש שגיאה, מופיע הסבר למה היא מתרחשת. אם יש כמה שגיאות, השגיאה שמוצגת לכם מבוססת על המיקום של הסמן.
מסמכים: Looker מציג מסמכים על הפונקציה או על האופרטור שאתם עובדים איתם, על סמך מיקום הסמן. לדוגמה, בזמן שמקלידים את הארגומנט הראשון של פונקציית
if(), Looker מספק מידע שלפיו הארגומנט הראשון צריך להחזיר את הערך true או false. אפשר ללחוץ על שם הפונקציה כדי לעבור לתיעוד שלה.
כולל תגובות
אפשר לכלול הערות בביטויי Looker על ידי הוספת הסימן # בתחילת שורת ההערה בכלי לעריכת ביטויים.
שימוש בשדות
לפעמים תרצו להשתמש בערך של שדה (מאפיין, מדד או חישוב טבלה) בביטוי. יכול להיות שתרצו להוסיף את הערך של השדה למשהו אחר, לבדוק אם יש לו ערך מסוים, לכלול אותו בפונקציה או להשתמש בו בדרכים רבות אחרות.
כמו שמתואר בקטע הקודם בדף הזה, אפשר להקליד את שם השדה בכלי לעריכת ביטויים, ו-Looker יעזור לכם למצוא את הדרך הנכונה להפניה לשדה. כשמוסיפים שדה לביטוי, Looker משתמש במזהה LookML של השדה, שנראה כך: ${view_name.field_name}. מקלידים את שם השדה כפי שהוא מופיע בכלי לבחירת שדות, ועורך הביטויים יציג את השם של הכלי לבחירת שדות ואת מזהה LookML ביחד.
יש כמה דרכים לאחזר ערך:
קבלת ערך מאותה שורה: הדרך הכי בסיסית להשתמש בשדה היא להפנות אליו ישירות. לדוגמה, יכול להיות שהביטוי שלכם ישתמש ב-
${product.category}. כשעושים את זה, אומרים למערכת: "לכל שורה נתונה, קח את קטגוריית המוצרים מהשורה הזו".קבלת ערך משורה אחרת: אפשר גם לקבל ערך של שדה משורה אחרת. לדוגמה, יכול להיות שתרצו להגדיר את הלוגיקה הבאה: "לכל שורה נתונה, צריך לאחזר את קטגוריית המוצרים מהשורה הקודמת". כדי לעשות את זה, אפשר להשתמש בפונקציית היסט (ראו את רשימת הפונקציות למיקום). פונקציית ההיסט יכולה להיראות כך:
offset(${product.category}, -1).קבלת ערך מעמודה בטבלת ציר: אפשר גם לקבל ערכים מעמודות בטבלת ציר. לדוגמה, יכול להיות שתרצו להשתמש בלוגיקה 'לכל שורה נתונה, צריך לאחזר את סך המכירות מהעמודה הראשונה אחרי הציר'. כדי לעבוד עם עמודות ציר, צריך להשתמש בפונקציות ציר (רשימת פונקציות הציר). פונקציית הציר יכולה להיראות כך:
pivot_index(${order.total_sales}, 1).קבלת סכום כולל משורה או מעמודה: אם הוספתם סכומים כוללים לניתוח, תוכלו לקבל ערכים כוללים מהעמודה או מהשורה על ידי הוספת
:total(לסכומים כוללים של עמודות) או:row_total(לסכומים כוללים של שורות) לשם השדה, בפורמט${field_name:total}. לדוגמה, אם רוצים לדעת מהו אחוז ההזמנות מתוך סך כל ההזמנות, אפשר ליצור חישוב טבלה כזה:${orders.count} / ${orders.count:total}.
שימוש באופרטורים
ביטויים ב-Looker יכולים לכלול אופרטורים לוגיים, אופרטורים להשוואה ואופרטורים מתמטיים כדי ליצור תנאים שונים:
- אופרטורים לוגיים (כמו
AND,ORו-NOT) - אופרטורים להשוואה (למשל
>ו-<) - אופרטורים מתמטיים (כמו
+ו--)
אלא אם מציינים אחרת באמצעות סוגריים, לוגיקת AND נחשבת לפני לוגיקת OR. הביטוי הבא ללא סוגריים נוספים:
if (
${order_items.days_to_process}>=4 OR
${order_items.shipping_time}>5 AND
${order_facts.is_first_purchase},
"review", "okay")
הביטוי מוערך כך:
if (
${order_items.days_to_process}>=4 OR
(${order_items.shipping_time}>5 AND ${order_facts.is_first_purchase}),
"review", "okay")
ב-Looker, צריך להשתמש ב-yes וב-no במקום ב-true וב-false. הקבועים הלוגיים האלה לא זהים למילים "yes" ו-"no", שמוקפות במרכאות. פרטים נוספים זמינים בתיאור של קבועים לוגיים.
שימוש בפונקציות
ביטויי Looker כוללים בדרך כלל פונקציה אחת או יותר, שעוזרות לאחזר נתונים מסוימים או לחשב דברים מסוימים. הן דומות במהותן לפונקציות של Excel.
הפונקציות מופיעות בצורה של שם ואחריו שני זוגות סוגריים, כמו בדוגמה הבאה: my_function(). יכול להיות שתצטרכו לספק מידע בתוך הסוגריים, כשהוא מופרד בפסיקים. חלקי המידע האלה נקראים 'ארגומנטים' והם נראים כך: my_function(argument_1, argument_2).
לדוגמה, הפונקציה now לא מקבלת ארגומנטים ומחזירה את התאריך והשעה הנוכחיים. כך משתמשים בו: now().
הפונקציה round מקבלת ארגומנט אחד, שהוא מספר. כך משתמשים בו: round(3.2). התוצאה היא 3.
יש שתי דרכים לדעת אילו ארגומנטים צריך לספק, אם בכלל:
- חלונית המידע שמופיעה לצד הכלי לעריכת ביטויים מספקת תיעוד מסוים לגבי הפונקציה שאתם כותבים. אפשר ללחוץ על שם הפונקציה כדי לעבור לתיעוד שלה.
- אפשר גם לעבור ישירות לדף התיעוד של הפונקציות והאופרטורים של Looker ולחפש את הפונקציה שרוצים להשתמש בה.
אפשר להשתמש בפונקציה contains, שהתיעוד שלה נראה כך:
| תפקיד | תחביר | מטרה |
|---|---|---|
| contains | contains(string, search_string) |
הפונקציה מחזירה Yes אם string מכיל את search_string, ומחזירה No אחרת. |
אפשר לראות שנדרשים שני ארגומנטים. השמות שלהן הם string ו-search_string, אבל זה לא אומר שצריך להקליד את המילה המדויקת "string" ו-"search_string" בפונקציה. אלה רק שמות של הארגומנטים שתחליפו במשהו. כשקוראים את המטרה, אפשר להבין ש-string צריך להיות שדה או ערך אחר שאנחנו רוצים לחפש ב, ו-search_string הוא הדבר שאנחנו רוצים לחפש אחריו. לדוגמה:
contains(${customer.feedback_text}, "great")
אם המילה 'great' מופיעה במשוב של הלקוח, הפונקציה הזו מחזירה את התוצאה Yes. אחרת, התוצאה היא No.
אפשר להשתמש בפונקציות בתוך פונקציות אחרות כדי לטפל בלוגיקה מורכבת. הפונקציה תפעל כל עוד התוצאה של הפונקציה הפנימית מתאימה לארגומנטים של הפונקציה החיצונית. לדוגמה:
contains(
if(
is_null(${customer.feedback_text}),
${customer.comment_text},
${customer.feedback_text}
),
"great")
הפונקציה is_null מוצבת בתוך הפונקציה if, שמוצבת בתוך הפונקציה contains. ככה זה עובד:
- הפונקציה
is_null()בודקת אם יש טקסט של משוב מלקוחות. - לאחר מכן, הפונקציה
if()משתמשת בתוצאה הזו ומחזירה את הטקסט של המשוב מהלקוח, אם יש כזה, או את הטקסט של התגובה מהלקוח. - לבסוף, הפונקציה
contains()משתמשת בטקסט שמוחזר על ידי הפונקציהif()ומחפשת בו את המילה great.
מבחינה לוגית, המשמעות של הביטוי הזה היא: 'אם יש משוב מלקוחות, צריך לחפש בו. אם לא, כדאי לחפש בתגובות של הלקוחות. בשני המקרים, מחפשים את המילה 'great' ".