הגדרת התצורה של פריסה

בדף הזה מוסברות אפשרויות ההגדרה של הפריסה של Cortex Framework בתחומים הבאים:

בדף הזה יש גם מדריכים עם הוראות מפורטות לתרחישים נפוצים של פריסה.

קובץ תצורה: config/config.yaml

קובץ config/config.yaml – בדרך כלל מאותחל מתבנית config/config.yaml.example – משמש כהגדרה הראשית לפריסת Cortex Framework. ההגדרה מחולקת לבלוקים המבניים הבאים:

  1. סביבת build (buildEnvironment): שולטת בשכבת תזמור הבנייה, ומציינת את פרויקט Google Cloud המרכזי שבו מתבצעים חיובים וחישובים של מטא-נתונים ביניים, אימותי מסד נתונים וחיפושי סכימה.
  2. נתונים (data): קובעים את ארכיטקטורת הנתונים הלוגית. בלוק ההגדרה הזה מגדיר את המיקומים של מערכי הנתונים, את הגבולות של מרחב השמות, את פרטי החיבור למקורות של נתונים גולמיים להטמעה, את מערכי הנתונים של היעד ורושם את המופעים של מודול הנתונים (foundations, catalogs ו-products).
  3. פריסה (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)
  • ברירת מחדל: אם לא מציינים את 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

סגנונות הגדרה

יש שני סגנונות סכימה שונים ל-table_settings.yaml בהתאם לקטגוריה של המודול:

  1. סגנון Data Foundation: מיפוי מבוסס-רשימה שמגדיר את קשרי הגומלין בין סכימת המקור לסכימת היעד, טיפול ב-CDC (Change Data Capture) ופריסת BigQuery. שימו לב שפריסת הגדרות הטבלה של שכבת בסיס הנתונים היא ספציפית למערכת המקור.

  2. סגנון של מוצר נתונים: מיפוי מבוסס-מיפוי (מילון) שמגדיר איך תצוגות או טבלאות אנליטיות ממומשות (למשל, כתצוגות, טבלאות או טבלאות מצטברות) ועוברות אופטימיזציה.

שני הסגנונות תומכים בשלושה קטעים ברמת הבסיס כדי להפריד בין ההגדרות לפי גרסת מערכת המקור (השימוש העיקרי הוא ב-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).

‫• true (ברירת מחדל): המסגרת מעבדת יומני CDC (באמצעות חותמות זמן של רשומות ודגלי פעולה) כדי לשחזר את המצב התואם האחרון.

‫• false: הטבלה מעובדת כקובץ snapshot מלא.

הגדרות היעד

המאפיין מגדיר את פריסת הטבלה התואמת בפלט במערך הנתונים של היעד.

פרמטר סוג חובה ברירת מחדל / דוגמה תיאור
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.

‫• true (ברירת מחדל): הגדרת הטבלה מעובדת, מועשרת במאפייני table_config ומועתקת לספריית הפלט של Dataform.

‫• false: הגדרת הטבלה מדלגת במהלך ה-build (SapProductBuilder מתעדת את זה ביומנים ומשמיטה אותה). הטבלה או התצוגה לא יועתקו או ייבנו ב-Dataform, ולמעשה לא ייכללו בפריסה בלי למחוק את קובצי הגדרת המקור.

[table_name].materializationType string לא incremental איך נכס הניתוח נוצר ב-BigQuery.

ערכים מותרים:

  • incremental (ברירת מחדל): המערכת מעבדת רק רשומות חדשות או מעודכנות מאז ההרצה האחרונה. מומלץ להשתמש באפשרות הזו לקבוצות גדולות של נתונים טרנזקציוניים כדי לחסוך בעלויות.
  • table: הטבלה נבנית מחדש לגמרי בכל הפעלה.
  • view: פריסת הנכס כתצוגת SQL ב-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 אסטרטגיית החלוקה למחיצות.

ערכים מותרים:

  • time: חלוקה למחיצות לפי יחידת זמן (עמודה מסוג Date,‏ Timestamp או Datetime).
  • DATE: חלוקה למחיצות באופן מפורש לפי עמודת תאריך.
  • integer: חלוקה למחיצות לפי טווח של מספרים שלמים.
timeGrain string לא day חובה אם הערך של partitionType הוא time או DATE. הגדרה של רמת הפירוט של מחיצות הזמן.

הערכים המותרים: hour, ‏ day, ‏ month, ‏ year (לא תלויי-רישיות).

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 כמו שמתואר במאמר שלבים אחרי הפריסה.