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

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

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

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

קובץ config/config.yaml – בדרך כלל מאותחל מתבנית config/config.yaml.example – משמש כהגדרה הראשית לפריסת Cortex Framework. הוא מגדיר פרמטרים קריטיים, כולל פרויקט הביצוע של היעד Google Cloud , מערכי הנתונים של BigQuery במקור וביעד, ומפרטים של Dataform כמו שמות המאגר וסביבת העבודה.

בקטעים הבאים מפורט המבנה של config/config.yaml.

סביבת 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: cortex
  # List of source datasets.
  sources:
    - ...
  # List of target datasets.
  targets:
    - ...

  # Configuration for data foundation and product modules.
  modules:
    # List of foundation modules.
    foundation:
    - ... 
    # List of data product modules.
    product:
    - ...

נתונים: מיקום ב-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

רשימת המקורות מגדירה מערכי נתונים ב-BigQuery שבהם הנתונים הגולמיים ממערכת המקור שוכפלו או הועברו בסטרימינג.

יעדי הייצוא מגדירים רשימה של מערכי נתונים ב-BigQuery שבהם יאוחסנו מערכי הנתונים שעברו עיבוד ב-Dataform.

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

# Data source and target mapping
sources:
  - id: sap_raw
    projectId: YOUR_SOURCE_PROJECT_ID
    datasetId: cortex_sap_raw

targets:
  - id: sap_foundation
    projectId: YOUR_TARGET_PROJECT_ID
    datasetId: cortex7_sap_data_foundation

בטבלה הבאה מתוארים הפרמטרים של מיפוי מקור הנתונים והיעד.

פרמטר משמעות ערך ברירת המחדל תיאור
data.sources.id מזהה מקור - המאפיין מגדיר את ה-id של מערך הנתונים שממנו יתבצע שליפת הנתונים. לדוגמה, sap_raw.
data.sources.projectId מזהה פרויקט המקור YOUR_SOURCE_PROJECT_ID מפנה אל Google Cloud מזהה הפרויקט עם נתוני המקור.
data.sources.datasetId מזהה מערך הנתונים של BigQuery במקור - מפנה למזהה של מערך הנתונים ב-BigQuery עם נתוני המקור. לדוגמה, cortex_sap_raw.
data.targets.id מזהה יעד - מגדיר את המזהה של קבוצת הנתונים של היעד. לדוגמה, sap_foundation.
data.targets.projectId מזהה פרויקט היעד YOUR_TARGET_PROJECT_ID מפנה אל מזהה הפרויקט ב- Google Cloud של נתוני היעד.
data.targets.datasetId מזהה מערך הנתונים של BigQuery שמשמש כיעד - מפנה למזהה של מערך הנתונים ב-BigQuery של נתוני היעד. לדוגמה, cortex7_sap_data_foundation.

נתונים: מודולים

המודולים מגדירים את המבנה והרכיבים של צינורות הנתונים של Dataform.

נתונים: מודולים: בסיס

בקטע הזה מגדירים את המודולים של שכבת בסיס הנתונים שמבצעים עיבוד של נתונים מהשכבה הגולמית (זרמי CDC) לייצוג סטנדרטי של הרשומות האחרונות של נתוני המקור. אם המקור מספק תצוגה של הרשומות האחרונות ישירות, או אם המערכת המקורית מבצעת טרנספורמציות כאלה, אפשר להגדיר את המודול כמקור חיצוני של שכבת נתונים בסיסית.

modules:
  # List of foundation modules.
  foundation:
    # Unique identifier for the module instance.
    - moduleId: erp
      # Type of the module (namespaced, for example, cortex.sap).
      type: cortex.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}/data_foundation/{data_foundation_module_type}/table_settings.yaml'
      # Default path: '../src/data_modules/{namespace}/data_foundation/{data_foundation_module_type}/table_settings.default.yaml'
      # tableSettings: "custom_datafoundation_table_settings.yaml"

בטבלה הבאה מפורטים הפרמטרים של מודולי בסיס הנתונים להגדרת modules.foundation.

פרמטר משמעות ערך ברירת המחדל תיאור
moduleId מזהה המודול erp מזהה ייחודי של מופע ספציפי של מודול טרנספורמציה של שכבת נתונים בסיסית.
type סוג הלוגיקה של המודול cortex.sap הגדרת הלוגיקה העסקית או התבנית שמוחלת (לדוגמה, cortex.sap).
dataSourceId קישור למקור sap_raw מפנה אל ה-id מהרשימה data.sources כדי לשלוף נתונים.
dataTargetId קישור היעד sap_foundation מפנה אל ה-id מרשימת היעדים כדי לדחוף אליו נתונים.
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}/data_foundation/{data_foundation_module_type}/table_settings.default.yaml הנתיב לקובץ ההגדרה של הגדרות הטבלה בהתאמה אישית, ביחס לקובץ ההגדרה הזה.
נתיב מומלץ: ביחס לספרייה config/:‏ '{namespace}/data_foundation/{data_foundation_module_type}/table_settings.yaml'
נתיב ברירת מחדל: '../src/data_modules/{namespace}/data_foundation/{data_foundation_module_type}/table_settings.default.yaml'

נתונים: מודולים: מוצרים

מודולים של מוצרי נתונים מגדירים את הצבירות, החישובים והצירופים שנדרשים כדי להפוך נתונים גולמיים לתובנות שמספקות מענה לתרחישי שימוש עסקיים ספציפיים.

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

ההגדרה המפורטת של מוצרי נתונים מסוימים מוגדרת בקבצים שמקושרים למפתח: tableSettings.

modules:
  # List of data product modules.
  product:
    # Unique identifier for the data product instance.
    - moduleId: sap_purchasing_organizational_structure
      # Type of the data product (namespaced).
      type: cortex.purchasing_organizational_structure
      # Map of module dependencies.
      dependsOn:
        sapModule: erp
      # Reference to the target dataset ID.
      dataTargetId: product_target
      # Whether the module is enabled.
      # enabled: true

      # Custom table settings file, relative to 'config/' file directory
      # Recommended path: '{namespace}/data_product/{data_product_module_type}/table_settings.yaml'
      # If omitted, defaults to '../src/data_modules/{namespace}/data_product/{data_product_module_type}/table_settings.default.yaml'
      # tableSettings: "custom_dataproduct_table_settings.yaml"

בטבלה הבאה מפורטים הפרמטרים של מודולים של מוצרי נתונים להגדרת modules.product.

פרמטר משמעות ערך ברירת המחדל תיאור
moduleId מזהה המודול - מזהה ייחודי של מופע ספציפי של מודול טרנספורמציה.
type סוג הלוגיקה של המודול - הגדרת הלוגיקה העסקית או התבנית שחלות, שמוגדרות בתיקייה src/data_modules/{namespace}/data_product/{data_product_module_type}.
dataTargetId קישור היעד product_target מפנה אל ה-id מרשימת היעדים כדי לדחוף אליו נתונים.
dependsOn תלות ב-Upstream sapModule: erp מציין איזה מודול בסיס צריך להיות קיים לפני שאפשר לבנות את מודול המוצר.
enabled הפעלת המודול true קובעת אם המודול מופעל.
tableSettings הגדרות טבלה src/data_modules/{namespace}/data_product/{data_product_module_type}/table_settings.default.yaml הנתיב לקובץ ההגדרה של הגדרות הטבלה בהתאמה אישית, ביחס לקובץ ההגדרה הזה.
נתיב מומלץ: ביחס לספרייה `config/`:‏ '{namespace}/data_product/{data_product_module_type}/table_settings.yaml'
נתיב ברירת מחדל:‏ '../src/data_modules/{namespace}/data_product/{data_product_module_type}/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/data_foundation/data_foundation/custom_table_settings.yaml (למשל, config/cortex/data_foundation/sap/table_settings.yaml)
    • מודולים של מוצרים: namespace/data_product/data_product/custom_table_settings.yaml (לדוגמה, config/cortex/data_product/accounting_documents/table_settings.yaml)
  • ברירת מחדל: אם לא מציינים את tableSettings, המסגרת חוזרת אוטומטית ל:
    • מודולים של Foundation: ../src/data_modules/namespace/data_foundation/data_foundation/table_settings.default.yaml
    • מודולים של מוצרים: ../src/data_modules/namespace/data_product/data_product/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 (ההגדרה הזו משמשת להגדרות תואמות או אוניברסליות).

סגנון התשתית לנתונים

במודול Data Foundation, הקובץ table_settings.yaml בנוי כרשימה של פריטי טבלה מתחת למפתחות ecc, s4 ו-common. כל פריט ממפה טבלת מקור גולמית לטבלת יעד שעברה התאמה, ומגדיר את ההגדרות שלה ב-BigQuery.

דוגמה לתחביר YAML

common:
  - source:
      tableName: bkpf
      isCdc: true
    target:
      tableName: bkpf # Optional: defaults to source tableName if omitted
      tags: [sap, common, finance, hourly]
      clusterDetails:
        columns: [bukrs, gjahr]
      partitionDetails:
        column: budat
        partitionType: time
        timeGrain: day
    deployAlways: false

הפניה לפרמטר

פרמטר סוג חובה ברירת מחדל / דוגמה תיאור
ecc | s4 | common string לא [] גרסה או דיאלקט של מערכת המקור.
[].deployAlways boolean לא false אם true, הטבלה תמיד תופעל ותיבנה, גם אם כללי האופטימיזציה עשויים לדלג עליה. אפשר לעיין גם במאמר בנושא פתרון דינמי של תלות
הגדרת המקורות

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

פרמטר סוג חובה ברירת מחדל / דוגמה תיאור
tableName string כן bkpf השם של טבלת המקור הגולמית ב-BigQuery (לא תלוי באותיות רישיות).
isCdc boolean לא true מציין אם טבלת המקור מכילה יומני רישום של לכידת נתונים משתנים (CDC).

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

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

הגדרות היעד

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

פרמטר סוג חובה ברירת מחדל / דוגמה תיאור
tableName string לא *(כמו במקור)* השם של טבלת היעד המותאמת שרוצים ליצור. אם לא מציינים את המסגרת, ברירת המחדל היא המקור tableName.
tags array[string] לא [sap, finance] רשימה של תגי מטא-נתונים שמצורפים לפעולה שתואמת ב-Dataform. אלה מחרוזות שרירותיות שלא צריך לרשום מראש או להגדיר בהגדרות אחרות. אפשר להשתמש בהן באופן מיידי כדי לסנן הפעלות של צינורות (למשל, באמצעות dataform run --tags ...).
clusterDetails map לא זה שינוי אופציונלי. הגדרת יצירת אשכולות ב-BigQuery. פרטים על אשכולות
partitionDetails map לא זה שינוי אופציונלי. הגדרת חלוקה למחיצות ב-BigQuery. פרטים על חלוקה למחיצות

סגנון נתוני מוצר

במודול Data Product, קובץ table_settings.yaml בנוי כמילון (map) תחת המפתחות ecc, s4 ו-common. המפתחות של המילון מייצגים את שמות הטבלאות או התצוגות האנליטיות, והערכים מגדירים את ההגדרות של יצירת התצוגה והביצועים שלה.

דוגמה לתחביר YAML

s4:
  customers:
    materializationType: incremental
    tags: [sap, dataproduct, masterdata]
    clusterDetails:
      columns: [mandt, ktokd]

הפניה לפרמטר

פרמטר סוג חובה ברירת מחדל / דוגמה תיאור
ecc | s4 | common map לא {} מיפוי של נכסי ניתוח נתונים (טבלאות או תצוגות) להגדרות שלהם.
[table_name].materializationType string לא incremental איך נכס הניתוח נוצר ב-BigQuery.

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

  • incremental: המערכת מעבדת רק רשומות חדשות או מעודכנות מאז ההפעלה האחרונה. מומלץ להשתמש באפשרות הזו לקבוצות גדולות של נתונים טרנזקציוניים כדי לחסוך בעלויות.
  • table: הטבלה נבנית מחדש לגמרי בכל הפעלה.
  • view: פריסת הנכס כתצוגת SQL ב-BigQuery (טבלה וירטואלית).
[table_name].tags array[string] לא [sap, dataproduct] תגי מטא-נתונים שמצורפים לנכס האנליטי ב-Dataform. אלה מחרוזות שרירותיות ולא צריך לרשום אותן מראש. אפשר להשתמש בהן באופן מיידי להרצת צינורות נתונים סלקטיביים.
[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:
      tags: [sap, s4, finance, transactional, hourly]
      clusterDetails:
        columns: [rclnt, rbukrs, gjahr]

# ==============================================================================
# ECC-Specific Tables
# ==============================================================================
ecc:
  - source:
      tableName: faglflexa
    target:
      tags: [sap, ecc, finance, transactional, hourly]

# ==============================================================================
# Common Tables (ECC & S/4HANA)
# ==============================================================================
common:
  # Financial document header (partitioned by posting date)
  - source:
      tableName: bkpf
      isCdc: true
    target:
      tags: [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:
      tags: [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:
      tags: [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
    tags: [sap, dataproduct, sales, transactional]
    clusterDetails:
      columns: [vkorg, vbeln]
    partitionDetails:
      column: audat
      partitionType: time
      timeGrain: day

  # Master data product - full table rebuild
  customers:
    materializationType: table
    tags: [sap, dataproduct, masterdata]
    clusterDetails:
      columns: [mandt, ktokd]

  # Aggregated reporting view - virtual view
  sales_performance_summary:
    materializationType: view
    tags: [sap, dataproduct, sales, reporting]

מדריכים

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

התאמה אישית של היקף הטבלה במודול של שכבת נתונים

כדי להוסיף או להסיר טבלאות במודול קיים של שכבת נתונים בלי ליצור מודולים חדשים או להריץ מופעים נפרדים של צינורות:

  • מעתיקים את הגדרות ברירת המחדל table_settings.default.yaml לספריית ההגדרות של סביבת העבודה (לדוגמה, config/cortex/data_foundation/sap/custom_table_settings.yaml).
  • בקובץ החדש, מוסיפים את הטבלאות המותאמות אישית או מסירים טבלאות רגילות שלא בשימוש במפתחות ecc, s4 או common לפי הצורך:
common:
  - source:
      tableName: custom_table_name
    target:
      tags: [custom_tag]
  • מעדכנים את config/config.yaml כך שיפנה לנתיב של הגדרות הטבלה המותאמת אישית במאפיין tableSettings של המודול:
data:
  modules:
    foundation:
      - moduleId: erp
        type: cortex.sap
        # Custom table settings file, relative to configuration file directory
        # Recommended path: '{namespace}/data_foundation/{data_foundation_module_type}/table_settings.yaml'
        tableSettings: 'cortex/data_foundation/sap/custom_table_settings.yaml'

הגדרה של כמה מופעים של מודול של פלטפורמה לניהול נתונים

כדי לפרוס שני מופעים נפרדים של צינורות או יותר מאותו סוג מודול (לדוגמה, תמיכה בכמה מופעים של 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.foundation. נותנים לכל מופע moduleId ייחודי, מזהים משלו של מערך נתונים יעד, ואפשרות להגדיר tableSettings:
data:
  modules:
    foundation:
      # Core SAP ERP foundation module instance
      - moduleId: erp_core
        type: cortex.sap
        dataSourceId: sap_raw
        dataTargetId: data_foundation_core
        # If omitted, defaults to "../src/data_modules/{namespace}/data_foundation/{data_foundation_module_type}/table_settings.default.yaml"
        # tableSettings: "../src/data_modules/cortex/data_foundation/sap/table_settings.default.yaml"
      # Custom tables pipeline instance
      - moduleId: erp_custom
        type: cortex.sap
        dataSourceId: sap_raw
        dataTargetId: data_foundation_custom
        # Custom table settings file, relative to configuration file directory
        # Recommended path: 'config/{namespace}/data_foundation/{data_foundation_module_type}/table_settings.yaml'
        tableSettings: "cortex/data_foundation/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:
      tags: [sap, s4, hourly]
      clusterDetails:
        columns: [carrid, connid]
      partitionDetails:
        column: fldate
        partitionType: time
        timeGrain: day
  • מריצים את סקריפט הפריסה (uv run cortex-build-and-deploy) כדי להחיל את השינויים, ואז מבצעים את הפעולות של Dataform כמו שמתואר במאמר שלבים אחרי הפריסה.