Dataform core מאפשר ליצור פעולות בתהליך העבודה באמצעות SQLX ו-JavaScript. אפשר להשתמש ב-JavaScript יחד עם SQLX כדי ליצור שוב ושוב רכיבים דומים בתהליך העבודה. לדוגמה, באמצעות JavaScript אפשר ליצור תצוגה של כל טבלה בתהליך העבודה עם מזהי משתמשים מסוימים שהוסרו. אפשר גם לפתח פעולות בתהליך העבודה באמצעות JavaScript בלבד.
לפני שמתחילים
נכנסים לדף Dataform במסוף Google Cloud .
בוחרים מאגר או יוצרים מאגר.
בוחרים או יוצרים סביבת עבודה לפיתוח.
בנוסף, אתם צריכים להכיר את התחביר של JavaScript ואת המושגים הבאים ב-JavaScript:
- משתנים
- מערכים
- משפטי תנאי
- לולאות for
- מפות
- פונקציות
- Objects
- ייצוא וייבוא של מודולים
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לפיתוח תהליך עבודה באמצעות JavaScript ולשימוש חוזר בקוד באמצעות JavaScript כולל, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד Dataform Editor (roles/dataform.editor) בסביבות עבודה.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הוספת קוד JavaScript לקובץ SQLX
יש שתי דרכים להוסיף קוד JavaScript לקובץ SQLX: בשורה או בתוך בלוק JavaScript.
אפשר להשתמש בבלוק JavaScript כדי להגדיר פונקציות או קבועים בקובץ SQLX. אפשר להשתמש ב-JavaScript מוטבע כדי לשנות באופן דינמי שאילתת SQLX או SQL.
בדוגמת הקוד הבאה מוצגת פונקציית JavaScript מובנית של self Dataform core שנוספה בשורה לבלוק post_operations בקובץ SQLX:
config {type: "table"}
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@example.com"
}
בדוגמת הקוד הבאה מוצג קבוע שמוגדר בבלוק JavaScript ומשמש בשורה בתוך שאילתה בקובץ SQLX:
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
שימוש חוזר בקוד בקובץ SQLX יחיד באמצעות JavaScript encapsulation
אפשר להשתמש מחדש בקוד JavaScript כדי לייעל את הפיתוח ב-Dataform. כדי להשתמש שוב בקבועים ובפונקציות של JavaScript בקובץ SQLX יחיד, אפשר להוסיף אותם לבלוק JavaScript. כדי להשתמש מחדש בקוד JavaScript במאגר יחיד של Dataform, אפשר ליצור קובצי include. כדי להשתמש שוב בקוד JavaScript בכמה מאגרי Dataform, אפשר ליצור או לייבא חבילה.
כדי ליצור חלקים חוזרים של קוד SQL שאפשר להשתמש בהם מחדש בקובץ SQLX יחיד, אפשר להוסיף פונקציות וקבועים לבלוק JavaScript. אפשר לעשות שימוש חוזר בקוד שהוגדר בבלוק JavaScript רק בתוך קובץ ה-SQLX שבו הוגדר הבלוק. מידע נוסף זמין במאמר Dataform core.
בדוגמת הקוד הבאה אפשר לראות קבוע ופונקציה שהוגדרו בבלוק JavaScript ונעשה בהם שימוש בשורה בתוך שאילתה בקובץ SQLX:
js {
const foo = 1;
function bar(number){
return number+1;
}
}
select
${foo} as one,
${bar(foo)} as two
שימוש חוזר בקוד במאגר יחיד באמצעות כוללים
הכללות הן קבועים או פונקציות של JavaScript שגלובליים למאגר.
הגדרת הכללות מתבצעת בספרייה includes במאגר. אחר כך תוכלו להשתמש בהם שוב במאגר שלכם בקובצי JavaScript ו-SQLX.
בדוגמת הקוד הבאה מוצגת ההגדרה של הקבוע launch_date בקובץ includes/constants.js:
// filename is includes/constants.js
const launch_date = "11.11.2011";
module.exports = { launch_date };
בדוגמת הקוד הבאה מוצג הקבוע launch_date שמופיע בשאילתת הגדרת טבלה בקובץ SQLX:
config {type: "table"}
SELECT * FROM source_table WHERE date > ${constants.launch_date}
יצירת קובץ JavaScript להכללות
כדי ליצור קובץ JavaScript חדש בספרייה includes/, פועלים לפי השלבים הבאים:
בחלונית קבצים, לצד
includes/, לוחצים על סמל האפשרויות הנוספות.לוחצים על יצירת קובץ.
בחלונית Create new file:
בשדה הוספת נתיב קובץ, אחרי
includes/, מזינים את שם הקובץ ואחריו.js. לדוגמה,includes/constants.js.שמות הקבצים יכולים לכלול רק מספרים, אותיות, מקפים וקווים תחתונים.
לוחצים על יצירת קובץ.
יצירת קבוע JavaScript
כדי ליצור קבוע שאפשר לעשות בו שימוש חוזר בפרויקט, פועלים לפי השלבים הבאים:
עוברים לסביבת הפיתוח.
בחלונית Files, מרחיבים את
includes/.יוצרים או בוחרים קובץ JavaScript עם הסיומת
.js.מזינים את קטע הקוד הבא בקובץ:
const CONSTANT_NAME = CONSTANT_VALUE; module.exports = { CONSTANT_NAME };מחליפים את מה שכתוב בשדות הבאים:
- CONSTANT_NAME: השם של הקבוע
- CONSTANT_VALUE: הערך של הקבוע
אופציונלי: לוחצים על עיצוב.
בדוגמה הבאה של קוד מוגדרת הקבוע PROJECT_ID בקובץ includes/constants.js:
// filename is includes/constants.js
const PROJECT_ID = "my_project_name";
module.exports = { PROJECT_ID };
בדוגמת הקוד הבאה יש הפניה לקבוע PROJECT_ID בשאילתת הגדרת טבלה בקובץ SQLX:
config { type: "table" }
SELECT * FROM ${constants.PROJECT_ID}.my_schema_name.my_table_name
בדוגמת הקוד הבאה מוצגת שאילתת ההגדרה של טבלת הליבה הקודמת של Dataform שעברה קומפילציה ל-SQL:
SELECT * FROM my_project_name.my_schema_name.my_table_name
יצירת פונקציית JavaScript בהתאמה אישית
כדי ליצור פונקציית JavaScript בהתאמה אישית שאפשר להשתמש בה שוב בפרויקט: פועלים לפי השלבים הבאים:
עוברים לסביבת הפיתוח.
בחלונית Files, מרחיבים את
includes/.יוצרים או בוחרים קובץ JavaScript עם הסיומת
.js.כותבים את פונקציית ה-JavaScript המותאמת אישית בקובץ.
מזינים את קטע הקוד הבא בקובץ:
module.exports = { FUNCTION_NAME }מחליפים את
FUNCTION_NAMEבשם הפונקציה.אופציונלי: לוחצים על עיצוב.
בדוגמה הבאה של קוד מוצגת פונקציית JavaScript מותאמת אישית שנקראת renderScript ומאוחסנת בקובץ includes/functions.js. הפונקציה
יוצרת סקריפט SQL:
function renderScript(table, dimensions, metrics) {
return `
select
${dimensions.map(field => `${field} as ${field}`).join(",")},
${metrics.