הגדרת התצורה של פריסה
בדף הזה מוסברות אפשרויות ההגדרה של הפריסה של Cortex Framework בתחומים הבאים:
- הגדרות פריסה (
config/config.yaml): הגדרת משתנים גלובליים, סביבות בנייה ומיפוי מודולים (יעדים של בסיס נתונים ומוצרי נתונים). - הגדרות טבלה (
table_settings.yaml): מפרטים של ביצועים וסכימות שספציפיים למודול, שמתארים איך טבלאות בסיס נערכות ומתאימות ב-BigQuery.
בדף הזה יש גם מדריכים עם הוראות מפורטות לתרחישים נפוצים של פריסה.
קובץ תצורה: config/config.yaml
קובץ config/config.yaml – בדרך כלל מאותחל מתבנית config/config.yaml.example – משמש כהגדרה הראשית לפריסת Cortex Framework. ההגדרה מחולקת לבלוקים המבניים הבאים:
- סביבת build (
buildEnvironment): שולטת בשכבת תזמור הבנייה, ומציינת את פרויקט Google Cloud המרכזי שבו מתבצעים חיובים וחישובים של מטא-נתונים ביניים, אימותי מסד נתונים וחיפושי סכימה. - נתונים (
data): קובעים את ארכיטקטורת הנתונים הלוגית. בלוק ההגדרה הזה מגדיר את המיקומים של מערכי הנתונים, את הגבולות של מרחב השמות, את פרטי החיבור למקורות של נתונים גולמיים להטמעה, את מערכי הנתונים של היעד ורושם את המופעים של מודול הנתונים (foundations,catalogsו-products). - פריסה (
deployment): הגדרת פריסות של מערכות פיזיות לטירגוט. הוא מציין את פרטי מאגר Dataform (מזהה פרויקט, מיקום, שם מאגר וסביבת עבודה לפיתוח) שבהם נפרסים צינורות טרנספורמציה של SQLX/JS שעברו קומפילציה.
בקטעים הבאים מפורט כל בלוק.
סביבת build
פרויקט סביבת הבנייה הוא הפרויקט שמחויב על פעולות בנייה, כמו קריאת משימות של BigQuery DD03L.
buildEnvironment:
buildProjectId: YOUR_BUILD_PROJECT_ID
בטבלה הבאה מפורטים הפרמטרים של סביבת הבנייה.
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
buildEnvironment.buildProjectId |
מזהה פרויקט של גרסת build | YOUR_BUILD_PROJECT_ID |
Google Cloud מזהה הפרויקט שבו מבוצעות פעולות הבנייה. |
סקירה כללית על קטע הנתונים
בקטע data: של קובץ ההגדרות מוגדרים מקורות הנתונים, יעדי הנתונים והמודולים הספציפיים של בסיס הנתונים ומוצרי הנתונים.
המבנה הכללי שלו הוא כזה:
data:
# Geographic location for BigQuery datasets (for example: US, EU, us-central1)
# For full list see: https://docs.cloud.google.com/cortex/docs/supported-locations
bigQueryLocation: US
# List of namespaces for data foundation and product modules.
namespaces:
- name: cortex
path: ../src/data_modules/cortex
# List of datasets mapping.
datasets:
- ...
# Configuration for data foundation, data product, and external catalog modules.
modules:
# List of foundation modules.
foundations:
- ...
# List of external catalog modules.
catalogs:
- ...
# List of data product modules.
products:
- ...
נתונים: מיקום ב-BigQuery
הגדרת המיקום של מערכי הנתונים של המקור והיעד ב-BigQuery.
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
data.bigQueryLocation |
מיקום ב-BigQuery | US |
המיקום של מערך הנתונים ב-BigQuery (לדוגמה, US, us-central1 או europe-west1).
|
נתונים: מרחב שמות של Cortex
הגדרת מרחב השמות של Cortex Framework.
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
data.namespaces.name |
שם מרחב השמות | - | שם מרחב השמות של Cortex Framework. לדוגמה, cortex. |
data.namespaces.path |
נתיב מרחב שמות | - | נתיב מרחב השמות של Cortex Framework לספריות משנה שמשמשות בתיקייה src ובתיקייה config. לדוגמה, cortex. |
נתונים: מערכי נתונים של מקורות ויעדים ב-BigQuery
רשימת מערכי הנתונים מגדירה את נקודות החיבור של הנתונים הגולמיים הנכנסים ואת מיקומי האחסון של הנתונים היוצאים במסגרת. לכל מערך נתונים נרשם מזהה ייחודי שממופה לפרויקט ספציפי ב- Google Cloud ולמערך נתונים ב-BigQuery.
הפניות למערכי הנתונים מתבצעות מהמודולים באמצעות המזהה הייחודי שלהם.
# Dataset mapping
datasets:
- id: sap_raw
projectId: YOUR_SOURCE_PROJECT_ID
datasetId: cortex_sap_raw
- id: sap_foundation
projectId: YOUR_TARGET_PROJECT_ID
datasetId: cortex7_sap_data_foundation
בטבלה הבאה מפורטים הפרמטרים של מיפוי מערכי נתונים.
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
data.datasets.id |
מזהה קבוצת נתונים | - |
מגדיר מזהה ייחודי למערך הנתונים (למשל, sap_raw או sap_foundation). |
data.datasets.projectId |
מזהה פרויקט | - |
מפנה אל Google Cloud מזהה הפרויקט שבו מתארח מערך הנתונים. |
data.datasets.datasetId |
מזהה קבוצת הנתונים ב-BigQuery | - |
הפניה לשם בפועל של מערך הנתונים ב-BigQuery. |
נתונים: מודולים
המודולים מגדירים את המבנה והרכיבים של צינורות הנתונים של Dataform.
נתונים: מודולים: יסודות
בקטע הזה מגדירים את המודולים של שכבת בסיס הנתונים, שמבצעים עיבוד של נתונים מהשכבה הגולמית לייצוג סטנדרטי של הרשומות האחרונות של נתוני המקור. אם המקור מספק תצוגה של הרשומות האחרונות ישירות, או אם המערכת המקורית מבצעת טרנספורמציות כאלה, אפשר להגדיר את המודול כמקור חיצוני של שכבת נתונים בסיסית.
modules:
# List of foundation modules.
foundations:
# Unique identifier for the module instance.
- moduleId: erp
# Path of the module format: {namespace}.{systemtype:sap}.{module_type:foundations}.{subsystemtype:sap}, for example, cortex.sap.foundations.sap.
modulePath: cortex.sap.foundations.sap
# Reference to the source dataset ID.
dataSourceId: sap_raw
# Reference to the target dataset ID.
dataTargetId: sap_foundation
# Module-specific configuration settings.
moduleSettings:
# SAP version (for example, ecc, s4).
sapVersion: ecc
# SAP client number.
mandt: "100"
# Whether the module is enabled.
enabled: true
# Whether the foundation is external (does not create target dataset).
external: false
# Custom table settings file, relative to 'config/' file directory
# Recommended path: '{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml' (e.g. 'cortex/sap/foundations/sap/table_settings.yaml')
# Default path: '../src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml'
tableSettings: "custom_table_settings.yaml"
בטבלה הבאה מפורטים הפרמטרים של מודולי בסיס הנתונים להגדרת modules.foundations.
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
moduleId |
מזהה המודול | erp |
מזהה ייחודי של מופע ספציפי של מודול טרנספורמציה של שכבת נתונים בסיסית. |
modulePath |
נתיב המודול | cortex.sap.foundations.sap |
הגדרת הנתיב עם מרחב השמות למודול, ללוגיקה העסקית או לתבנית שהוחלו.
פורמט: {namespace}.{systemtype:sap}.{module_type:foundations}.{subsystemtype:sap} (לדוגמה, cortex.sap.foundations.sap). |
dataSourceId |
קישור למקור | sap_raw |
מפנה אל 'id' מהרשימה data.datasets כדי לשלוף נתונים. |
dataTargetId |
קישור היעד | sap_foundation |
מפנה אל ה-id מהרשימה data.datasets כדי לדחוף אליה נתונים. |
moduleSettings.sapVersion |
גרסת מערכת SAP | ecc |
רלוונטי רק למקורות נתונים של SAP. הפונקציה קובעת לוגיקה ספציפית למקור עבור מערכות ecc (ECC) או s4 (S/4HANA). |
moduleSettings.mandt |
לקוח SAP (Mandant) | 100 |
רלוונטי רק למקורות נתונים של SAP. מזהה הלקוח ב-SAP, בן 3 ספרות, שמשמש לסינון שורות נתונים. |
enabled |
הפעלת המודול | true |
המדיניות הזו קובעת אם המודול מופעל. |
external |
קרן חיצונית | false |
מציין אם השכבה הבסיסית היא חיצונית (לא יוצרת מערך נתונים של יעד). |
tableSettings |
הגדרות טבלה | src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml |
הנתיב לקובץ ההגדרה של הגדרות הטבלה בהתאמה אישית, ביחס לקובץ ההגדרה הזה. הנתיב המומלץ: ביחס לספרייה config/: '{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml' נתיב ברירת המחדל: '../src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml' |
נתונים: מודולים: קטלוגים
קטלוגים חיצוניים של lakehouse מאפשרים ל-Cortex Framework להטמיע טבלאות חיצוניות מקטלוגים וממאגרי שיתוף של BigLake Delta בלי מניפסטים פיזיים.
modules:
# List of external catalog modules.
catalogs:
# Unique identifier for the catalog.
- id: sap_bdc_catalog
# Type of the catalog.
type: lakehouse_delta_share
# Logical namespace prefixes bound by this catalog.
bindsNamespaces: [sap_bdc]
# Connection settings for the catalog.
connectionSettings:
# Unique identifier for the catalog.
catalogId: sap_bdc_catalog
# Unique identifier for the project hosting the catalog.
projectId: sap_bdc_delta_share
# Geographic region location for the catalog.
location: europe-west3
# List of shares to import.
shares:
- shareId: customer_v1_he2_100_p8123
- shareId: salesorder_v1_he2_100_p8124
# Whether the catalog is enabled.
# enabled: true
בטבלה הבאה מפורטים פרמטרים להגדרת קטלוג חיצוני.
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
id |
מזהה קטלוג | - | מזהה ייחודי של מופע ספציפי של מודול קטלוג חיצוני. |
type |
סוג הקטלוג | lakehouse_delta_share |
סוג הקטלוג. תמיכה בערך lakehouse_delta_share. |
bindsNamespaces |
מרחבי שמות מאוגדים | - | רשימה של קידומות לוגיות של מרחבי שמות שמוגבלות לקטלוג הזה (למשל, [sap_bdc]). |
connectionSettings.catalogId |
מזהה קטלוג פיזי | - | מזהה קטלוג פיזי. בדרך כלל זהה למזהה המודול. |
connectionSettings.projectId |
מזהה פרויקט | - | מזהה הפרויקט ב- Google Cloud שבו מנוהל החיבור לקטלוג. |
connectionSettings.location |
מיקום | - | המיקום של האזור הגיאוגרפי בקטלוג. |
connectionSettings.shares |
שיתופים | - | רשימה של שיתופים באמצעות Delta Sharing לייבוא. כל שיתוף חייב להכיל shareId. |
enabled |
הפעלת קטלוג | true |
המדיניות הזו קובעת אם הקטלוג מופעל. |
נתונים: מודולים: מוצרים
מודולים של מוצרי נתונים מגדירים את הצבירות, החישובים והצירופים שנדרשים כדי להפוך נתונים גולמיים לתובנות שמספקות מענה לתרחישי שימוש עסקיים ספציפיים.
ההגדרה של מוצרי הנתונים מאפשרת להגדיר מזהה ייחודי, להגדיר תלות וגם להפנות למודול של בסיס הנתונים ולמערך נתונים של היעד שבו התוצאות יאוחסנו.
ההגדרה המפורטת של מוצרי נתונים מסוימים מוגדרת בקבצים שמפנים אליהם באמצעות המפתח: tableSettings.
modules:
# List of data product modules.
products:
# Unique identifier for the data product instance.
- moduleId: sap_purchasing_organizational_structure
# Path of the data product (namespaced).
modulePath: cortex.sap.products.purchasing_organizational_structure
# Map of module dependencies.
dependencyBindings:
sapModule: erp
# Reference to the target dataset ID.
dataTargetId: product_target
# Whether the module is enabled.
enabled: true
# Whether this data product is synced to the Knowledge Catalog. Defaults to true.
syncToKc: true
# Custom table settings file, relative to 'config/' file directory
# Recommended path: '{namespace_dir}/{system_type}/products/{product_name}/table_settings.yaml'
# If omitted, defaults to '../src/data_modules/{namespace_dir}/{system_type}/products/{product_name}/table_settings.default.yaml'
# tableSettings: "custom_dataproduct_table_settings.yaml"
בטבלה הבאה מפורטים הפרמטרים של מודולים של מוצרי נתונים להגדרה של modules.products.
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
moduleId |
מזהה המודול | - | מזהה ייחודי של מופע ספציפי של מודול טרנספורמציה. |
modulePath |
נתיב המודול | - | הנתיב עם מרחב השמות למודול, ללוגיקה העסקית או לתבנית שהוחלו, בפורמט: {namespace}.{systemtype:sap}.{module_type:products}.{dataproduct_name}, לדוגמה, cortex.sap.products.purchasing_organizational_structure, מוגדר בתיקייה src/data_modules/{namespace_dir}/{system_type}/products/{product_name}. |
dataTargetId |
קישור היעד | product_target |
מפנה אל ה-id מרשימת היעדים כדי לשלוח אליו נתונים. |
dependencyBindings |
תלות ב-Upstream | sapModule: erp |
מציינת מיפויים לסיפוק יחסי תלות של מודולים. לדוגמה, מיפוי של sapModule ל-erp. |
enabled |
הפעלת המודול | true |
המדיניות הזו קובעת אם המודול מופעל. |
syncToKc |
סנכרון של Knowledge Catalog | true |
האם מוצר הנתונים הזה מסונכרן עם Knowledge Catalog. |
tableSettings |
הגדרות טבלה | src/data_modules/{namespace_dir}/{system_type}/products/{product_name}/table_settings.default.yaml |
הנתיב לקובץ ההגדרה של הגדרות הטבלה בהתאמה אישית, ביחס לקובץ ההגדרה הזה. נתיב מומלץ: ביחס לספרייה config/: '{namespace_dir}/{system_type}/products/{product_name}/table_settings.yaml' נתיב ברירת מחדל: '../src/data_modules/{namespace_dir}/{system_type}/products/{product_name}/table_settings.default.yaml' |
סביבת פריסה
ב-Cortex Framework נעשה שימוש ב-Dataform כדי לתזמן טרנספורמציות של SQL ב-BigQuery. הבלוק deployment:
מגדיר את התצורה של Dataform, שאחראית להרצת צינורות הנתונים, כולל פרויקט המאגר, המיקום, שם המאגר ושם סביבת העבודה של Dataform.
deployment:
targets:
- type: dataform
enabled: true
targetSettings:
repositoryProjectId: YOUR_REPO_PROJECT_ID
repositoryRegion: us-central1
repositoryName: cortex-repository
workspaceName: dev
# serviceAccount: "example@example.com"
בטבלה הבאה מפורטים פרמטרים של מיקום יעדי הפריסה (deployment.targets:).
| פרמטר | משמעות | ערך ברירת המחדל | תיאור |
|---|---|---|---|
type |
סוגי פריסה לבחירה | dataform |
סוג יעדי הפריסה. |
enabled |
מופעל/ מושבת | true |
ההגדרה קובעת אם יעד הפריסה שצוין מופעל או מושבת. |
targetSettings.repositoryProjectId |
מזהה פרויקט המאגר | YOUR_REPO_PROJECT_ID |
מזהה הפרויקט ב- Google Cloud שבו מאוחסן מאגר Dataform. |
targetSettings.repositoryRegion |
אזור המאגר | us-central1 |
ה Google Cloud אזור של מאגר Dataform (לדוגמה, us-central1 או europe-west1). |
targetSettings.repositoryName |
שם המאגר | cortex-repository |
השם הספציפי של מאגר Dataform. |
targetSettings.workspaceName |
שם החשבון ב-Workspace | dev |
סביבת העבודה הספציפית ב-Dataform שמשמשת למחזור הפריסה. |
targetSettings.serviceAccount |
כתובת האימייל של חשבון השירות | - |
כתובת האימייל של חשבון השירות שמוגדר כברירת מחדל להרצת מאגר Dataform. |
קובץ תצורה: table_settings.yaml
במדריך הזה מוסבר איך להשתמש בקובץ table_settings.yaml כדי להגדיר טבלאות של בסיס נתונים ושל מוצרי נתונים ב-Google Cloud Cortex Framework.
מודול הנתונים הספציפי table_settings.yaml קובץ שולט באופן ההתאמה של טבלאות מקור גולמיות ושל מודלים של נתונים אנליטיים ב-BigQuery. באמצעות הקובץ הזה, אפשר להגדיר תגים, אסטרטגיות של יצירת תצוגות חומריות ותכונות מתקדמות של ביצועים ב-BigQuery, כמו חלוקה למחיצות או סידור באשכולות.
פתרון דינמי של תלות
כברירת מחדל, Cortex Framework מבצע אופטימיזציה של טביעת הרגל של הפריסה ושל זמן הביצוע, על ידי פריסה והידור רק של טבלאות הבסיס שנדרשות כתלות במוצרי הנתונים שהופעלו. אם בטבלה שהוגדרה ב-table_settings.yaml אין מוצרי נתונים פעילים במורד הזרם שתלויים בה, היא לא תיכלל בפריסה.
כדי לבטל את האופטימיזציה הזו ולכפות פריסה של טבלת בסיס, אפשר להגדיר את מאפיין deployAlways לערך true (ראו הפניה לפרמטרים של סגנון שכבת בסיס הנתונים).
ב-Google Cloud Cortex Framework, אפשר להקצות לכל מודול (הגדרות בסיסיות או מוצר) קובץ הגדרות טבלה ספציפי בקובץ הגדרות הפריסה: config/config.yaml באמצעות המאפיין tableSettings.
נתיבי המרות
- הגדרות מותאמות אישית (מומלץ): כדי להתאים אישית את אופן הפעולה של הטבלה, מעתיקים את קובץ ברירת המחדל לספריית ההגדרות, משנים אותו ומפנים לנתיב שלו ב-
config/config.yaml. הנתיבים המומלצים לשימוש (ביחס לספרייהconfig/) הם:- מודולים של Foundation:
namespace_dir/system_type/foundations/system_sub_type/custom_table_settings.yaml(למשל,config/cortex/sap/foundations/sap/table_settings.yaml) - מודולים של מוצרים:
namespace_dir/system_type/products/product_name/custom_table_settings.yaml(לדוגמה,config/cortex/sap/products/accounting_documents/table_settings.yaml)
- מודולים של Foundation:
- ברירת מחדל: אם לא מציינים את
tableSettings, המערכת חוזרת אוטומטית לברירת המחדל:- מודולים של Foundation:
../src/data_modules/namespace_dir/system_type/foundations/system_sub_type/table_settings.default.yaml - מודולים של מוצרים:
../src/data_modules/namespace_dir/system_type/products/product_name/table_settings.default.yaml
- מודולים של Foundation:
סגנונות הגדרה
יש שני סגנונות סכימה שונים ל-table_settings.yaml בהתאם לקטגוריה של המודול:
סגנון Data Foundation: מיפוי מבוסס-רשימה שמגדיר את קשרי הגומלין בין סכימת המקור לסכימת היעד, טיפול ב-CDC (Change Data Capture) ופריסת BigQuery. שימו לב שפריסת הגדרות הטבלה של שכבת בסיס הנתונים היא ספציפית למערכת המקור.
סגנון של מוצר נתונים: מיפוי מבוסס-מיפוי (מילון) שמגדיר איך תצוגות או טבלאות אנליטיות ממומשות (למשל, כתצוגות, טבלאות או טבלאות מצטברות) ועוברות אופטימיזציה.
שני הסגנונות תומכים בשלושה קטעים ברמת הבסיס כדי להפריד בין ההגדרות לפי גרסת מערכת המקור (השימוש העיקרי הוא ב-SAP Data Foundation ובמוצרים שתלויים ב-SAP):
-
ecc: ההגדרות חלות רק כשפורסים מערכת מקור של SAP ECC. -
s4: ההגדרות חלות רק כשפורסים מערכת מקור של SAP S/4HANA. -
common: ההגדרות חלות ללא קשר לגרסת SAP (ההגדרה הזו משמשת להגדרות תואמות או אוניברסליות).
סגנון של תשתית נתונים ל-SAP ERP
במודול של שכבת נתונים למערכות מקור של SAP ERP, קובץ table_settings.yaml בנוי כרשימה של פריטי טבלה מתחת למפתחות ecc, s4 ו-common. כל פריט ממפה טבלת מקור גולמית לטבלת יעד מותאמת ומגדיר את ההגדרות שלה ב-BigQuery.
דוגמה לתחביר YAML
common:
- source:
tableName: raw_custom_bkpf
sapTableName: bkpf
isCdc: true
target:
tableName: bkpf # Optional: defaults to source tableName if omitted
bigQueryLabels:
- key: data_class
value: transactional
- key: line_of_business
value: finance
dataformTags: [sap, common, finance, hourly]
clusterDetails:
columns: [bukrs, gjahr]
partitionDetails:
column: budat
partitionType: time
timeGrain: day
deployAlways: false
הפניה לפרמטר
| פרמטר | סוג | חובה | ברירת מחדל / דוגמה | תיאור |
|---|---|---|---|---|
[].source |
object |
כן | [] |
תיאור הטבלה במערכת המקור הנכנסת של שכבת הבסיס לנתונים (לדוגמה, `sap_raw`). ראו הגדרות מקור. |
[].target |
object |
כן | [] |
תיאור של טבלת היעד במערכי הנתונים של שכבת הבסיס לנתונים (למשל, `sap_data_foundation`). ראו הגדרות יעד. |
ecc | s4 | common |
string |
לא | [] |
גרסה או דיאלקט של מערכת המקור. |
[].deployAlways |
boolean |
לא | false |
אם true, הטבלה תמיד תופעל ותיבנה, גם אם כללי האופטימיזציה עשויים לדלג עליה. אפשר לעיין גם במאמר בנושא פתרון דינמי של תלות |
הגדרת המקורות
הגדרת המאפיינים של הטבלה הנכנסת הגולמית.
| פרמטר | סוג | חובה | ברירת מחדל / דוגמה | תיאור |
|---|---|---|---|---|
tableName |
string |
כן | - |
השם של טבלת המקור הגולמי ב-BigQuery (לא תלוי באותיות רישיות), כפי שהוא מיובא על ידי המחבר ממערכת המקור . |
sapTableName |
string |
לא | - |
שם טבלת SAP (לא תלוי אותיות רישיות) כפי שמוגדר בטבלאות המטא-נתונים של מערכת המקור (לדוגמה, `DD03L`). אם הפרמטר הזה מוגדר, הוא משמש כשם של טבלת בסיס הנתונים התואמת. |
isCdc |
boolean |
לא | true |
מציין אם טבלת המקור מכילה יומני רישום של לכידת נתונים משתנים (CDC).
• • |
הגדרות היעד
המאפיין מגדיר את פריסת הטבלה התואמת בפלט במערך הנתונים של היעד.
| פרמטר | סוג | חובה | ברירת מחדל / דוגמה | תיאור |
|---|---|---|---|---|
tableName |
string |
לא | *(כמו במקור)* | השם של טבלת היעד המאוחדת שרוצים ליצור. אם לא מציינים את המסגרת, ברירת המחדל היא המקור tableName. |
dataformTags |
array[string] |
לא | [sap, finance] |
רשימה של תגי מטא-נתונים שמצורפים לפעולה שתואמת ב-Dataform. אלה מחרוזות שרירותיות שלא צריך לרשום מראש או להגדיר בהגדרות אחרות. אפשר להשתמש בהן באופן מיידי כדי לסנן הפעלות של צינורות (למשל, באמצעות dataform run --tags ...). |
bigQueryLabels |
array[map] |
לא | - |
רשימה של צמדי מפתח/ערך שמייצגים תוויות של BigQuery להחלה על טבלת היעד (לדוגמה, מפתח: data_class, ערך: transactional). |
clusterDetails |
map |
לא | — | זה שינוי אופציונלי. הגדרת יצירת אשכולות ב-BigQuery. פרטים על אשכולים |
partitionDetails |
map |
לא | — | זה שינוי אופציונלי. הגדרת חלוקה למחיצות ב-BigQuery. פרטים על חלוקה למחיצות |
סגנון נתוני המוצר
במודול של מוצר נתונים, קובץ table_settings.yaml (בלוק ProductTableSettings) בנוי כמילון (map) מתחת למפתחות הבסיס ecc, s4 ו-common. המפתחות במילון הזה מייצגים את השמות של טבלת הניתוח או התצוגה הממוקדת (לא תלוי באותיות רישיות), וכל ערך הוא בלוק הגדרה של Product TableItem (ProductTableItem) שמגדיר אסטרטגיות של יצירת תצוגות חומריות, הפעלה של טבלה ואופטימיזציה של הביצועים.
דוגמה לתחביר YAML
common:
currency_conversion:
materializationType: table
bigQueryLabels:
- key: data_class
value: transactional
- key: line_of_business
value: finance
dataformTags: [sap, dataproduct, common]
enabled: true
retentionDays: 365 # Custom parameter passed to Dataform context
s4:
customers:
materializationType: incremental
bigQueryLabels:
- key: data_class
value: master
dataformTags: [sap, dataproduct, masterdata]
enabled: true
clusterDetails:
columns: [mandt, ktokd]
partitionDetails:
column: erdat
partitionType: time
timeGrain: day
הפניה לפרמטר
| פרמטר | סוג | חובה | ברירת מחדל / דוגמה | תיאור |
|---|---|---|---|---|
ecc | s4 | common |
map |
לא | {} |
מיפוי של נכסי ניתוח נתונים (טבלאות או תצוגות) אל ProductTableItem תיאורי ההגדרות שלהם. |
[table_name] |
map |
לא | {} |
בלוק הסכימה של המתאר Product Table Item מגדיר נכס אנליטי ספציפי. |
[table_name].enabled |
boolean |
לא | true |
קובעת אם הטבלה או התצוגה האנליטית ([table_name]) פעילות ונכללות כשיוצרים את סביבת העבודה של Dataform.
• • |
[table_name].materializationType |
string |
לא | incremental |
איך נכס הניתוח נוצר ב-BigQuery.
ערכים מותרים:
|
[table_name].dataformTags |
array[string] |
לא | [sap, dataproduct] |
תגי מטא-נתונים שמצורפים לנכס האנליטי ב-Dataform. אלה מחרוזות שרירותיות שלא צריך לרשום מראש. אפשר להשתמש בהן באופן מיידי להרצת צינורות נתונים סלקטיביים (לדוגמה, באמצעות dataform run --tags ...). |
[table_name].bigQueryLabels |
array[map] |
לא | - |
רשימה של צמדי מפתח/ערך שמייצגים תוויות של BigQuery להחלה על נכס הניתוח של היעד (לדוגמה, מפתח: data_class, ערך: master). |
[table_name].clusterDetails |
map |
לא | — | זה שינוי אופציונלי. הגדרת יצירת אשכולות ב-BigQuery. פרטים על אשכולים |
[table_name].partitionDetails |
map |
לא | — | זה שינוי אופציונלי. הגדרת חלוקה למחיצות ב-BigQuery. פרטים על חלוקה למחיצות |
הגדרות מתקדמות של BigQuery
בשני הסגנונות יש אותו מבנה לאופטימיזציה של האחסון ב-BigQuery ושל ביצועי השאילתות באמצעות חלוקה למחיצות וסידור באשכולות.
פרטי האשכול
האשכולות ממקמים נתונים במשותף על סמך הערכים בעמודות ספציפיות. המערכת של BigQuery ממיינת את הנתונים בכל בלוק אחסון באמצעות העמודות האלה, מה שמאיץ באופן משמעותי את השאילתות שמסננות (WHERE) או מאחדות (JOIN) את הנתונים.
clusterDetails:
columns: [bukrs, gjahr]
הפניה לפרמטר
| פרמטר | סוג | חובה | דוגמה | תיאור |
|---|---|---|---|---|
columns |
array[string] |
כן | [bukrs, gjahr] |
רשימה מסודרת של עד ארבעה שמות עמודות שלפיהם הטבלה תאורגן באשכולות.
הגבלה: העמודות חייבות להיות אלפאנומריות ולהכיל רק קווים תחתונים. הסדר של העמודות ברשימה קובע את היררכיית המיון. |
פרטי החלוקה למחיצות
חלוקה למחיצות מחלקת טבלה גדולה לפלחים פיזיים קטנים יותר על סמך הערכים של עמודה עם תאריך, חותמת זמן או מספר שלם. כך נמנעת סריקה של כל הטבלה ב-BigQuery, כששאילתה מבקשת רק טווח ספציפי של ימים, חודשים או מזהים.
partitionDetails:
column: budat
partitionType: time
timeGrain: day
הפניה לפרמטר
| פרמטר | סוג | חובה | דוגמה | תיאור |
|---|---|---|---|---|
column |
string |
כן | budat |
שם העמודה שמשמשת לחלוקת הטבלה למחיצות. חייב להכיל רק תווים אלפאנומריים וקווים תחתונים. סוג העמודה צריך להיות זהה לpartitionType. |
partitionType |
string |
כן | time |
אסטרטגיית החלוקה למחיצות.
ערכים מותרים:
|
timeGrain |
string |
לא | day |
חובה אם הערך של partitionType הוא time או DATE. הגדרה של רמת הפירוט של מחיצות הזמן.
הערכים המותרים: |
rangeStart |
integer |
לא | 1 |
חובה אם הערך של partitionType הוא integer. ערך ההתחלה של המחיצה הראשונה (כולל). |
rangeEnd |
integer |
לא | 1000 |
חובה אם הערך של partitionType הוא integer. ערך הסיום של המחיצה האחרונה (לא כולל). |
rangeInterval |
integer |
לא | 10 |
חובה אם הערך של partitionType הוא integer. הרוחב של כל מרווח חלוקה. |
דוגמאות
בדוגמאות הבאות מוצגים תבניות הגדרה של מודולים של בסיס נתונים ושל מוצר נתונים. הדוגמאות מראות איך להתאים אישית טבלאות יעד, איך לבצע אופטימיזציה של פריסת האחסון ב-BigQuery ואיך להגדיר סוגי מימוש.
1. דוגמה להגדרות של טבלת נתונים בסיסית בהתאמה אישית
בדוגמה הזו מוצג אופן ההגדרה של שכבת בסיס עם טבלאות טרנזקציות מקובצות ומחולקות (כמו bseg ו-ekbe) לצד טבלאות נתונים רגילות:
# ==============================================================================
# S/4HANA-Specific Tables
# ==============================================================================
s4:
# ACDOCA is a massive table in S/4HANA; clustering is vital
- source:
tableName: acdoca
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, s4, finance, transactional, hourly]
clusterDetails:
columns: [rclnt, rbukrs, gjahr]
# ==============================================================================
# ECC-Specific Tables
# ==============================================================================
ecc:
- source:
tableName: faglflexa
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, ecc, finance, transactional, hourly]
# ==============================================================================
# Common Tables (ECC & S/4HANA)
# ==============================================================================
common:
# Financial document header (partitioned by posting date)
- source:
tableName: bkpf
isCdc: true
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, common, finance, hourly]
clusterDetails:
columns: [bukrs, gjahr]
partitionDetails:
column: budat
partitionType: time
timeGrain: day
# Purchasing document items (partitioned by creation date)
- source:
tableName: ekpo
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, common, logistics, purchasing, hourly]
clusterDetails:
columns: [mandt, ebeln]
partitionDetails:
column: aedat
partitionType: time
timeGrain: month
# Standard master data table (no partitioning/clustering needed)
- source:
tableName: lfa1
target:
bigQueryLabels:
- key: data_class
value: master
dataformTags: [sap, common, masterdata, vendor, daily]
2. דוגמה להגדרות של טבלת נתוני מוצרים בהתאמה אישית
בדוגמה הזו מוצגות הגדרות של סוגי מימוש למוצרי נתונים אנליטיים במורד הזרם. אנחנו מגדירים את sales_documents כטבלה מצטברת כדי לבצע אופטימיזציה של ביצועי הבנייה ולחסוך בעלויות, בעוד שטבלאות נתונים לא טרנזקציוניות כמו customers נבנות כטבלאות רגילות:
# settings applied for both ECC and S/4HANA pipelines
common:
# Transactional data product - incremental build
sales_documents:
materializationType: incremental
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, dataproduct, sales, transactional]
clusterDetails:
columns: [vkorg, vbeln]
partitionDetails:
column: audat
partitionType: time
timeGrain: day
# Master data product - full table rebuild
customers:
materializationType: table
bigQueryLabels:
- key: data_class
value: master
dataformTags: [sap, dataproduct, masterdata]
clusterDetails:
columns: [mandt, ktokd]
# Aggregated reporting view - virtual view
sales_performance_summary:
materializationType: view
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, dataproduct, sales, reporting]
מדריכים
בקטע הזה מפורטים מדריכים שלב אחר שלב למשימות נפוצות של הגדרה ולתרחישי פריסה בהתאמה אישית.
התאמה אישית של היקף הטבלה במודול של שכבת נתונים
כדי להוסיף או להסיר טבלאות במודול קיים של שכבת נתונים בלי ליצור מודולים חדשים או להריץ מופעים נפרדים של צינורות:
- מעתיקים את הגדרות ברירת המחדל של
table_settings.default.yamlלספריית ההגדרות של סביבת העבודה (לדוגמה,config/cortex/sap/foundations/sap/custom_table_settings.yaml). - בקובץ החדש, מוסיפים את הטבלאות המותאמות אישית או מסירים טבלאות סטנדרטיות שלא בשימוש במקשי
ecc,s4אוcommonלפי הצורך:
common:
- source:
tableName: custom_table_name
target:
dataformTags: [custom_tag]
- מעדכנים את
config/config.yamlכך שיפנה לנתיב של הגדרות הטבלה המותאמת אישית במאפייןtableSettingsשל המודול:
data:
modules:
foundations:
- moduleId: erp
modulePath: cortex.sap.foundations.sap
# Custom table settings file, relative to configuration file directory
# Recommended path: '{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml'
tableSettings: 'cortex/sap/foundations/sap/custom_table_settings.yaml'
- כדי להוסיף הערות (תיאורי טבלאות ועמודות) לסכימת הטבלה של הטבלה הנוספת, יוצרים קובץ הערות במרחב השמות של מודול שכבת הנתונים שבו אתם משתמשים. בדוגמה הזו, על סמך
modulePath: cortex.sap.foundations.sap, הנתיב לשמירת קובץ ההערותcustom_table_name.yamlהואsrc/data_modules/cortex/sap/foundations/sap/annotations. הפורמט של קובצי ההערות מתואר במדריך להרחבת היכולות של שכבת בסיס הנתונים.
הגדרה של כמה מופעים של מודול של פלטפורמה לניהול נתונים
כדי לפרוס שני מופעים נפרדים של צינורות או יותר מאותו סוג מודול (לדוגמה, תמיכה בכמה מופעים של SAP, כדי לפלח טבלאות, לבודד סביבות או לטרגט מערכי נתונים שונים).
לפני שמתחילים:
- מוודאים שטבלאות המקור קיימות במערך הנתונים הגולמי של המקור.
- כשעובדים עם מודולים של SAP Data Foundation, צריך לוודא שטבלת המטא-נתונים
DD03Lמכילה עמודות ופרטי תיאור של הטבלאות המותאמות אישית שרוצים להטמיע. פרטים נוספים מופיעים במאמר בנושא דרישות SAP ERP.
הוראות:
- בקובץ
config/config.yaml, מוסיפים הגדרות של יעדים בקטעdata.targetsכדי להגדיר מערכי נתונים של יעדים לכל מופע של צינור:
data:
targets:
- id: data_foundation_core
projectId: target_project_id
datasetId: data_foundation_sap_core
- id: data_foundation_custom
projectId: target_project_id
datasetId: data_foundation_sap_custom
- מגדירים כמה מופעים של המודול ברשימה
data.modules.foundations. נותנים לכל מופעmoduleIdייחודי, מזהים משלו של מערך נתונים יעד, ואפשרות להגדירtableSettings:
data:
modules:
foundations:
# Core SAP ERP foundation module instance
- moduleId: erp_core
modulePath: cortex.sap.foundations.sap
dataSourceId: sap_raw
dataTargetId: data_foundation_core
# If omitted, defaults to "../src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml"
# tableSettings: "../src/data_modules/cortex/sap/foundations/sap/table_settings.default.yaml"
# Custom tables pipeline instance
- moduleId: erp_custom
modulePath: cortex.sap.foundations.sap
dataSourceId: sap_raw
dataTargetId: data_foundation_custom
# Custom table settings file, relative to configuration file directory
# Recommended path: '{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml'
tableSettings: "cortex/sap/foundations/sap/custom_datafoundation_table_settings.yaml"
- יוצרים את הקובץ
config/cortex/data_foundation/sap/custom_datafoundation_table_settings.yamlומציינים את ההיקף המותאם אישית. E.g.:
common:
- source:
tableName: custom_sap_table_name
target:
dataformTags: [sap, s4, hourly]
clusterDetails:
columns: [carrid, connid]
partitionDetails:
column: fldate
partitionType: time
timeGrain: day
כדי להוסיף הערות (תיאורי טבלאות ועמודות) לסכימת הטבלה של הטבלה הנוספת, יוצרים קובץ הערות במרחב השמות של מודול שכבת הנתונים שבו אתם משתמשים. בדוגמה הזו, על סמך
modulePath: cortex.sap.foundations.sap, הנתיב לשמירת קובץ ההערותcustom_table_name.yamlהואsrc/data_modules/cortex/sap/foundations/sap/annotations. הפורמט של קובצי ההערות מתואר במדריך ליכולת הרחבה של שכבת בסיס הנתונים.מריצים את סקריפט הפריסה (
uv run cortex-build-and-deploy) כדי להחיל את השינויים, ואז מבצעים את הפעולות של Dataform כמו שמתואר במאמר שלבים אחרי הפריסה.