בדיקת איכות הנתונים

במאמר הזה מוסבר איך להשתמש ב-Dataform core כדי ליצור טענות לגבי טבלאות ב-Dataform ולבדוק את קוד תהליך העבודה.

מידע על הצהרות

טענה היא שאילתת בדיקה של איכות הנתונים שמאתרת שורות שמפירות תנאי אחד או יותר שצוינו בשאילתה. אם השאילתה מחזירה שורות כלשהן, הטענה נכשלת. ‫Dataform מפעיל טענות בכל פעם שהוא מעדכן את תהליך העבודה, ושולח לכם התראה אם טענה כלשהי נכשלת.

‫Dataform יוצר באופן אוטומטי תצוגות ב-BigQuery שמכילות את התוצאות של שאילתות טענות שעברו קומפילציה. כפי שהוגדר בקובץ הגדרות תהליך העבודה,‏ Dataform יוצר את התצוגות האלה בסכימת טענות, שבה אפשר לבדוק את תוצאות הטענות.

לדוגמה, עבור סכימת ברירת המחדל dataform_assertions, ‏ Dataform יוצר תצוגה ב-BigQuery בפורמט הבא: dataform_assertions.assertion_name.

אפשר ליצור הצהרות לכל סוגי הטבלאות ב-Dataform: טבלאות, טבלאות מצטברות, תצוגות (views) ותצוגות חומריות (materialized views).

אפשר ליצור הצהרות בדרכים הבאות:

לפני שמתחילים

  1. נכנסים לדף Dataform במסוף Google Cloud .

    מעבר אל Dataform

  2. בוחרים מאגר או יוצרים מאגר.

  3. בוחרים או יוצרים סביבת עבודה לפיתוח.

  4. יצירת טבלה

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירת טענות נכוֹנוּת (assertion), צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

  • Dataform Editor (roles/dataform.editor) בסביבת העבודה
  • כדי לסנכרן מטא-נתונים עם Knowledge Catalog: Dataplex Catalog Editor (roles/dataplex.catalogEditor) בפרויקט או בקבוצת הרשומות @bigquery

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

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

יצירת טענות מובנות

אפשר להוסיף הצהרות מובנות של Dataform לבלוק config של טבלה. ‫Dataform מריץ את ההצהרות האלה אחרי יצירת הטבלה. אחרי ש-Dataform יוצר את הטבלה, אפשר לראות אם האימות עבר בהצלחה בכרטיסייה Workflow execution logs של סביבת העבודה.

אפשר ליצור את הטענות הבאות בבלוק config של טבלה:

  • nonNull

    התנאי הזה קובע שהעמודות שצוינו לא יכולות להיות ריקות בכל השורות בטבלה. התנאי הזה משמש לעמודות שלעולם לא יכולות להיות null.

    בדוגמת הקוד הבאה מוצגת טענת nonNull בבלוק config של טבלה:

config {
  type: "table",
  assertions: {
    nonNull: ["user_id", "customer_id", "email"]
  }
}
SELECT ...
  • rowConditions

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

    בדוגמת קוד הבאה מוצגת טענת נכוֹנוּת (assertion) rowConditions בהתאמה אישית בבלוק config של טבלה מצטברת:

config {
  type: "incremental",
  assertions: {
    rowConditions: [
      'signup_date is null or signup_date > "2022-08-01"',
      'email like "%@%.%"'
    ]
  }
}
SELECT ...
  • uniqueKey

    התנאי הזה קובע שבעמודה שצוינה, לאף שורה בטבלה אין את אותו הערך.

    בדוגמה הבאה של קוד אפשר לראות טענת uniqueKey בבלוק config של תצוגה:

config {
  type: "view",
  assertions: {
    uniqueKey: ["user_id"]
  }
}
SELECT ...
  • uniqueKeys

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

    בדוגמת הקוד הבאה מוצגת טענת uniqueKeys בבלוק config של טבלה:

config {
  type: "table",
  assertions: {
    uniqueKeys: [["user_id"], ["signup_date", "customer_id"]]
  }
}
SELECT ...

הוספת טענות נכוֹנוּת (assertions) לבלוק config

כדי להוסיף הצהרות לבלוק ההגדרות של טבלה, פועלים לפי השלבים הבאים:

  1. בסביבת העבודה לפיתוח, בחלונית Files (קבצים), בוחרים קובץ SQLX של הגדרת טבלה.
  2. בבלוק config של קובץ הטבלה, מזינים assertions: {}.
  3. בתוך assertions: {}, מוסיפים את הטענות.
  4. אופציונלי: לוחצים על עיצוב.

בדוגמת הקוד הבאה אפשר לראות את התנאים שנוספו לבלוק config:

config {
  type: "table",
  assertions: {
    uniqueKey: ["user_id"],
    nonNull: ["user_id", "customer_id"],
    rowConditions: [
      'signup_date is null or signup_date > "2019-01-01"',
      'email like "%@%.%"'
    ]
  }
}
SELECT ...

יצירת הצהרות ידניות באמצעות SQLX

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

כדי להוסיף הצהרות ידניות בקובץ SQLX חדש, פועלים לפי השלבים הבאים:

  1. בחלונית קבצים, לצד definitions/, לוחצים על סמל האפשרויות הנוספות .
  2. לוחצים על יצירת קובץ.
  3. בשדה Add a file path (הוספת נתיב קובץ), מזינים את שם הקובץ ואחריו את התו .sqlx. לדוגמה, definitions/custom_assertion.sqlx.

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

  4. לוחצים על יצירת קובץ.

  5. בחלונית קבצים, לוחצים על הקובץ החדש.

  6. בקובץ, מזינים את הפרטים הבאים:

    config {
      type: "assertion"
    }
    
  7. מתחת לבלוק config, כותבים את שאילתת ה-SQL או כמה שאילתות.

  8. אופציונלי: לוחצים על עיצוב.

בדוגמת הקוד הבאה מוצגת טענה ידנית בקובץ SQLX, שקובעת שהשדות A, ‏ B ו-c אף פעם לא יהיו NULL ב-sometable:

config { type: "assertion" }

SELECT
  *
FROM
  ${ref("sometable")}
WHERE
  a IS NULL
  OR b IS NULL
  OR c IS NULL

המאמרים הבאים