מידע על הצהרות
טענה היא שאילתת בדיקה של איכות הנתונים שמאתרת שורות שמפירות תנאי אחד או יותר שצוינו בשאילתה. אם השאילתה מחזירה שורות כלשהן, הטענה נכשלת. Dataform מריץ הצהרות בכל פעם שהוא מעדכן את תהליך העבודה, והוא מתריע אם הצהרה כלשהי נכשלת.
Dataform יוצר באופן אוטומטי תצוגות ב-BigQuery שמכילות את התוצאות של שאילתות טענות שעברו קומפילציה. כפי שהוגדר בקובץ הגדרות תהליך העבודה, Dataform יוצר את התצוגות האלה בסכימת טענות, שבה אפשר לבדוק את תוצאות הטענות.
לדוגמה, עבור סכימת ברירת המחדל dataform_assertions, Dataform יוצר תצוגה ב-BigQuery בפורמט הבא:
dataform_assertions.assertion_name.
אפשר ליצור הצהרות לכל סוגי הטבלאות ב-Dataform: טבלאות, טבלאות מצטברות, תצוגות (views) ותצוגות חומריות (materialized views).
אפשר ליצור הצהרות בדרכים הבאות:
הוספת טענות מובנות לבלוק ההגדרות של טבלה
אפשר להוסיף הצהרות מובנות לבלוק
configשל טבלה ולציין את התנאים שלהן.הוספת הצהרות ידניות בקובץ SQLX נפרד.
אתם יכולים לכתוב טענות מותאמות אישית באופן ידני בקובץ SQLX נפרד לתרחישי שימוש מתקדמים או למערכי נתונים שלא נוצרו על ידי Dataform.
לפני שמתחילים
נכנסים לדף Dataform במסוף Google Cloud .
בוחרים מאגר או יוצרים מאגר.
בוחרים או יוצרים סביבת עבודה לפיתוח.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות ליצירת טענות נכוֹנוּת (assertion), צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד Dataform Editor (roles/dataform.editor) בסביבות עבודה.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת טענות מובנות
אפשר להוסיף הצהרות מובנות של 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
כדי להוסיף הצהרות לבלוק ההגדרות של טבלה, פועלים לפי השלבים הבאים:
- בסביבת העבודה לפיתוח, בחלונית Files (קבצים), בוחרים קובץ SQLX של הגדרת טבלה.
- בבלוק
configשל קובץ הטבלה, מזיניםassertions: {}. - בתוך
assertions: {}, מוסיפים את הטענות. - אופציונלי: לוחצים על עיצוב.
בדוגמת הקוד הבאה אפשר לראות את התנאים שנוספו לבלוק 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 חדש, פועלים לפי השלבים הבאים:
- בחלונית קבצים, לצד
definitions/, לוחצים על סמל האפשרויות הנוספות
. - לוחצים על יצירת קובץ.
בשדה Add a file path (הוספת נתיב קובץ), מזינים את שם הקובץ ואחריו את התו
.sqlx. לדוגמה,definitions/custom_assertion.sqlx.שמות הקבצים יכולים לכלול רק מספרים, אותיות, מקפים וקווים תחתונים.
לוחצים על יצירת קובץ.
בחלונית Files, לוחצים על הקובץ החדש.
בקובץ, מזינים את הפרטים הבאים:
config { type: "assertion" }מתחת לבלוק
config, כותבים את שאילתת ה-SQL או כמה שאילתות.אופציונלי: לוחצים על עיצוב.
בדוגמת הקוד הבאה מוצגת טענה ידנית בקובץ 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
המאמרים הבאים
- מידע נוסף על סוגי הצהרות זמין במאמר בנושא Dataform API.
- כדי ללמוד איך להגדיר הצהרות באמצעות JavaScript, אפשר לעיין במאמר בנושא יצירת תהליכי עבודה באמצעות JavaScript בלבד.
- במאמר הפעלת תהליכי עבודה באופן ידני מוסבר איך להפעיל תהליכי עבודה באופן ידני.