כלי לאימות 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 יפעל. האפשרויות מתוארות בסעיפים הבאים בדף הזה:

ניתוחים לחיפוש שאילתות

כברירת מחדל, כלי התיקוף של 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.

Fail fast

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

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

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

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

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

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

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

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

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

אימות מצטבר

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

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

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

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

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

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