כלי לאימות SQL באינטגרציה רציפה

כלי התיקוף של SQL של אינטגרציה רציפה (CI) מוודא שהמאפיינים ב-Explores פועלים בצורה תקינה מול מסד הנתונים. כדי לעשות את זה, כלי האימות של SQL מריץ סדרה של שאילתות ב-Explores בפרויקט של LookML.

כברירת מחדל, הכלי לאימות SQL מבצע את המשימות הבאות:

  1. לכל ניתוח בפרויקט, כלי אימות ה-SQL מריץ שאילתת ניתוח שכוללת כל מאפיין בניתוח.
  2. אם Looker מחזיר שגיאה לגבי שאילתת הניתוח, כלי אימות ה-SQL יפעיל שאילתת ניתוח נפרדת לכל מאפיין בניתוח.

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

בקטע אפשרויות של כלי האימות של SQL בדף הזה מפורטות האפשרויות שאפשר להגדיר כשיוצרים או עורכים חבילת בדיקות CI. מידע על הפעלת כלי התיקוף של SQL מופיע בדף מאמרי העזרה בנושא הפעלת חבילות של אינטגרציה רציפה (CI).

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

דף התוצאות של אינטגרציה רציפה שבו מוצגים הממצאים של כלי האימות של SQL

צריכת משאבים

כלי האימות של SQL מיועד לצרוך את המינימום האפשרי של משאבים ב-Looker ובמחסן הנתונים. כל השאילתות של כלי האימות של SQL כוללות את הסעיפים LIMIT 0 ו-WHERE 1=2. הסעיפים האלה למעשה מנחים את מתכנן השאילתות במחסן הנתונים לא לעבד נתונים, אלא לבדוק את התוקף של ה-SQL.

לדוגמה, ב-BigQuery, סוג השאילתה הזה דומה להרצת שאילתת הרצה יבשה ב-BigQuery. ב-BigQuery, שאילתות LIMIT 0 לא סורקות נתונים, ולכן לא אמורים לחייב אתכם על השאילתות שכלי התיקוף של SQL מריץ.

החרגת מאפיינים מאימות SQL

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

אפשר גם להחריג מאפיינים שלא כוללים פרמטר sql, כמו מאפיינים של type: distance,‏ type: location או type: duration.

כדי להחריג מאפיין מאימות SQL, אפשר לשנות את ה-LookML של המאפיין באחת משתי דרכים:

  • אפשר להוסיף הצהרת ci: ignore לפרמטר tags בהגדרת המאפיין ב-LookML, כמו בדוגמה הבאה:

    dimension: addresses {
      sql: ${TABLE}.addresses ;;
      tags: ["ci: ignore"]
    }
    
  • אפשר להוסיף את התגובה -- ci: ignore לשדה sql של מאפיין LookML, כמו בדוגמה הבאה:

    dimension: addresses {
      sql:
        -- ci: ignore
        ${TABLE}.addresses ;;
    }
    

אפשרויות של כלי האימות של SQL

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

שאילתות ב-Explore

כברירת מחדל, כלי התיקוף של SQL יריץ אימות SQL בכל המודלים ובכל ה-Explores בפרויקט LookML.

אפשר להשתמש בשדה Explores to query כדי לציין את ה-Explores והמודלים שרוצים לכלול באימות ה-SQL.

אפשר לציין את הניתוחים בפורמט הבא: model_name/explore_name

שימו לב לנקודות הבאות:

  • במקום model_name, משתמשים בשם של קובץ המודל בלי הסיומת .model.lkml. לדוגמה, כדי לציין את המודל שמוגדר ב-thelook.model.lkml, מזינים thelook.
  • במקום explore_name, משתמשים ב-explore_name מפרמטר LookML‏ explore. לדוגמה, כדי לציין את ה-Explore שמוגדר כ-explore: users בפרויקט LookML, מזינים users.
  • אפשר ליצור רשימה מופרדת בפסיקים כדי לציין כמה חיפושים.
  • אפשר להשתמש בתו הכללי לחיפוש * ב-model_name או ב-explore_name.

הנה כמה דוגמאות:

  • כדי לציין רק את הניתוח Users שמוגדר עם explore: users בקובץ thelook.model.lkml, מזינים את הטקסט הבא:

    thelook/users
    
  • כדי לציין את ניתוחי הנתונים שנקראים users ו-orders בקובץ thelook.model.lkml, מזינים את הטקסט הבא:

    thelook/users, thelook/orders
    
  • כדי לציין את כל הניתוחים ב-thelook.model.lkml, מזינים את הטקסט הבא:

    thelook/*
    
  • כדי לציין כל Explore בשם users בכל המודלים בפרויקט, מזינים את הטקסט הבא:

    */users
    

ניתוחים להחרגה

כברירת מחדל, כלי התיקוף של SQL יריץ אימות SQL בכל המודלים ובכל ה-Explores בפרויקט LookML.

אתם יכולים להשתמש בשדה Explores to exclude כדי לציין את הניתוחים והמודלים שאתם רוצים להחריג מאימות ה-SQL.

אפשר לציין את הניתוחים בפורמט הבא: model_name/explore_name

מידע נוסף על הגדרת Explores עבור כלי האימות של SQL זמין בקטע Explores to query.

כישלון מהיר

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

כדי לבצע אימות מהיר יותר, אפשר להפעיל את האפשרות Fail fast (כשל מהיר) כדי שכלי האימות של SQL יריץ רק את השאילתה הראשונית של ניתוח ב-Explore, כלומר את השאילתה שמכילה את כל המאפיינים בבת אחת. אם השאילתה הזו מחזירה שגיאה, המאמת של SQL יציג את השגיאה הזו בתוצאות של הרצת ה-CI, וימשיך לאימות של ה-Explore הבא.

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

התעלמות מהסתרת תמונות

אם רוצים שהכלי לאימות SQL יתעלם מהמאפיינים מסוג Dimension ב-LookML שהמפתחים ב-Looker הגדירו באמצעות hidden: yes, צריך להפעיל את השדה התעלמות ממאפיינים מוסתרים. כלי האימות של SQL לא יכלול את המאפיינים האלה בשאילתות של Explore במהלך האימות.

בו-זמניות (concurrency) של שאילתות

כברירת מחדל, כלי האימות של SQL מריץ עד 10 שאילתות בכל פעם כדי למנוע עומס יתר על מופע Looker. אפשר להשתמש בשדה Query concurrency כדי לציין מספר מקסימלי שונה של שאילתות שכלי ה-SQL Validator יכול להריץ בו-זמנית.

הערך המקסימלי בשדה Query concurrency מוגבל להגדרה Max concurrent queries for this connection בחיבור למסד הנתונים.

אם אתם מבחינים בהאטה במופע Looker בזמן הפעלת אימות SQL, אתם יכולים להקטין את הערך הזה.

אימות מצטבר

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

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

בתוצאות של כלי האימות, כלי האימות של SQL מציין כל ניתוח Explore שדילג עליו כי לא בוצעו שינויים ב-SQL המהודר שלו בענף או בהתחייבות שעוברים אימות. במאמר בנושא עיון בתוצאות של אימות מצטבר מופיעה דוגמה לתוצאות של אימות מצטבר.

כדי להפעיל אימות מצטבר של כלי האימות של SQL, מסמנים את תיבת הסימון Only incremental errors (שגיאות מצטברות בלבד) בקטע SQL Validator (כלי האימות של SQL) כשיוצרים או עורכים חבילת שילוב רציף.

הערות לגבי אימות מצטבר:

  • ההגדרה של אימות מצטבר לא חלה כשכלי האימות של SQL מאמת את ענף הייצור עצמו, למשל בהרצות ידניות בענף הייצור. כשמאמתים את ענף הייצור, כלי האימות של SQL מריץ אימות מלא.
  • אין תמיכה במצב Fail fast בהרצות של אימות מצטבר, כי נדרשות שאילתות של מאפיינים ספציפיים כדי לחשוף את השגיאות המצטברות שספציפיות לענף פיתוח של הפרויקט.