במסמך הזה אנחנו מציגים מושגים ותהליכים ב-Dataform.
Dataform הוא שירות שמאפשר לנתח נתונים לפתח, לבדוק, לשלוט בגרסאות ולתזמן תהליכי עבודה מורכבים לשינוי נתונים ב-BigQuery.
Dataform מאפשר לכם לנהל את הטרנספורמציה של הנתונים בתהליך החילוץ, הטעינה והטרנספורמציה (ELT) של שילוב הנתונים. אחרי שנתונים גולמיים מחולצים ממערכות המקור ונפרסים ב-BigQuery, Dataform עוזר להפוך אותם לחבילה מוגדרת היטב, שנבדקה ומתועדת של טבלאות נתונים.
בעזרת Dataform אפשר לבצע את פעולות השינוי הבאות בנתונים:
- פיתוח והרצה של תהליכי עבודה לטרנספורמציה של נתונים.
- שיתוף פעולה עם חברי הצוות בפיתוח תהליכי עבודה באמצעות Git.
- לנהל מספר גדול של טבלאות ואת יחסי התלות שלהן.
- הצהרה על נתוני המקור וניהול יחסי התלות של הטבלה.
- הצגת המחשה ויזואלית של עץ התלות של זרימת העבודה.
- ניהול נתונים באמצעות קוד SQL במאגר מרכזי.
- שימוש חוזר בקוד באמצעות JavaScript.
- בודקים את נכונות הנתונים באמצעות בדיקות איכות בטבלאות המקור ובטבלאות הפלט.
- ניהול גרסאות של קוד SQL.
- טבלאות נתונים של מסמכים בתוך קוד SQL.
תהליכי טרנספורמציה של נתונים ב-Dataform
תהליך העבודה של המרת נתונים ב-Dataform הוא כזה:
- ב-Dataform אפשר ליצור מאגרי מידע כדי לנהל את הקוד.
- ב-Dataform אפשר ליצור סביבות עבודה לפיתוח.
- ב-Dataform אפשר לפתח תהליכי עבודה בסביבת עבודה לפיתוח.
- Dataform מהדר את Dataform Core ל-SQL.
- Dataform מריץ את עץ התלות.
Dataform מאפשר ליצור מאגרים לניהול הקוד
במאגר של Dataform, משתמשים ב-Dataform core, תוסף של SQL, כדי לכתוב קובצי SQLX שבהם מגדירים את תהליך העבודה. מאגרי Dataform תומכים בניהול גרסאות. אפשר לקשר מאגר Dataform לספק Git מצד שלישי.
ב-Dataform אפשר ליצור סביבות עבודה לפיתוח
אתם יכולים ליצור סביבות עבודה לפיתוח במאגר Dataform לפיתוח ליבת Dataform. בסביבת עבודה לפיתוח, אתם יכולים לבצע שינויים במאגר, לקמפל, לבדוק ולהעביר אותם למאגר הראשי באמצעות Git.
פיתוח Dataform core בסביבת עבודה לפיתוח באמצעות Dataform
בסביבת עבודה לפיתוח, אתם יכולים להגדיר ולתעד טבלאות, את התלות שלהן ואת לוגיקת השינוי כדי לבנות את תהליך העבודה. אפשר גם להגדיר פעולות ב-JavaScript.
Dataform מהדר את Dataform Core
במהלך ההידור, Dataform מבצע את המשימות הבאות:
- הכלי Dataform core מהדר תהליך עבודה של SQL סטנדרטי.
- הוספה של הצהרות SQL סטנדרטיות, כמו
CREATE TABLEאוINSERT, לקוד בשורה עם הגדרת השאילתה. - הכלי מבצע טרנספילציה (קומפילציה ממקור למקור) של JavaScript ל-SQL.
- פותר תלויות ובודק אם יש שגיאות, כולל תלויות חסרות או מעגליות.
- יוצר את עץ התלות של כל הפעולות שיופעלו ב-BigQuery.
הקומפילציה של Dataform היא הרמטית כדי לוודא את העקביות שלה, כלומר אותו קוד עובר קומפילציה לאותה תוצאת קומפילציה של SQL בכל פעם. Dataform מהדר את הקוד בסביבת ארגז חול ללא גישה לאינטרנט. במהלך ההידור לא זמינות פעולות נוספות, כמו קריאה לממשקי API חיצוניים.
כדי לבצע ניפוי באגים בזמן אמת, אתם יכולים לבדוק את תהליך העבודה המהודר של הפרויקט שלכם בגרף אינטראקטיבי בסביבת הפיתוח.
Dataform מריץ את עץ התלות
ב-BigQuery, Dataform מבצע את המשימות הבאות:
- מריץ פקודות SQL לפי הסדר של עץ התלות.
- מריץ שאילתות של טענות על הטבלאות והתצוגות כדי לבדוק את נכונות הנתונים.
- מריץ פעולות אחרות של SQL שהגדרתם.
אחרי ההרצה, תוכלו להשתמש בטבלאות ובתצוגות המפורטות לכל מטרות הניתוח שלכם.
אפשר לצפות ביומנים כדי לראות אילו טבלאות נוצרו, אם טענות עברו או נכשלו, כמה זמן לקח לכל פעולה להסתיים ומידע נוסף. אפשר גם לראות את קוד ה-SQL המדויק שהופעל ב-BigQuery.
התכונות של Dataform
באמצעות Dataform, אפשר לפתח ולפרוס טבלאות, טבלאות מצטברות או תצוגות ב-BigQuery. Dataform מציע סביבת אינטרנט לפעילויות הבאות:
- פיתוח תהליכי עבודה
- חיבור ל-GitHub, GitLab, Azure DevOps Services ו-Bitbucket
- אינטגרציה רציפה (CI) ופריסה רציפה (CD)
- ביצוע של תהליך העבודה
בקטעים הבאים מתוארים התכונות העיקריות של Dataform.
מאגרים
כל פרויקט Dataform מאוחסן במאגר. מאגר Dataform מכיל אוסף של קובצי הגדרות JSON, קובצי SQLX וקובצי JavaScript.
מאגרי Dataform מכילים את סוגי הקבצים הבאים:
קבצי הגדרות
קובצי JSON או SQLX של הגדרות מאפשרים לכם להגדיר את תהליכי העבודה. הם מכילים הגדרות כלליות, לוחות זמנים להרצה או סכימה ליצירת טבלאות ותצוגות חדשות.
הגדרות
ההגדרות הן קובצי SQLX ו-JavaScript שמגדירים טבלאות חדשות, תצוגות ופעולות SQL נוספות להרצה ב-BigQuery.
כולל
Includes הם קובצי JavaScript שבהם אפשר להגדיר משתנים ופונקציות לשימוש בפרויקט.
כל מאגר Dataform צריך להיות מקושר לחשבון שירות מותאם אישית. בוחרים חשבון שירות בהתאמה אישית כשיוצרים מאגר. אפשר לערוך את חשבון השירות מאוחר יותר.
ניהול הגרסאות
Dataform משתמש במערכת ניהול הגרסאות של Git כדי לשמור תיעוד של כל שינוי שבוצע בקובצי הפרויקט, וכדי לנהל את גרסאות הקבצים.
כל מאגר Dataform יכול לנהל את מאגר ה-Git שלו, או להיות מחובר למאגר Git מרוחק של צד שלישי. אפשר לקשר מאגר Dataform למאגר ב-GitHub, ב-GitLab, ב-Azure DevOps Services או ב-Bitbucket.
משתמשים יכולים לנהל גרסאות של קוד זרימת העבודה בסביבות עבודה של Dataform. בסביבת עבודה של Dataform, אפשר למשוך שינויים מהמאגר, לבצע קומיט של כל השינויים או של שינויים נבחרים, ולדחוף אותם לענפי Git של המאגר.
פיתוח תהליכי עבודה
ב-Dataform, מבצעים שינויים בקבצים ובספריות בתוך סביבת פיתוח. סביבת פיתוח היא עותק וירטואלי שניתן לעריכה של התוכן במאגר Git. Dataform שומר את מצב הקבצים בסביבת העבודה לפיתוח בין הפעלות.
בסביבת עבודה לפיתוח, אפשר לפתח פעולות בתהליך העבודה באמצעות Dataform Core עם SQLX ו-JavaScript, או באמצעות JavaScript בלבד. אתם יכולים לעצב באופן אוטומטי את הליבה של Dataform או את קוד JavaScript.
כל רכיב בתהליך העבודה של Dataform, כמו טבלה או טענה, תואם לפעולה ש-Dataform מבצע ב-BigQuery. לדוגמה, קובץ הגדרת טבלה הוא פעולה של יצירה או עדכון של הטבלה ב-BigQuery.
בסביבת עבודה של Dataform, אפשר לפתח את פעולות תהליך העבודה הבאות:
- הצהרות על נתוני המקור
- טבלאות ותצוגות
- טבלאות מצטברות
- מחיצות ואשכולות בטבלה
- תלות בין פעולות
- תיעוד של טבלאות
- פעולות SQL בהתאמה אישית
- תוויות BigQuery
- תגי מדיניות ב-BigQuery
- תגים של Dataform
- בדיקות איכות נתונים, שנקראות הצהרות
אפשר להשתמש ב-JavaScript כדי לעשות שימוש חוזר בקוד של תהליך העבודה ב-Dataform בדרכים הבאות:
Dataform מהדר את קוד תהליך העבודה בסביבת העבודה בזמן אמת. בסביבת העבודה, אפשר לראות את השאילתות המהודרות ואת פרטי הפעולות בכל קובץ. אפשר גם לראות את סטטוס הקומפילציה ואת השגיאות בקובץ הערוך או במאגר.
כדי לבדוק את הפלט של שאילתת SQL שעברה קומפילציה לפני שמריצים אותה ב-BigQuery, אפשר להריץ תצוגה מקדימה של השאילתה בסביבת העבודה של Dataform.
כדי לבדוק את כל תהליך העבודה שמוגדר בסביבת העבודה, אפשר לראות גרף אינטראקטיבי שעבר קומפילציה שבו מוצגות כל הפעולות שעברו קומפילציה בתהליך העבודה והקשרים ביניהן.
קומפילציה של תהליך עבודה
Dataform משתמש בהגדרות קומפילציה שמוגדרות כברירת מחדל, שמוגדרות בקובץ ההגדרות של תהליך העבודה, כדי לבצע קומפילציה של קוד תהליך העבודה בסביבת העבודה ל-SQL בזמן אמת, וליצור תוצאת קומפילציה של סביבת העבודה.
אתם יכולים לשנות את הגדרות הקומפילציה כדי להתאים אישית את האופן שבו Dataform מבצע קומפילציה של זרימת העבודה לתוצאת קומפילציה.
באמצעות שינויים מברירת המחדל בהידור של סביבת עבודה, אתם יכולים להגדיר שינויים מברירת המחדל לכל סביבות העבודה במאגר. אתם יכולים להגדיר שינויים דינמיים בסביבת העבודה כדי ליצור תוצאות קומפילציה בהתאמה אישית לכל סביבת עבודה, וכך להפוך את סביבות העבודה לסביבות פיתוח מבודדות. אתם יכולים לשנות את Google Cloud הפרויקט שבו Dataform מריץ את התוכן של סביבת עבודה, להוסיף קידומת לשמות של כל הטבלאות שעברו קומפילציה ולהוסיף סיומת לסכימה שמוגדרת כברירת מחדל.
באמצעות הגדרות של גרסאות, אפשר להגדיר תבניות של הגדרות הידור כדי ליצור תוצאות הידור של מאגר Dataform. בהגדרת גרסה, אפשר לשנות את פרויקט Google Cloud שבו Dataform מריץ את תוצאות הקומפילציה, להוסיף קידומת לשמות של כל הטבלאות שעברו קומפילציה, להוסיף סיומת לסכימת ברירת המחדל ולהוסיף משתני קומפילציה. אפשר גם להגדיר את התדירות של יצירת תוצאות ההידור. כדי לתזמן הרצות של תוצאות קומפילציה שנוצרו בהגדרת גרסה נבחרת, אפשר ליצור הגדרת תהליך עבודה.
הרצה של תהליך עבודה
במהלך הרצת תהליך עבודה, Dataform מריץ את תוצאות ההידור של תהליכי עבודה כדי ליצור או לעדכן נכסים ב-BigQuery.
כדי ליצור או לרענן את הטבלאות והתצוגות שהוגדרו בתהליך העבודה ב-BigQuery, אפשר להתחיל הפעלה של תהליך עבודה באופן ידני בסביבת פיתוח או לתזמן הפעלות.
אפשר לתזמן הרצות של Dataform ב-BigQuery באופנים הבאים:
- יצירת הגדרות של תהליכי עבודה כדי לתזמן הרצות של תוצאות קומפילציה שנוצרו בהגדרות של גרסאות
- תזמון הרצות באמצעות Managed Service for Apache Airflow
- תזמון הרצות באמצעות Workflows ו-Cloud Scheduler
אפשר גם להריץ אוטומטית באמצעות טריגרים של Cloud Build.
כדי לנפות באגים, אפשר לעקוב אחרי ההרצות בדרכים הבאות:
- איך רואים יומני ביצוע מפורטים של Dataform
- הצגת יומני ביקורת של Dataform
- הצגת יומנים של Dataform ב-Cloud Logging
Dataform core
Dataform Core היא שפת-על מבוססת קוד פתוח ליצירת טבלאות וזרימות עבודה של SQL. Dataform Core מרחיב את SQL על ידי מתן מערכת לניהול תלות, בדיקות אוטומטיות של איכות הנתונים ותיעוד נתונים.
אפשר להשתמש ב-Dataform Core למטרות הבאות:
- הגדרת טבלאות, תצוגות, תצוגות מהותיות או טבלאות מצטברות.
- הגדרת הלוגיקה של טרנספורמציית הנתונים.
- הצהרה על נתוני המקור וניהול יחסי התלות של הטבלה.
- תיעוד של תיאורי הטבלה והעמודות בתוך הקוד.
- שימוש חוזר בפונקציות ובמשתנים בשאילתות שונות.
- כתיבת הצהרות על נתונים כדי לאמת את עקביות הנתונים.
ב-Dataform, משתמשים ב-Dataform Core כדי לפתח תהליכי עבודה ולפרוס נכסים ב-BigQuery.
Dataform core הוא חלק ממסגרת מודלים של נתונים ב-Dataform בקוד פתוח, שכוללת גם את Dataform CLI. אפשר להדר ולבצע Dataform Core באופן מקומי באמצעות Dataform CLI מחוץ ל- Google Cloud.
כדי להשתמש ב-Dataform Core, צריך לכתוב קובצי SQLX. כל קובץ SQLX מכיל שאילתה שמגדירה קשר בין מסדי נתונים שנוצר ומעודכן על ידי Dataform בתוך BigQuery.
מערכת Dataform מבצעת קומפילציה של קוד הליבה של Dataform בזמן אמת כדי ליצור תוצאת קומפילציה של SQL שאפשר להריץ ב-BigQuery.
הקומפילציה של Dataform היא הרמטית כדי לוודא את העקביות שלה, כלומר אותו קוד עובר קומפילציה לאותה תוצאת קומפילציה של SQL בכל פעם. Dataform מהדר את הקוד שלכם בסביבת ארגז חול ללא גישה לאינטרנט. במהלך ההידור לא זמינות פעולות נוספות, כמו קריאה לממשקי API חיצוניים.
בלוק ההגדרות של קובץ SQLX
קובץ SQLX מורכב מבלוק הגדרות ומגוף. כל מאפייני ההגדרה ובלוק ההגדרה עצמו הם אופציונליים. לכן, כל קובץ SQL פשוט הוא קובץ SQLX תקין ש-Dataform מפעיל כמו שהוא.
בבלוק ההגדרות, אפשר לבצע את הפעולות הבאות:
ציון מטא-נתונים של שאילתה
אתם יכולים להגדיר איך Dataform יוצרת תצוגות חומריות של שאילתות ב-BigQuery, למשל סוג טבלת הפלט, מסד הנתונים של היעד או תוויות, באמצעות מטא-נתונים של הגדרות.
נתוני מסמכים
אפשר לתעד את הטבלאות והשדות שלהן ישירות בבלוק ההגדרות. התיעוד של הטבלאות מועבר ישירות ל-BigQuery. אפשר לנתח את התיעוד הזה ולהעביר אותו לכלים אחרים.
הגדרת בדיקות איכות נתונים
אתם יכולים להגדיר בדיקות של איכות הנתונים, שנקראות טענות, כדי לבדוק אם יש ערכים ייחודיים, ערכים ריקים או תנאי מותאם אישית. Dataform מוסיף את ההצהרות שהוגדרו בבלוק ההגדרות לעץ התלות של תהליך העבודה אחרי יצירת הטבלה. אפשר גם להגדיר הצהרות מחוץ לבלוק ההגדרות, בקובץ SQLX נפרד.
בדוגמת הקוד הבאה אפשר לראות איך מגדירים את סוג טבלת הפלט, מתעדים את הטבלה ומגדירים בדיקת איכות בבלוק הגדרות של קובץ SQLX.
config {
type: "table",
description: "This table joins orders information from OnlineStore & payment information from PaymentApp",
columns: {
order_date: "The date when a customer placed their order",
id: "Order ID as defined by OnlineStore",
order_status: "The status of an order e.g. sent, delivered",
customer_id: "Unique customer ID",
payment_status: "The status of a payment e.g. pending, paid",
payment_method: "How the customer chose to pay",
item_count: "The number of items the customer ordered",
amount: "The amount the customer paid"
},
assertions: {
uniqueKey: ["id"]
}
}
גוף קובץ SQLX
בגוף של קובץ SQLX, אפשר לבצע את הפעולות הבאות:
- הגדרת טבלה ויחסי התלות שלה.
- הגדרת פעולות SQL נוספות להפעלה ב-BigQuery.
- יצירת קוד SQL באמצעות JavaScript
הגדרת טבלה
כדי להגדיר טבלה חדשה, אפשר להשתמש בהצהרות SQL SELECT ובפונקציה ref.
הפונקציה ref היא פונקציה מובנית של SQLX, שהיא קריטית לניהול תלות ב-Dataform. הפונקציה ref מאפשרת להפנות לטבלאות שהוגדרו בפרויקט Dataform, במקום להגדיר קידוד קשיח של הסכימה ושמות הטבלאות של טבלת הנתונים.
Dataform משתמש בפונקציה ref כדי ליצור עץ תלות של כל הטבלאות שצריך ליצור או לעדכן. אחרי ההידור, Dataform מוסיף הצהרות סטנדרטיות כמו CREATE, REPLACE או INSERT.
בדוגמת הקוד הבאה אפשר לראות איך מפנים לטבלה בקובץ SQLX באמצעות הפונקציה ref.
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2, 3
הפלט אמור להיראות כך:
CREATE OR REPLACE TABLE Dataform.orders AS
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM Dataform_stg.store_clean
GROUP BY 1, 2, 3
מידע נוסף על ניהול תלות נוסף, למשל על הפעלה של קוד בתנאי, באמצעות פונקציות מובנות אחרות של Dataform Core, זמין במאמר הפניה ל-Dataform Core.
הגדרת פעולות SQL נוספות
כדי להגדיר את Dataform להרצת הצהרות SQL אחת או יותר לפני או אחרי יצירת טבלה או תצוגה, אפשר לציין פעולות לפני ואחרי השאילתה.
בדוגמת הקוד הבאה אפשר לראות איך מגדירים הרשאות גישה לטבלה או לתצוגה בפעולה שאחרי שאילתה.
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer` ON TABLE ${self()} TO "group:someusers@dataform.co"
}
הוספת קוד SQL
כדי להגדיר פונקציות שאפשר להשתמש בהן שוב ושוב כדי ליצור חלקים חוזרים של קוד SQL, אפשר להשתמש בבלוקים של JavaScript. אפשר לעשות שימוש חוזר בקוד שהוגדר בבלוק JavaScript רק בתוך קובץ ה-SQLX שבו הוגדר הבלוק. כדי לעשות שימוש חוזר בקוד בכל המאגר, אפשר ליצור קבצים כלולים.
כדי לשנות שאילתה באופן דינמי, אפשר להשתמש ב-JavaScript מוטבע בכל מקום בגוף.
בדוגמת הקוד הבאה אפשר לראות איך מגדירים בלוק JavaScript בקובץ SQLX ומשתמשים בו בשורה בתוך שאילתה:
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
מגבלות
אלו הן המגבלות הידועות ב-Dataform:
Dataform Google Cloud פועל בזמן ריצה רגיל של V8 ולא תומך ביכולות ובמודולים נוספים שסופקו על ידי Node.js. אם בבסיס הקוד הקיים שלכם נדרשים מודולים של Node.js, תצטרכו להסיר את התלות הזו.
בפרויקטים בלי שדה שם ב-
package.jsonנוצרים הבדלים ב-package-lock.jsonבכל פעם שמתקינים חבילות. כדי להימנע ממצב כזה, צריך להוסיף נכסnameב-package.json.לא ניתן להשתמש בכתובות URL עם
git+https://לתלות ב-package.json.צריך להמיר כתובות URL כאלה לכתובות URL רגילות של ארכיון
https://. לדוגמה, צריך להמיר אתgit+https://github.com/dataform-co/dataform-segment.git#1.5ל-https://github.com/dataform-co/dataform-segment/archive/1.5.tar.gz.אי אפשר להריץ בדיקות יחידה באופן ידני.
אי אפשר לחפש תוכן של קבצים בסביבות עבודה לפיתוח.
החל מ-Dataform core
3.0.0., Dataform לא מפיץ קובץ אימג' של Docker. אתם יכולים ליצור קובץ אימג' של Docker משלכם של Dataform, שבו תוכלו להשתמש כדי להריץ פקודות שוות ערך של Dataform CLI. כדי ליצור קובץ אימג' משלכם ב-Docker, אפשר לעיין במאמר בנושא העברת אפליקציה לקונטיינר במסמכי התיעוד של Docker.השיטות הבאות של Dataform API לא עומדות בהנחיות של AIP.134 כי הן מתייחסות לתו כל כללי
*כאל בקשה לא תקינה, ומעדכנות את כל השדות במקום רק את השדות שמוגדרים כשמשמיטים אתfield_mask:אם הפעלה מתוזמנת של הגדרת תהליך עבודה לא מסתיימת לפני תחילת ההפעלה המתוזמנת הבאה, ההפעלה המתוזמנת הבאה תדלג ותסומן בשגיאה.
המאמרים הבאים
- מידע נוסף על מחזור החיים של הקוד ב-Dataform זמין במאמר מבוא למחזור החיים של הקוד ב-Dataform.
- מידע נוסף על מאגרי Dataform זמין במאמר מבוא למאגרים.
- מידע נוסף על סביבות עבודה של Dataform זמין במאמר יצירת סביבת פיתוח של Dataform.
- מידע נוסף על פיתוח תהליכי עבודה ב-Dataform זמין במאמר סקירה כללית של תהליכי עבודה.
- מידע נוסף על Dataform CLI זמין במאמר שימוש ב-Dataform CLI.