העברת DAG חיצוניים מגרסה 4.2 לגרסה 5.0

במדריך הזה מפורטים השלבים הנדרשים להעברת טבלאות פלט מגרפים מכוונים אציקליים (DAG) חיצוניים למיקומים החדשים שלהם בארכיטקטורה של Cortex Data Foundation גרסה 5.0. לדוגמה, מזג אוויר ומגמות. המדריך הזה מיועד במיוחד למשתמשים שהטמיעו DAG חיצוני בגרסאות קודמות של Cortex Framework Data Foundation (גרסה 4.2 עד 5.0) ועכשיו משדרגים. אם לא השתמשתם ב-DAG חיצוניים או לא פרסתם SAP, המדריך הזה לא רלוונטי.

הקשר

בגרסאות של Cortex Framework Data Foundation שקודמות לגרסה 4.2, נעשה שימוש בדגל _GEN_EXT כדי לנהל את הפריסה של מקורות נתונים חיצוניים, כאשר חלק מהמקורות קשורים לעומסי עבודה ספציפיים (כמו המרת מטבע עבור SAP). עם זאת, בגרסה 5.0, הדגל הזה הוסר. עכשיו יש מודול חדש שמוקדש לניהול של DAG שיכול לשרת כמה עומסי עבודה. במדריך הזה מפורטים השלבים להתאמת צינורות עיבוד הנתונים הקיימים כך שיפעלו עם המבנה החדש.

גרפים מכווני מחזורים (DAG) לשימוש חוזר בעומסי עבודה שונים

ב-Cortex Framework Data Foundation v5.0 מוצג K9, רכיב חדש שאחראי על הטמעה, עיבוד ובניית מודלים של רכיבי נתונים לשימוש חוזר שמשותפים בין מקורות נתונים שונים. תצוגות הדוחות מפנות עכשיו אל מערך הנתונים K9_PROCESSING כדי לגשת לרכיבים האלה שאפשר לעשות בהם שימוש חוזר, וכך מייעלות את הגישה לנתונים ומצמצמות את הכפילות. מקורות הנתונים החיצוניים הבאים נפרסים עכשיו כחלק מ-K9, אל מערך הנתונים K9_PROCESSING:

  • date_dimension
  • holiday_calendar
  • trends
  • weather

‫DAGs שתלויים ב-SAP

הסקריפט generate_external_dags.sh עדיין מפעיל את הגרפים המכוונים האציקליים (DAG) הבאים שתלויים ב-SAP, אבל עכשיו הוא פועל במהלך שלב בניית הדיווח, והוא כותב עכשיו למערך נתוני הדיווח של SAP במקום לשלב CDC (תיעוד שינויים בנתונים).

  • currency_conversion
  • inventory_snapshots
  • prod_hierarchy_texts

מדריך להעברת נתונים (מיגרציה)

במדריך הזה מפורטים השלבים לשדרוג של Cortex Framework Data Foundation לגרסה 5.0.

פריסת Cortex Framework Data Foundation 5.0

קודם כל, צריך לפרוס את הגרסה החדשה ביותר (v5.0) של Cortex Framework Data Foundation בפרויקטים שלכם, בהתאם להנחיות הבאות:

  1. אפשר להשתמש בקבוצות הנתונים הקיימות של RAW ו-CDC מפריסות קודמות של פיתוח או שלבי ביניים כקבוצות הנתונים של RAW ו-CDC בפריסה הזו, כי לא מתבצע בהן שינוי במהלך הפריסה.
  2. מגדירים את testData ואת SAP.deployCDC לערך False ב-config/config.json.
  3. כדי לבדוק את התהליך, יוצרים פרויקט חדש של SAP Reporting בנפרד מהסביבה הקיימת של גרסה 4.2. כך תוכלו להעריך בבטחה את תהליך השדרוג בלי להשפיע על הפעולות הנוכחיות.
  4. זה שינוי אופציונלי. אם יש לכם DAGs פעילים של Airflow שפועלים בגרסה הקודמת של Cortex Framework Data Foundation, צריך להשהות אותם לפני שממשיכים בהעברה. אפשר לעשות את זה דרך ממשק המשתמש של Airflow. הוראות מפורטות זמינות במאמרים בנושא פתיחת ממשק המשתמש של Airflow מ-Composer והשהיית DAG.

אפשר לפעול לפי השלבים האלה כדי לעבור בבטחה לגרסה 5.0 של Cortex Framework Data Foundation ולאמת את התכונות והפונקציות החדשות.

העברה של טבלאות קיימות

כדי להעביר את הטבלאות הקיימות למיקום החדש שלהן, צריך להשתמש ב-jinja-cli כדי לעצב את תבנית הסקריפט להעברה שסופקה ולהשלים את ההעברה.

  1. מריצים את הפקודה הבאה כדי להתקין את jinja-cli:

    pip install jinja-cli
    
  2. מזהים את הפרמטרים הבאים מהפריסה הקיימת בגרסה 4.2 ומהפריסה החדשה בגרסה 5.0:

    ‪<td"> Name <td"> Description </td"></td"><td"> project_id_src <td"> Source Google Cloud Project: Project where your existing SAP CDC dataset from version 4.2 deployment is located. מערך הנתונים K9_PROCESSING נוצר גם בפרויקט הזה. </td"></td"><td"> project_id_tgt <td"> היעד Google Cloud שבו נמצא מערך הנתונים החדש של SAP Reporting שהופעל מהפריסה החדשה בגרסה 5.0. יכול להיות שהפרויקט הזה יהיה שונה מפרויקט המקור. </td"></td"><td"> dataset_cdc_processed <td"> מערך נתונים של CDC ב-BigQuery:‏ מערך נתונים ב-BigQuery שבו נמצאים הנתונים שעברו עיבוד על ידי CDC, הרישומים האחרונים שזמינים. יכול להיות שזה יהיה אותו מערך נתונים כמו מערך הנתונים של המקור. </td"></td"><td"> dataset_reporting_tgt <td"> מערך הנתונים של דוחות BigQuery: מערך נתונים ב-BigQuery שבו נפרסים מודלים מוגדרים מראש של נתונים של Data Foundation for SAP. </td"></td"><td"> k9_datasets_processing <td"> מערך הנתונים K9 BigQuery:‏ מערך הנתונים ב-BigQuery שבו נפרס K9 (מקורות נתונים משופרים). </td"></td">
  3. יוצרים קובץ JSON עם נתוני הקלט הנדרשים. חשוב להסיר את כל ה-DAG שלא רוצים להעביר מהקטע migrate_list:

    {
      "project_id_src": "your-source-project",
      "project_id_tgt": "your-target-project",
      "dataset_cdc_processed": "your-cdc-processed-dataset",
      "dataset_reporting_tgt": "your-reporting-target-dataset-OR-SAP_REPORTING",
      "k9_datasets_processing": "your-k9-processing-dataset-OR-K9_REPORTING",
      "migrate_list":
        [
            "holiday_calendar",
            "trends",
            "weather",
            "currency_conversion",
            "inventory_snapshots",
            "prod_hierarchy_texts"
        ]
    }
    EOF
    

    לדוגמה, אם רוצים להסיר את weather ואת trends, הסקריפט ייראה כך:

    {
      "project_id_src": "kittycorn-demo",
      "project_id_tgt": "kittycorn-demo",
      "dataset_cdc_processed": "CDC_PROCESSED",
      "dataset_reporting_tgt": "SAP_REPORTING",
      "k9_datasets_processing": "K9_PROCESSING",
      "migrate_list":
        [
            "holiday_calendar",
            "currency_conversion",
            "inventory_snapshots",
            "prod_hierarchy_texts"
        ]
        }
    
  4. יוצרים תיקיית פלט באמצעות הפקודה הבאה:

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

      jinja -d data.json -o output/migrate_external_dags.sql docs/external_dag_migration/scripts/migrate_external_dags.sql
    
  6. בודקים את קובץ ה-SQL של הפלט ומריצים אותו ב-BigQuery כדי להעביר את הטבלאות למיקום החדש.

עדכון וביטול השהיה של DAGs ב-Airflow

מגבים את קובצי ה-DAG הנוכחיים בקטגוריה של Airflow. לאחר מכן, מחליפים אותם בקבצים שנוצרו לאחרונה מפריסת Cortex Framework Data Foundation בגרסה 5.0. הוראות מפורטות זמינות במאמרי העזרה הבאים:

אימות וניקוי

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

    jinja -d data.json -o output/delete_old_dag_tables.sql docs/external_dag_migration/scripts/delete_old_dag_tables.sql