במאמר הזה מתוארות השיטות, המאפיינים ואפשרויות ההגדרה של Dataform Core. אפשר להשתמש ב-Dataform core בקובצי SQLX ובקובצי JavaScript.
assert()
assert
|
(name: string, query?: AContextable
|
|
הפקודה מוסיפה הצהרה של Dataform לתרשים המהודר. האפשרות הזו זמינה רק בספרייה |
דוגמה:
// definitions/file.js
assert("name").query(ctx => "select 1");
CommonContext
שיטות הקשר זמינות כשמעריכים קוד SQL שניתן להקשר, כמו בקובצי SQLX, או כשמשתמשים בארגומנט Contextable עם Dataform Core.
database
|
() => string
|
| מחזירה את מסד הנתונים של מערך הנתונים הזה, אם רלוונטי. | |
name
|
() => string
|
| הפונקציה מחזירה את השם של הטבלה. | |
ref
|
(ref: Resolvable | string[], rest: string[]) => string
|
מפנה לפעולה אחרת, ומוסיף אותה כתלות בפעולה הזו,
מחזיר SQL תקין לשימוש בביטוי from.
אפשר לקרוא לפונקציה הזו עם אובייקט
אפשר להפעיל את הפונקציה הזו גם באמצעות ארגומנטים נפרדים לערכים ${ref("database", "schema", "name")}
${ref("schema", "name")}
${ref("name")}
|
|
resolve
|
(ref: Resolvable | string[], rest: string[]) => string
|
דומה ל-ref, אבל לא מוסיף את הפעולה שאליה יש הפניה כתלות בפעולה הזו.
|
|
self
|
() => string
|
שווה ערך ל-resolve(name()).
הפונקציה מחזירה מחרוזת SQL תקינה שאפשר להשתמש בה כדי להפנות לטבלה שנוצרה על ידי הפעולה הזו. |
|
schema
|
() => string
|
| הפונקציה מחזירה את הסכימה של מערך הנתונים הזה. |
Contextable
ארגומנטים שניתן להעביר להם הקשר יכולים להעביר ערך פשוט עבור הסוג הגנרי שלהם T או פונקציה שמופעלת עם אובייקט ההקשר עבור סוג הפעולה הזה.
T | (ctx: Context) => T
Dataform
משתנה גלובלי שמכיל את האובייקט IProjectConfig.
נדרש כדי לקבל מאפיינים של IProjectConfig, לדוגמה:
dataform.projectConfig.vars.myVariableName === "myVariableValue"
declare()
declare
|
(dataset: dataform.ITarget)
|
|
הפקודה מכריזה על מערך הנתונים כמקור נתונים של Dataform. האפשרות הזו זמינה רק בספרייה |
דוגמה:
// definitions/file.js
declare({name: "a-declaration"})
defaultLocation
המאפיין defaultLocation מציין את מיקום ברירת המחדל של מערך הנתונים ב-BigQuery. Dataform משתמש במיקום הזה כדי לעבד את הקוד ולאחסן את התוצאות. מיקום העיבוד הזה צריך להיות זהה למיקום של מערכי הנתונים ב-BigQuery. עם זאת, הוא לא צריך להיות זהה למיקום המאגר של Dataform.
אם לא מגדירים את המאפיין defaultLocation, Dataform קובע את המיקום על סמך מערכי הנתונים שאליהם מתייחסת שאילתת ה-SQL. כך זה עובד:
- אם השאילתה מפנה למערכי נתונים מאותו מיקום, מערכת Dataform משתמשת במיקום הזה.
- אם השאילתה מפנה למערכי נתונים משני מיקומים שונים או יותר, מתרחשת שגיאה. פרטים נוספים על ההגבלה הזו זמינים במאמר בנושא שכפול של מערכי נתונים באזורים שונים.
- אם השאילתה לא מפנה לאף מערך נתונים, המיקום שמוגדר כברירת מחדל ב-Dataform הוא
USmulti-region. כדי לבחור מיקום אחר, מגדירים את הנכסdefaultLocation. אפשר גם להשתמש במשתנה המערכת@@locationבשאילתה.
מידע נוסף זמין במאמר בנושא ציון מיקומים.
IActionConfig
הגדרת תגים של Dataform ויחסי תלות שחלים על פעולה בתהליך עבודה.
tags
|
string[]
|
|
רשימה של תגים שהוגדרו על ידי המשתמש, שאיתם צריך לתייג את הפעולה. |
|
dependencies
|
Resolvable| Resolvable[]
|
|
יחסי התלות של הפעולה. |
|
disabled
|
boolean
|
|
אם המדיניות מוגדרת כ-True, הפעולה הזו לא תופעל. עם זאת, עדיין אפשר להסתמך על הפעולה. ההגדרה הזו שימושית להשבתה זמנית של פעולות לא תקינות. |
IAssertionConfig
אפשרויות ההגדרה לסוגי הפעולות assertion.
database
|
string
|
| מסד הנתונים (מזהה הפרויקטGoogle Cloud ) שבו ייצור התצוגה המתאימה לאישור הזה. | |
description
|
string
|
| תיאור של הטענה הזו. | |
disabled
|
boolean
|
אם המדיניות מוגדרת לערך true, הפעולה הזו לא תרוץ.
עדיין אפשר להסתמך על הפעולה. ההגדרה הזו שימושית להשבתה זמנית של פעולות לא תקינות.
|
|
hermetic
|
boolean
|
| מציין אם הפעולה הזו היא הרמטית. פעולה היא הרמטית
אם כל התלות שלה מוצהרת באופן מפורש.
אם הפעולה הזו תלויה בנתונים ממקור שלא הוגדר כתלות, צריך להגדיר את |
|
schema
|
string
|
| הסכימה (מערך הנתונים ב-BigQuery) שבה ייצור התצוגה המתאימה לאישור הזה. | |
tags
|
string[]
|
| רשימה של תגים שהוגדרו על ידי המשתמש והוחלו על הפעולה הזו. |
IBigQueryOptions
אפשרויות מחסן ספציפיות ל-BigQuery.
additionalOptions
|
|
| צמדי מפתח/ערך לאפשרויות table, view ו-תצוגה מהותית.
לדוגמה, יש שדות ייעודיים לבדיקת סוג ותוקף של אפשרויות מסוימות, כמו
ערכי מחרוזת צריכים להיות תחומים במירכאות כפולות, לדוגמה:
אם שם האפשרות מכיל תווים מיוחדים, צריך להוסיף מירכאות לשם, לדוגמה: |
|
clusterBy
|
string[]
|
| המפתחות שלפיהם מקבצים מחיצות. | |
labels
|
|
| צמדי מפתח/ערך של תוויות BigQuery.
אם שם התווית מכיל תווים מיוחדים, למשל מקפים,
צריך להוסיף מרכאות לשם, למשל |
|
partitionBy
|
string
|
| המפתח שלפיו מחלקים את הטבלה למחיצות. בדרך כלל השם של חותמת זמן או של עמודת התאריך. | |
partitionExpirationDays
|
number
|
| מספר הימים שבהם BigQuery מאחסן נתונים בכל מחיצה. ההגדרה חלה על כל המחיצות בטבלה, אבל היא מחושבת בנפרד לכל מחיצה על סמך הזמן של המחיצה. | |
requirePartitionFilter
|
boolean
|
ההגדרה הזו קובעת אם הטבלה המחולקת למחיצות דורשת מסנן WHERE
clause predicate שמסנן את עמודת החלוקה למחיצות.
|
|
updatePartitionFilter
|
string
|
| מסנן מבוסס-SQL להחלה של עדכונים מצטברים. | |
iceberg
|
IIcebergOptions
|
| אפשרויות ספציפיות ל-Apache Iceberg לטבלאות מנוהלות של Iceberg. |
IIcebergOptions
אפשרויות ספציפיות ל-Apache Iceberg לטבלאות מנוהלות של Iceberg.
connection |
string |
|
זה שינוי אופציונלי. שם המשאב של החיבור ל-Cloud Storage, שמספק פרטי כניסה לקריאה מאחסון חיצוני ולכתיבה בו. אפשר לעצב אותו בדרכים הבאות:
ברירת המחדל היא |
|
file_format
|
string
|
|
זה שינוי אופציונלי. פורמט הקובץ של נתוני הטבלה.
יש תמיכה רק ב- |
|
bucket_name
|
string
|
|
חובה להוסיף את השדה הזה ברמת הטבלה או ברמת תהליך העבודה. השם של הקטגוריה של Cloud Storage שבה מאוחסנים נתוני הטבלה.
צריך לספק את |
|
table_folder_root
|
string
|
|
זה שינוי אופציונלי. השם של התיקייה ברמה הראשונה בתוך הקטגוריה של Cloud Storage שבה מאוחסנים נתוני הטבלה.
אם לא מגדירים את המאפיין הזה, Dataform משתמש בערך ברירת המחדל ברמת זרימת העבודה מ- |
|
table_folder_subpath
|
string
|
|
זה שינוי אופציונלי. תיקיית משנה בתוך
אם לא מגדירים את המאפיין הזה, Dataform משתמש בברירת המחדל ברמת זרימת העבודה מ- |
הערכים האלה יוצרים את ה-URI של Cloud Storage בפורמט הבא:
gs://BUCKET_NAME/TABLE_FOLDER_ROOT/TABLE_FOLDER_SUBPATH.
IColumnsDescriptor
תיאור של עמודות בטבלה.
{ [name]: string | IRecordDescriptor }
IDeclarationConfig
אפשרויות ההגדרה לסוגי הפעולות declaration.
columns
|
IColumnsDescriptor
|
| תיאור של העמודות בטבלה. | |
database
|
string
|
| מסד הנתונים (מזהה הפרויקט) שבו רוצים ליצור את טבלת המקור קיים.Google Cloud | |
description
|
string
|
| תיאור של הטבלה. | |
schema
|
string
|
| הסכימה (מערך הנתונים ב-BigQuery) שבה קיימת טבלת המקור. |
IDependenciesConfig
הגדרת יחסי תלות של פעולה בתהליך עבודה.
dependencies
|
Resolvable| Resolvable[]
|
|
תלות מפורשת אחת או יותר בפעולה הזו. פעולות של תלות
יופעלו לפני פעולות תלויות.
בדרך כלל לא מגדירים את המאפיין הזה, כי רוב התלויות מוצהרות כתוצר לוואי של השימוש בפונקציה |
|
hermetic
|
boolean
|
|
מצהיר אם הפעולה הזו היא הרמטית או לא. פעולה היא הרמטית אם
כל התלויות שלה מוצהרות באופן מפורש. אם הפעולה הזו תלויה בנתונים ממקור שלא הוגדר כתלות, צריך להגדיר את |
IDocumentableConfig
הגדרת תיאורים של מערך נתונים והעמודות שלו.
columns
|
IColumnsDescriptor
|
|
תיאור של העמודות במערך הנתונים. |
|
description
|
string
|
|
תיאור של מערך הנתונים. |
INamedConfig
הגדרת הסוג והשם של פעולה בתהליך עבודה.
type
|
string
|
|
סוג הפעולה. |
|
name
|
string
|
|
שם הפעולה. |
IOperationConfig
אפשרויות ההגדרה לסוגי הפעולות operations.
columns
|
IColumnsDescriptor
|
| תיאור של העמודות בטבלה. | |
database
|
string
|
| מסד הנתונים (מזהה הפרויקטGoogle Cloud ) שבו ייצור הפלט של הפעולה הזו. | |
description
|
string
|
| תיאור של הטבלה. | |
disabled
|
boolean
|
אם המדיניות מוגדרת לערך true, הפעולה הזו לא תרוץ.
עדיין אפשר להסתמך על הפעולה.
ההגדרה הזו שימושית להשבתה זמנית של פעולות לא תקינות.
|
|
hasOutput
|
boolean
|
ההצהרה הזו מציינת שפעולת operations יוצרת טבלה שאפשר להפנות אליה באמצעות הפונקציה ref.
אם ההגדרה היא create or replace table ${self()} as select ...
|
|
hermetic
|
boolean
|
| מציין אם הפעולה הזו היא הרמטית. פעולה היא הרמטית
אם כל התלות שלה מוצהרת באופן מפורש.
אם הפעולה הזו תלויה בנתונים ממקור שלא הוגדר כתלות, צריך להגדיר את |
|
schema
|
string
|
| הסכימה (מערך נתונים ב-BigQuery) שבה ייצור הפלט של הפעולה הזו. | |
tags
|
string[]
|
| רשימה של תגים שהוגדרו על ידי המשתמש והוחלו על הפעולה הזו. |
IProjectConfig
מכיל הגדרות קומפילציה של מאגר Dataform.
defaultDatabase
|
string
|
| חובה. מסד הנתונים שמוגדר כברירת מחדל (Google Cloud מזהה הפרויקט). | |
defaultSchema
|
string
|
| חובה. סכימת ברירת המחדל (מזהה מערך הנתונים ב-BigQuery). | |
defaultLocation
|
string
|
| זה שינוי אופציונלי. מיקום ברירת המחדל ב-BigQuery שבו Dataform יוצר טבלאות. | |
assertionSchema
|
string
|
| חובה. סכימת ברירת המחדל (מזהה מערך הנתונים ב-BigQuery) לאישורים. | |
vars
|
map (key: string, value: string)
|
זה שינוי אופציונלי. משתנים שהוגדרו על ידי המשתמש וזמינים לקוד הפרויקט במהלך ההידור.
אובייקט שמכיל רשימה של "key": value זוגות.
דוגמה: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
|
|
databaseSuffix
|
string
|
| זה שינוי אופציונלי. הסיומת שצריך לצרף לכל שמות מסדי הנתונים (מזהה הפרויקט ב-Google Cloud ). | |
schemaSuffix
|
string
|
| זה שינוי אופציונלי. הסיומת שצריך להוסיף לכל השמות של הסכימות (מזהה מערך הנתונים ב-BigQuery). | |
tablePrefix
|
string
|
| זה שינוי אופציונלי. הקידומת שצריך להוסיף לכל שמות הטבלאות. | |
defaultIcebergConfig
|
object
|
זה שינוי אופציונלי. ברירות מחדל ברמת תהליך העבודה לטבלאות מנוהלות של Apache Iceberg.
מכיל את השדות הבאים:
|
|
warehouse
|
string
|
חובה. הערך חייב להיות bigquery.
|
אפשר להגדיר מאפייני IProjectConfig בהגדרות של זרימת העבודה ברמת המאגר.
אפשר לשנות את מאפייני defaultSchema ו-defaultDatabase של טבלאות ספציפיות.
אפשר לגשת לכל הנכסים מסוג IProjectConfig בהצהרת SQL SELECT בקובץ SQLX או JavaScript.
בדוגמת הקוד הבאה אפשר לראות את משתנה הקומפילציה המותאם אישית myVariableName שהוגדר בהגדרות של תהליך העבודה עם המאפיין projectConfig.vars, שאליו ניגשים בהצהרה SELECT בקובץ SQLX:
config { type: "view" }
SELECT ${when(
dataform.projectConfig.vars.myVariableName === "myVariableValue",
"myVariableName is set to myVariableValue!",
"myVariableName is not set to myVariableValue!"
)}
מידע נוסף על שינוי הגדרות של פרויקט עבור תוצאות קומפילציה ספציפיות זמין במאמר בנושא CodeCompilationConfig משאב REST ב-Dataform API.
IRecordDescriptor
מתאר מבנה, אובייקט או רשומה בטבלה שיש בה עמודות מקוננות.
bigqueryPolicyTags
|
string | string[]
|
| מזהים מלאים של תגי מדיניות ב-BigQuery שהוחלו על העמודה הזו. מזהה מלא של תג מדיניות ב-BigQuery
כולל את שם הפרויקט, המיקום והטקסונומיה,
לדוגמה: |
|
columns
|
IColumnsDescriptor
|
| תיאור של העמודות במבנה, באובייקט או ברשומה. | |
description
|
string
|
| תיאור של המבנה, האובייקט או הרשומה. |
ITableAssertions
אפשרויות ליצירת טענות כחלק מהגדרת טבלה.
nonNull
|
string | string[]
|
עמודות שלא יכולות להיות NULL.
אם המאפיין הזה מוגדר, הטענה המתאימה תיכשל אם שורה כלשהי מכילה ערכים של |
|
rowConditions
|
string[]
|
| תנאים כלליים שצריכים להתקיים בכל השורות בטבלה.
אם ההגדרה מופעלת, הטענה המתאימה נכשלת אם שורה כלשהי מפרה את התנאים האלה. |
|
uniqueKey
|
string | string[]
|
| העמודות שמהוות את אינדקס המפתח הייחודי של הטבלה.
אם המאפיין מוגדר, הטענה שנוצרת נכשלת אם יש יותר משורה אחת בטבלה עם אותם ערכים בכל העמודות האלה. |
|
uniqueKeys
|
[]
|
| שילובים של עמודות, שכל אחת מהן מהווה אינדקס מפתח ייחודי של הטבלה.
אם מוגדר, האישור שמתקבל נכשל אם יש יותר משורה אחת בטבלה עם אותם ערכים לכל העמודות במפתחות הייחודיים. |
ITableConfig
אפשרויות ההגדרה של פעולות table, כולל סוגי הטבלאות table, view ו-incremental.
Extends IActionConfig, IDependenciesConfig, IDocumentableConfig, INamedConfig, and ITargetableConfig.
assertions
|
ITableAssertions
|
| טענות להרצה בטבלה.
אם מוגדרות טענות, הן נוצרות באופן אוטומטי ומופעלות כתלות בטבלה הזו. |
|
bigquery
|
IBigQueryOptions
|
| אפשרויות מחסן ספציפיות ל-BigQuery. | |
columns
|
IColumnsDescriptor
|
| תיאור של העמודות בטבלה. | |
database
|
string
|
| מסד הנתונים (מזהה הפרויקטGoogle Cloud ) שבו ייצור הפלט של הפעולה הזו. | |
description
|
string
|
| תיאור של הטבלה. | |
disabled
|
boolean
|
אם המדיניות מוגדרת לערך true, הפעולה הזו לא תרוץ.
עדיין אפשר להסתמך על הפעולה.
ההגדרה הזו שימושית להשבתה זמנית של פעולות לא תקינות.
|
|
hermetic
|
boolean
|
| מציין אם הפעולה הזו היא הרמטית. פעולה היא הרמטית אם
כל התלויות שלה מוצהרות באופן מפורש.
אם הפעולה הזו תלויה בנתונים ממקור שלא הוגדר כתלות, צריך להגדיר את |
|
materialized
|
boolean
|
המאפיין הזה תקף רק כשסוג הטבלה הוא view.
אם המדיניות מוגדרת כ-True, תיווצר תצוגה מהותית. |
|
onSchemaChange
|
onSchemaChange
|
המאפיין הזה תקף רק כשסוג הטבלה הוא incremental.
הפעולה שמתבצעת אחרי ש-Dataform בודק את התכונה הזו נמצאת בגרסת טרום-השקה. |
|
protected
|
boolean
|
האפשרות הזו מותרת רק בסוג הטבלה incremental .
אם המדיניות מוגדרת כ-True, הפעלת הפעולה הזו מתעלמת מהאפשרות |
|
schema
|
string
|
| הסכימה (מערך נתונים ב-BigQuery) שבה ייצור הפלט של הפעולה הזו. | |
tags
|
string[]
|
| רשימה של תגים שהוגדרו על ידי המשתמש והוחלו על הפעולה הזו. | |
type
|
TableType
|
| סוג הטבלה. | |
uniqueKey
|
string[]
|
| מפתחות ייחודיים לקריטריוני מיזוג של טבלאות מצטברות.
אם מוגדרים רשומות עם מפתחות ייחודיים תואמים, הן מתעדכנות במקום להוסיף שורות חדשות. |
ITableContext
שיטות הקשר זמינות כשמעריכים קוד SQL שניתן להקשר, כמו בקובצי SQLX, או כשמשתמשים בארגומנט Contextable עם Dataform Core.
incremental
|
() => boolean
|
| הפונקציה מחזירה את הערך True אם ההקשר הנוכחי מציין שהטבלה תיבנה באופן מצטבר. | |
name
|
() => string
|
| מחזירה את השם המוגדר במלואו של טבלה זו. | |
ref
|
(ref: Resolvable | string[], rest: string[]) => string
|
| מפנה לפעולה אחרת, ומוסיף אותה כתלות בפעולה הזו,
ומחזיר SQL תקין לשימוש בביטוי from.
אפשר לקרוא לפונקציה הזו עם אובייקט ${ref({ name: "name", schema: "schema", database: "database" })}
אפשר להפעיל את הפונקציה הזו גם באמצעות ארגומנטים נפרדים לערכים
אם מספקים רק שני ערכים, המערכת משתמשת במסד הנתונים שמוגדר כברירת מחדל ומפרשת את הערכים כ- אם מציינים רק ערך אחד, המערכת משתמשת בסכימת מסד הנתונים שמוגדרת כברירת מחדל, והערך שצוין מפורש כ-`"name"`. ${ref("database", "schema", "name")}
${ref("schema", "name")}
${ref("name")}
|
|
resolve
|
(ref: Resolvable | string[], rest: string[]) => string
|
בדומה ל-ref, אבל במקום להוסיף תלות, הפונקציה הזו פותרת את ההפניה שסופקה כדי שאפשר יהיה להשתמש בה ב-SQL, למשל בביטוי `from`.
|
|
self
|
() => string
|
שווה ערך ל-resolve(name()).
הפונקציה מחזירה מחרוזת SQL תקינה שאפשר להשתמש בה כדי להפנות לטבלה שנוצרה על ידי הפעולה הזו. |
|
when
|
(cond: boolean, trueCase: string, falseCase: string) => string
|
קיצור דרך לתנאי if .
שווה ערך ל-cond ? trueCase : falseCase.
המאפיין |
ITarget
הפניה לטבלה ב-BigQuery.
database
|
string
|
name
|
string
|
schema
|
string
|
ITargetableConfig
הגדרת מסד הנתונים והסכימה של פעולה בתהליך עבודה.
database
|
string
|
|
מסד הנתונים שבו צריך ליצור את הפלט של הפעולה הזו. צריך להגדיר את הערך BigQuery. |
|
schema
|
string
|
|
הסכימה שבה צריך ליצור את הפלט של הפעולה הזו. |
onSchemaChange
אחרי שמגדירים את המאפיין onSchemaChange, Dataform בודק את השאילתה SELECT כדי לקבוע אם נוספו או הוסרו עמודות.
לאחר מכן, Dataform מבצע את הפעולה שצוינה בערך של המאפיין onSchemaChange. אפשר להגדיר את הפעולה לאחת מהאפשרויות הבאות:
-
IGNORE(ברירת מחדל): מתעלם מעמודות שנוספו ומציג שגיאה לגבי עמודות חסרות. אם ההגדרהonSchemaChangeלא מוגדרת, זוהי התנהגות ברירת המחדל כשמתבצע שינוי בסכימה. -
FAIL: מפסיק את הפעולה אם Dataform מזהה שינוי בסכימה, כדי לשמור על עקביות הסכימה. -
EXTEND: מוסיף עמודות חדשות מהשאילתה לטבלה המצטברת, ומוסיף ערכיNULLלרשומות קודמות. מוצגת שגיאה אם עמודה הוסרה או חסרה בסכימה המקורית בשאילתה. אתם יכולים להשתמש בהגדרה הזו כדי להוסיף עמודות חדשות לטבלאות המצטברות במהלך זמן הריצה.
SYNCHRONIZE: מוסיף עמודות חדשות מהשאילתה לטבלה המצטברת, ומוסיף ערכיNULLלרשומות קודמות. הפונקציה מסירה עמודות שהיו בסכימה המקורית אבל חסרות עכשיו בשאילתה הנוכחית.
operate()
operate
|
(name: string, queries?: Contextable
|
|
הגדרה של פעולת SQL. האפשרות הזו זמינה רק בספרייה |
דוגמה:
// definitions/file.js
operate("an-operation", ["SELECT 1", "SELECT 2"])
publish()
publish
|
(name: string, queryOrConfig?: Contextable
|
|
יוצר טבלה או תצוגה. האפשרות הזו זמינה רק בספרייה |
דוגמה:
// definitions/file.js
publish("published-table", {
type: "table",
dependencies: ["a-declaration"],
}).query(ctx => "SELECT 1 AS test");
ניתן לפתרון
האובייקט שניתן לפתרון יכול להיות שם של טבלה כמו string, או האובייקט שמתאר את הנתיב המלא ליחס.
string | ITarget
TableType
סוגי הפעולות הנתמכות בטבלה.
טבלאות מהסוג view ייווצרו כתצוגות.
טבלאות מהסוג table ייווצרו כטבלאות.
בטבלאות מסוג incremental צריך לכלול פסקה where.
מידע נוסף זמין במאמר בנושא הגדרת טבלה מצטברת.