מבוא ל-LookML

‫LookML, קיצור של Looker Modeling Language (שפת יצירת המודלים ב-Looker), היא השפה שמשמשת ב-Looker ליצירת מודלים סמנטיים של נתונים. אפשר להשתמש ב-LookML כדי לתאר מאפיינים, צבירות, חישובים ויחסי נתונים במסד נתוני SQL. ‫Looker משתמש במודל שנכתב ב-LookML כדי ליצור שאילתות SQL מול מסד נתונים מסוים.

‫LookML היא שפת תלות כמו make, בניגוד לשפה אימפרטיבית כמו C או Ruby. ‫LookML מספקת סוגי נתונים מוגדרים מראש ותחביר למידול נתונים. לא נדרש ניסיון קודם בשפות תכנות כדי להבין את LookML. ‫LookML לא תלוי בדיאלקטים ספציפיים של SQL, והוא כולל ביטויי SQL כדי לתמוך בכל הטמעה של SQL.

למנתחי נתונים, LookML מעודד סגנון DRY (אל תחזרו על עצמכם), כלומר כותבים ביטויי SQL פעם אחת, במקום אחד, ומערכת Looker משתמשת בקוד שוב ושוב כדי ליצור שאילתות SQL אד-הוק. משתמשים עסקיים יכולים להשתמש בתוצאות כדי ליצור שאילתות מורכבות ב-Looker, ולהתמקד רק בתוכן שהם צריכים, בלי להסתבך עם המבנה של SQL.

פרויקטים של LookML

הגדרות LookML מוגדרות בפרויקטים. פרויקט של LookML הוא אוסף של קבצים, כולל לפחות קבצים של מודלים וקבצי תצוגה, ואופציונלית סוגים אחרים של קבצים, שבדרך כלל מתבצע עליהם ניהול גרסאות ביחד באמצעות מאגר Git. קבצי המודל מכילים מידע על הטבלאות שבהן הפרויקט ישתמש ועל אופן הצירוף של הטבלאות. בקובצי התצוגה מתואר אופן החישוב של המידע לגבי כל טבלה (או לגבי כמה טבלאות אם הצטרפות מאפשרת זאת).

ב-LookML, המבנה מופרד מהתוכן, כך שמבנה השאילתה (איך הטבלאות מצורפות) לא תלוי בתוכן השאילתה (העמודות שאליהן רוצים לגשת, השדות הנגזרים, פונקציות הצבירה לחישוב וביטויי הסינון להחלה).

שאילתות Looker מבוססות על קובצי פרויקט LookML. מנתחי נתונים משתמשים ב-LookML כדי ליצור ולתחזק מודלים של נתונים שמגדירים את מבנה הנתונים ואת הכללים העסקיים של הנתונים שמנותחים. מחולל ה-SQL של Looker מתרגם LookML ל-SQL, וכך מאפשר למשתמשים עסקיים להריץ שאילתות בלי לכתוב LookML או SQL.

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

כשמשתמש יוצר שאילתה, היא נשלחת למחולל ה-SQL של Looker, שמתרגם את השאילתה ל-SQL. שאילתת ה-SQL מופעלת על מסד הנתונים, ואז Looker מחזיר את התוצאות המעוצבות למשתמש בממשק 'ניתוח נתונים'. לאחר מכן המשתמש יכול להציג את התוצאות בצורה ויזואלית וליצור תובנות.

פרטים נוספים על רכיבי LookML הבסיסיים בפרויקט ועל הקשר ביניהם זמינים במאמר מונחים ומושגים ב-LookML.

מה המשתמשים רואים

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

  1. החלונית 'ניתוח נתונים' בחלונית הניווט הימנית מאורגנת לפי שמות של מודלים. מתחת לכל שם של מודל תופיע רשימה של ניתוחים שמוגדרים במודל הזה.
  2. המשתמשים יכולים לחפש ניתוח ספציפי ב-Explore.
  3. מפתחים יכולים להגדיר תיאורים לכרטיסיות 'מה חדש', והמשתמשים יכולים לראות אותם כשמעבירים את העכבר מעל שם הכרטיסייה בתפריט מה חדש.

  4. החלונית בוחר השדות מאורגנת לפי שמות התצוגות המפורטות. מתחת לכל שם של תצוגה מופיעה רשימה של השדות הזמינים מהטבלאות שכלולות בתצוגה הזו. ברוב התצוגות מופיעים גם מאפיינים וגם מדדים. בדוגמה הזו נבחר מאפיין Month מתוך קבוצת מאפיינים Returned Date, שהוגדרה בקובץ התצוגה המפורטת.

  5. המשתמשים יכולים לבחור כמה מדדים שעל בסיסם תתבצע השאילתה.

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

  7. המשתמשים יכולים לשפר את התנאים של השאילתה.

  8. המשתמשים יכולים לבחור סוג של רכיב חזותי להחלה על תוצאות השאילתה.

  9. הפעלת הניתוח הזה ב-Explore יוצרת שאילתת SQL שמחזירה גם טבלת נתונים וגם תרשים של מחיר המכירה הכולל והרווח הגולמי הכולל של ההזמנות שהוחזרו בשנה האחרונה.

דוגמת קוד

בדוגמת הקוד הבאה מוצג פרויקט של LookML מינימלי לחנות מסחר אלקטרוני, שיש לו קובץ מודל – ecommercestore.model.lkml – ושני קובצי תצוגה – orders.view.lkml ו-customers.view.lkml:

######################################
# FILE: ecommercestore.model.lkml    #
# Define the explores and join logic #
######################################
connection: order_database
include: "*.view.lkml"
explore: orders {
  join: customers {
    sql_on: ${orders.customer_id} = ${customers.id} ;;
  }
}

##########################################################
# FILE: orders.view.lkml                                 #
# Define the dimensions and measures for the ORDERS view #
##########################################################
view: orders {
  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
  dimension: customer_id {      # field: orders.customer_id
    sql: ${TABLE}.customer_id ;;
  }
  dimension: amount {           # field: orders.amount
    type: number
    value_format: "0.00"
    sql: ${TABLE}.amount ;;
  }
  dimension_group: created {                # generates fields:
    type: time                              # orders.created_time, orders.created_date
    timeframes: [time, date, week, month]   # orders.created_week, orders.created_month
    sql: ${TABLE}.created_at ;;
  }
  measure: count {             # field: orders.count
    type: count                # creates a sql COUNT(*)
    drill_fields: [drill_set*] # list of fields to show when someone clicks 'ORDERS Count'
  }
  measure: total_amount {
    type: sum
    sql: ${amount} ;;
  }
  set: drill_set {
    fields: [id, created_time, customers.name, amount]
  }
}

#############################################################
# FILE: customers.view.lkml                                 #
# Define the dimensions and measures for the CUSTOMERS view #
#############################################################
view: customers {
  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
  dimension: city {                    # field: customers.city
    sql: ${TABLE}.city ;;
  }
  dimension: state {                   # field: customers.state
    sql: ${TABLE}.state ;;
  }
  dimension: name {
    sql: CONCAT(${TABLE}.firstname, " ", ${TABLE}.lastname) ;;
  }
  measure: count {             # field: customers.count
    type: count                # creates a sql COUNT(*)
    drill_fields: [drill_set*] # fields to show when someone clicks 'CUSTOMERS Count'
  }
  set: drill_set {                     # set: customers.drill_set
    fields: [id, state, orders.count]  # list of fields to show when someone clicks 'CUSTOMERS Count'
  }
}

מקורות מידע נוספים

אם אתם חדשים בפיתוח LookML, כדאי להשתמש במשאבים שמתוארים בקטעים הבאים כדי ללמוד מהר יותר:

קבלת גישה לסביבת הלמידה של Looker

מומלץ לעיין בקורסים ב-Google Cloud Skills Boost.

איך משתמשים ב-Looker כדי לשלוח שאילתות ולנתח נתונים

היכולת לחקור נתונים ב-Looker תעזור לכם מאוד כשתיצרו מודלים של נתונים ב-LookML. אם אתם לא יודעים איך להשתמש ב-Looker כדי להריץ שאילתות, לסנן נתונים ולבצע עליהם Drill-down, מומלץ לעיין במקורות המידע הבאים:

כדאי לעיין ביסודות של SQL לפני שמתחילים ללמוד LookML

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

אם אתם צריכים לרענן את הידע שלכם ב-SQL, הנה כמה מהמקורות המועדפים עלינו:

היכרות עם יסודות LookML

מקורות המידע האלה יעזרו לכם להתחיל ללמוד LookML. אתם יכולים להשתמש בחשבון הלמידה כדי להתנסות בדפוסי עיצוב שונים.

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