הגדרה של מרחב שמות בהתאמה אישית
מרחבי שמות בהתאמה אישית משמשים כסביבות לוגיות לאריזה ולבידוד של מודולים של בסיס הנתונים ושל מוצרי נתונים אנליטיים. ההרצה בתוך מרחב שמות ייעודי בהתאמה אישית מאפשרת לכם לנהל את אפשרויות ההגדרה והפריסה באופן עצמאי, ומספקת בידוד לסביבה שלכם. אחד היתרונות העיקריים של ההפרדה הזו הוא שאתם יכולים לשלוף בצורה חלקה עדכונים ושיפורים עתידיים ממרחב השמות cortex ב-Google Cloud Cortex Framework בלי הסיכון להחלפה או להשחתה של המודולים בהתאמה אישית. מומלץ מאוד ליצור את המודולים המותאמים אישית במרחב שמות ייעודי.
מבנה תיקיות של מרחב שמות בהתאמה אישית
התיקיות במרחב השמות של Cortex Framework משמשות לאריזה ולבידוד של ארטיפקטים של מודולים בהתאמה אישית. מבנה התיקיות של מרחב שמות מותאם אישית מוגדר בטבלה:
| נתיב הספרייה | מטרה ותיאור | מבנה אופייני של תיקיות משנה |
|---|---|---|
config/ |
הגדרת הפריסה של Cortex (חובה) כדי ליצור מרחבי שמות חדשים, צריך להגדיר אותם ב- config.yaml.
|
config/config.yaml |
src/data_modules/custom_namespace_path/data_foundation/ |
מודולים של שכבת הבסיס לנתונים (אופציונלי) טרנספורמציות של מערכי נתונים מנתונים גולמיים לשכבת הבסיס. |
- |
src/data_modules/custom_namespace_path/data_product/ |
הגדרות של מוצרי נתונים (אופציונלי) כולל לוגיקה עסקית ומודלים אנליטיים. כל מוצר מופרד בספריית משנה (לדוגמה, your_product_name) ומורכב מהרכיבים הבאים:
|
data_product/
└── your_product_name/
├── README.md
├── manifest.yaml
├── annotations/
└── definitions/ |
src/data_modules/custom_namespace_path/includes/ |
JavaScript helpers (אופציונלי) כל קובצי ה-JavaScript שמוצבים כאן נארזים אוטומטית וזמינים למודלים של Dataform במהלך ההידור (compilation) בנתיב של מרחב השמות (לדוגמה, includes/custom_namespace/).
|
- |
src/data_modules/custom_namespace_path/common/ |
כלים משותפים במרחב שמות (אופציונלי) כלים מותאמים אישית לבנייה, לפריסה ולמטרות אחרות, שמוגבלים למרחב השמות. |
- |
הגדרת מרחב שמות בהתאמה אישית
מרחב שמות חדש: custom_namespace אפשר להגדיר אותו על ידי הרחבת הקטע המתאים בקובץ config.yaml, יצירת ספרייה חדשה ב-src/data_modules/ והוספת נכסי קוד המודול החדש.
כדי שהקומפיילר של Google Cloud Cortex Framework יזהה את מרחב השמות והמודולים המותאמים אישית שלכם, אתם צריכים לרשום אותם בקובץ ההגדרות הגלובלי (לדוגמה, config/config.yaml).
שלב א': רישום מרחב השמות
בקטע data.namespaces block, מוסיפים את המטא-נתונים של מרחב השמות:
data:
namespaces:
- name: cortex
path: cortex/
- name: custom_namespace # <-- Name of custom namespace
path: custom_namespace_path/ # <-- Folder name that is used for custom namespace, points to subdirectory of 'src/data_modules/'
שלב ב': הגדרת מודולים בהתאמה אישית
רושמים את המודולים המותאמים אישית בקטע data.modules.foundation או data.modules.product. בשדה type צריך להשתמש בפורמט custom_namespace.module_type עם נקודות בין המספרים:
data:
modules:
foundation:
- moduleId: custom_namespace_foundation_module_id
type: custom_namespace.sap # Format: <namespace>.<module_type>
dataSourceId: sap_raw_s4
dataTargetId: data_foundation_sap_custom_namespace
moduleSettings:
sapVersion: s4
mandt: "100"
tableSettings: "config/custom_namespace_path/data_foundation/sap/table_settings.yaml"
product:
- moduleId: custom_namespace_data_product_id
type: custom_namespace.data_product_id # Format: <namespace>.<module_type>
dependsOn:
sapModule: erp_ecc # References an existing foundation moduleId
dataTargetId: product_target
tableSettings: "config/custom_namespace_path/data_product/data_product_id/table_settings.yaml"
קוד משותף של מרחב שמות בהתאמה אישית
מרחב השמות המותאם אישית תומך בשיתוף ארטיפקטים של קוד בין המודולים שלו. סוגי הארטיפקטים הנתמכים הם:
- includes – מכיל עזרים של JavaScript שיהיו זמינים לארטיפקטים של Dataform. אפשר למקם אותם בתיקייה:
src/data_modules/custom_namespace_path/includes/. - builders – כל מחלקות הגנרטורים בהתאמה אישית שיכולות לקמפל את קוד המקור של המודול לארטיפקטים של Dataform. אפשר למקם אותם ב
src/data_modules/custom_namespace_path/common/.
הסבר על כלים ליצירת אפליקציות ואיך משתמשים בהם
קלאסים של גנרטורים ב-Python שמהדרים את קובצי המקור של המודול לפלט פיזי של Dataform. Google Cloud Cortex Framework קומפל מודולים באמצעות רצף גמיש של פתרונות לבנייה בשלוש שכבות:
רמה 1: builders גלובליים לגיבוי
המסגרת כוללת כלי בנייה חזקים מאוד שנמצאים ב-src/common/builders/. ה-Builders האלה רשומים באופן גלובלי ואפשר להשתמש בהם בכל מרחב שמות מותאם אישית.
לדוגמה, כדי להשתמש בכלי הסטנדרטיים של SAP ליצירת מוצרי נתונים עבור המוצר המותאם אישית שלכם, צריך להפנות אל sap_product ב-manifest.yaml:
# src/data_modules/custom_namespace_path/data_product/data_product_id/manifest.yaml
type: data_product_id
builder: sap_product # Automatically resolves to the global SapProductBuilder fallback
dependencies:
sapModule:
type: sap
supportedVersions:
- ecc
- s4
רמה 2: כלי בנייה בהיקף של מרחב שמות
אם מודולים במרחב השמות המותאם אישית שלכם דורשים קומפיילר מיוחד, אתם יכולים לרשום builder מותאם אישית למרחב השמות הזה.
יוצרים קובץ builder בתיקייה
src/data_modules/custom_namespace_path/common/builders/my_builder.py.מקשטים את מחלקת ה-builder באמצעות
@builder_registry.register("my_builder"):
from common.builders.base import ProductBuilder
from common.registry import builder_registry
@builder_registry.register("my_builder")
class MyCustomProductBuilder(ProductBuilder):
# Implement build logic here...
- אפשר להפנות אליו ב
manifest.yamlהמוצר באמצעותbuilder: my_builder.
רמה 3: יוצרים ברמת המוצר הבודד
בצינורות ייחודיים מאוד, אפשר להגדיר בונה שמוגבל לשימוש בלעדי במוצר נתונים יחיד.
פשוט יוצרים קובץ בשם
builder.pyישירות בתוך תיקיית מוצר הנתונים (למשל,src/data_modules/custom_namespace_path/data_product/data_product_id/builder.py).מגדירים מחלקת משנה של
BaseBuilderאוProductBuilderבתוך המחלקה:
from common.builders.base import ProductBuilder
class UniqueSalesPerformanceBuilder(ProductBuilder):
# Implement unique build logic here...
- הקומפיילר ייבא ויבצע את המחלקה הזו באופן דינמי באופן אוטומטי, בלי שיידרש רישום או שימוש בדקורטורים.
דוגמה למרחב שמות בהתאמה אישית
בקובץ config/config.yaml, מוסיפים את הבלוק הזה מתחת ל-data.namespaces:
data:
namespaces:
- name: cortex
path: cortex/
- name: sap_bookingdatamodel # <-- Name of custom namespace: sap_bookingdatamodel
path: sap_bookingdatamodel/ # <-- Folder name that is used for custom namespace:sap_bookingdatamodel, points to subdirectory of 'src/data_modules/'
בשלבים הבאים: יצירת מודול של שכבת בסיס נתונים ויצירת מודול של מוצר נתונים, נסביר איך להוסיף מודולים של נתונים למרחב השמות.
- השלב הבא: יצירת מודול של נתוני בסיס
- חזרה לסקירה הכללית