test

Usage

test: historic_revenue_is_accurate {
  explore_source:  orders {
    column:  total_revenue {
      field:  orders.total_revenue 
    }
    filters: [orders.created_date:  "2017"]
  }
  assert:  revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}
היררכיה
test

- או -

test

- או -

test
ערך ברירת המחדל
ללא

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

הגדרה

ב-Looker יש כלי לאימות LookML שמאמת שהקוד של LookML תקף מבחינת התחביר, וכלי לאימות התוכן שמאמת הפניות לאובייקטים בין התוכן למודל.

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

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

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

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

למבחן נתונים לא יכול להיות אותו שם וexplore_source כמו למבחן נתונים אחר באותו פרויקט. אם אתם משתמשים באותו explore_source לכמה בדיקות נתונים בפרויקט, חשוב לוודא שכל בדיקות הנתונים נקראות בשם ייחודי.

הפרמטר test כולל את הפרמטרים המשניים הבאים:

  • explore_source: הגדרת השאילתה שתשמש בבדיקת הנתונים.
  • assert: הגדרה של ביטוי Looker שמופעל בכל שורה של שאילתת הבדיקה כדי לאמת את הנתונים.

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

יש כמה דרכים להתחיל בדיקות נתונים בפרויקט:

  1. אם הגדרתם את הגדרות הפרויקט כך שנדרש לעבור בדיקות נתונים לפני פריסת הקבצים בסביבת הייצור, אחרי שתבצעו שמירה של השינויים בפרויקט, בסביבת הפיתוח המשולבת יופיע הלחצן הרצת בדיקות. כל הבדיקות של הפרויקט יופעלו, לא משנה באיזה קובץ מוגדרת הבדיקה. כדי להטמיע את השינויים בסביבת הייצור, צריך לעבור את בדיקות הנתונים.
  2. בחלונית Project Health, לוחצים על הלחצן Run Data Tests. כל בדיקות הנתונים בפרויקט יופעלו, לא משנה באיזה קובץ מוגדרת הבדיקה.
  3. בתפריט הקובץ, בוחרים באפשרות Run LookML Tests (הפעלת בדיקות LookML). הפעולה הזו תריץ רק את הבדיקות שמוגדרות בקובץ הנוכחי.

אחרי שמריצים את בדיקות הנתונים, ההתקדמות והתוצאות מוצגות בחלונית Project Health.

אפשר ללחוץ על הקישור Explore Query (ניתוח השאילתה) בכל תוצאת בדיקה כדי לפתוח ניתוח עם השאילתה שמוגדרת בבדיקת הנתונים.

explore_source

הפרמטר explore_source בבדיקת נתונים משתמש באותו תחביר ובאותה לוגיקה כמו הפרמטר explore_source של טבלה נגזרת. ההבדל היחיד הוא שפרמטר המשנה explore_source של בדיקת נתונים לא תומך בפרמטרים derived_column, bind_filters ו-bind_all_filters.

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

הערות לגבי explore_source של בדיקת נתונים:

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

  • אי אפשר להשתמש בexplore עם extension: required כexplore_source עבור בדיקת נתונים. כלי התיקוף של LookML יציג שגיאה שאי אפשר למצוא את explore_source.

assert

פרמטר המשנה assert מגדיר את הקריטריונים שלפיהם התוצאה של השאילתה explore_source נחשבת לתקינה. תת-הפרמטר expression מקבל ביטוי של Looker שמוביל לתוצאה yesno (בוליאנית). אחרי שמריצים את השאילתה explore_source, הביטוי של הטענה מוערך עבור כל שורה של קבוצת התוצאות של השאילתה. אם יש תשובה no בשורה כלשהי של השאילתה, בדיקת הנתונים נכשלת. אם יש שגיאות בשאילתה עצמה, הבדיקה תיכשל גם כן.

בבדיקה יכולות להיות כמה הצהרות assert. כדי שהבדיקה תעבור, כל טענה צריכה להיות נכונה לכל שורה בשאילתת explore_source.

טיפ שימושי: אפשר להשתמש בתיבת הדו-שיח חישובים בטבלה כדי לבדוק את תחביר הביטוי של Looker שבו רוצים להשתמש בפרמטר expression של הבדיקה.

כדי להשתמש בשדות בבדיקות נתונים, צריך להגדיר את ההיקף שלהם באופן מלא בביטוי של Looker, כלומר לציין אותם בפורמט view_name.field_name. לדוגמה, הביטוי הבא מגדיר את השדה כ-aircraft_engine_types.aircraft_engine_type_id:

assert: engine_type_id_not_null {
  expression: NOT is_null(${aircraft_engine_types.aircraft_engine_type_id}) ;;
}

דוגמאות

איך מוודאים שמפתח ראשי הוא ייחודי

בבדיקת הנתונים הבאה נוצרת שאילתה מתוך orders Explore ומוגדרת expression כדי לבדוק שמספרי ההזמנות הם ייחודיים בקבוצת התוצאות. השאילתה explore_source יוצרת ספירה של השורות שמשויכות לכל מזהה במסד הנתונים. אם המזהה ייחודי, במסד הנתונים צריכה להיות רק שורה אחת לכל מזהה. בנוסף, היא ממיינת לפי הספירה ומגבילה את קבוצת התוצאות לשורה אחת, כך שהתשובה לשאילתה תהיה המזהה עם הספירה הכי גבוהה. אם יש מזהה עם מספר גדול מ-1, אנחנו יודעים שיש כמה שורות עם המזהה הזה, ולכן המזהה לא ייחודי. אם זה המצב, בדיקת הנתונים הזו תיכשל.

test: order_id_is_unique {
  explore_source: orders {
    column: id {}
    column: count {}
    sorts: [orders.count: desc]
    limit: 1
  }
  assert: order_id_is_unique {
    expression: ${orders.count} = 1 ;;
  }

אימות של ערך ידוע

בבדיקת הנתונים הבאה נבדוק שהערך של ההכנסה בשנת 2017 הוא תמיד 626,000$. במערך הנתונים הזה, זהו ערך ידוע שאסור שישתנה.

test: historic_revenue_is_accurate {
  explore_source: orders {
    column: total_revenue {
      field: orders.total_revenue
    }
    filters: [orders.created_date: "2017"]
  }
  assert: revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}

אישור שאין ערכי null

בבדיקת הנתונים הבאה נבדק שאין ערכים ריקים בנתונים. השאילתה explore_source משתמשת ב-sort כדי לוודא שערכי null יוחזרו בראש השאילתה. המיון של ערכי null יכול להשתנות בהתאם לניב. בדוגמה הבאה נעשה שימוש ב-desc: yes.


test: status_is_not_null {
  explore_source: orders {
    column: status {}
    sorts: [orders.status: desc]
    limit: 1
  }
  assert: status_is_not_null {
    expression: NOT is_null(${orders.status}) ;;
  }
}