תכנון העברה באמצעות היסטוריית העברות

כשמתכננים מיגרציה של מחסן נתונים (data warehouse) ל-BigQuery, אפשר להשתמש בשירות של שושלת המיגרציה כדי להציג את זרימת הנתונים והחיבורים במסד הנתונים של המקור.

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

שושלת העברה שמציגה תרשים של זרימת הנתונים.

שירות שושלת ההעברה תומך בדיאלקטים הבאים של SQL:

  • Amazon Redshift SQL
  • ‫Snowflake SQL
  • Teradata SQL
  • GoogleSQL (BigQuery)

מגבלות

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

מיקומים נתמכים

שירות שושלת ההעברה זמין במיקומים נבחרים. מידע נוסף זמין במאמר מיקומים של שירות תרגום SQL ושירות שושלת ב-BigQuery.

ההרשאות הנדרשות

כדי לקבל את ההרשאות שנדרשות לשימוש בשירות של שושלת היוחסין של ההעברה, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד עורך של MigrationWorkflow (roles/bigquerymigration.editor) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

ההרשאות הנדרשות

כדי להשתמש בשירות של שושלת היוחסין של ההעברה, נדרשות ההרשאות הבאות:

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get
  • bigquerymigration.lineageDbs.query

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

מידע נוסף על תפקידים והרשאות של IAM ב-BigQuery זמין במאמר תפקידים והרשאות של IAM ב-BigQuery.

יצירת שרשרת מיגרציה

כדי ליצור שושלת נתונים של מיגרציה, קודם מריצים את הכלי dwh-migration-dumper כדי ליצור קובצי יומן SQL של קלט מקור שמעלים ל-Cloud Storage. אחרי שמעלים את קובצי הקלט ל-Cloud Storage, אפשר ליצור את שושלת הנתונים של המיגרציה באמצעות מסוף Google Cloud או BigQuery Migration API.

הפעלת הכלי dwh-migration-dumper

בוחרים באחת מהאפשרויות הבאות:

Amazon Redshift

כדי ליצור ולהציג שושלת נתונים של מיגרציה במסד נתונים של Amazon Redshift, בצעו את הפעולות הבאות:

  1. מריצים את כלי dwh-migration-dumper כדי ליצור קובץ dump של קבצי מערכת המקור.
  2. העלאת יומני השאילתות ל-Cloud Storage

פתית שלג

כדי ליצור ולהציג שושלת נתונים של מיגרציה במסד נתונים של Snowflake, בצע את הפעולות הבאות:

  1. מריצים את כלי dwh-migration-dumper כדי ליצור קובץ dump של קבצי מערכת המקור.
  2. העלאת יומני השאילתות ל-Cloud Storage

Teradata

כדי ליצור ולהציג שושלת נתונים של העברה במסד נתונים של Teradata, בצע את הפעולות הבאות:

  1. מריצים את כלי dwh-migration-dumper כדי ליצור קובץ dump של קבצי מערכת המקור.
  2. העלאת יומני השאילתות ל-Cloud Storage

BigQuery

כדי ליצור ולהציג שושלת נתונים של מיגרציה במסד נתונים של BigQuery, בצע את הפעולות הבאות:

  1. מקצים לחשבון או לחשבון השירות את התפקידים הבאים:
  2. מתקינים את הכלי dwh-migration-dumper.
  3. כדי ליצור מטא-נתונים ויומני שאילתות, מריצים את הכלי dwh-migration-dumper. המטא-נתונים ויומני השאילתות האלה נמצאים בקובץ ZIP אחד או יותר.

    dwh-migration-dumper --connector bigquery
    
    dwh-migration-dumper --connector bigquery-logs
  4. מעלים את קובצי ה-ZIP לקטגוריה של Cloud Storage. מידע נוסף על יצירת קטגוריות והעלאת קבצים ל-Cloud Storage מופיע במאמרים בנושא יצירת קטגוריה והעלאת אובייקטים ממערכת קבצים.

יצירת שרשרת המיגרציה

אחרי שמעלים ל-Cloud Storage את קובצי ה-ZIP שמכילים את המטא-נתונים ואת יומני השאילתות, אפשר ליצור את שרשרת המקור של ההעברה. בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף שירותי ההעברה שלך.

    מעבר אל 'שירותי ההעברה שלך'

  2. בקטע Translate SQL (תרגום SQL), לוחצים על Translate (תרגום) > Batch translation (תרגום באצווה).

  3. בקטע הגדרת תרגום, מזינים את הפרטים הבאים:

    1. בשם התצוגה מציינים שם לעבודת השושלת. השם יכול להכיל אותיות, מספרים או קווים תחתונים.
    2. בקטע Processing Location (מיקום העיבוד), בוחרים את המיקום שבו רוצים שהעבודה של שרשרת המקור תפעל.
    3. בשדה Source dialect (ניב המקור), בוחרים את ניב ה-SQL של המקור.
    4. בקטע Target dialect (ניב היעד), בוחרים באפשרות GoogleSQL.
  4. לוחצים על הבא.

  5. בקטע פרטי מיקום הקובץ, מבצעים את הפעולות הבאות:

    1. בקטע מיקום ספריית הפלט, מציינים את הנתיב לקטגוריה של Cloud Storage כדי לשמור את קובצי הפלט של התרגום. אפשר להקליד את הנתיב בפורמט bucket_name/folder_name/ או ללחוץ על עיון.
    2. בקטע Input directory location (מיקום ספריית הקלט), מציינים את הנתיב לתיקייה ב-Cloud Storage שמכילה את קובצי ה-ZIP של היומנים שהעליתם קודם. אפשר להקליד את הנתיב בפורמט bucket_name/folder_name/ או ללחוץ על עיון. אפשר גם לתת שם לספריית המשנה של קובצי הפלט בשדה שם ספריית המשנה של הפלט.
    3. כדי להוסיף קובצי קלט נוספים, לוחצים על הוספת מיקום של ספריית קלט.
  6. לוחצים על הבא.

  7. מסמנים את תיבת הסימון Lineage from query logs (היסטוריה של מקורות נתונים מיומני שאילתות).

  8. לוחצים על יצירה.

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

API

כדי ליצור משימת שושלת נתונים, מריצים את הפקודה הבאה של curl:

  curl -d "{
    \"tasks\": {
      \"TASK_NAME\": {
        \"type\": \"Experimental_Lineage\",
        \"translation_details\": {
          \"target_base_uri\": \"BUCKET_PATH\",
          \"source_target_mapping\": {
            \"source_spec\": {
              \"base_uri\": \"BUCKET_PATH\"
            }
          },
          \"target_types\": \"LINEAGE\"
        }
      }
    }
  }
  " \
    -H "Content-Type:application/json" \
    -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows

מחליפים את מה שכתוב בשדות הבאים:

  • TASK_NAME: שם לזיהוי של משימת שרשרת המקור הזו.
  • BUCKET_PATH: הנתיב לקטגוריה של Cloud Storage שמכילה את קובצי ה-ZIP של נתוני הקלט.
  • PROJECT_ID: מזהה הפרויקט ב-Google Cloud .
  • LOCATION: מיקום העיבוד. הערך חייב להיות eu או us.

הקריאה הזו מחזירה הודעה שדומה לזו:

  {
    "name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID",
    "tasks": {
      "task_name": { /*...*/ }
    },
    "state": "RUNNING"
  }

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

  curl \
  -H "Content-Type:application/json" \
  -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

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

פתיחת היסטוריית ההעברה

אחרי שיוצרים שושלת העברה, אפשר לפתוח אותה באחת מהדרכים הבאות:

המסוף

  1. עוברים לדף שירותי ההעברה שלך.

    מעבר אל 'שירותי ההעברה שלך'

  2. בקטע Translate SQL, לוחצים על View recent (הצגת הפעולות האחרונות).

  3. בדף SQL translations, לוחצים על שם העבודה כדי לבחור את עבודת שושלת הנתונים המלאה. לגבי משימות של שושלת הנתונים, ערך הפלט הוא Lineage.

  4. בדף פרטי התרגום, לוחצים על מקורות נתונים.

API

כדי לפתוח את שושלת הנתונים של העברה שהושלמה, מריצים את הפקודה curl הבאה באמצעות BigQuery Migration API:

  curl \
  -H "Content-Type:application/json" \
  -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב-Google Cloud .
  • LOCATION: מיקום העיבוד. הערך חייב להיות eu או us.
  • WORKFLOW_ID: מזהה תהליך העבודה של שושלת הנתונים שנוצרה.

עוברים לקישור שמופיע בשדה taskResult.translationTaskResult.consoleUri של הודעת הפלט.

עבודה עם שרשרת היוחסין של ההעברה

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

הסבר על המונחים שקשורים למוצא של נתונים

המונחים הבאים משמשים בשושלת נתונים של מיגרציה:

תנאים תיאור
סקריפטים סקריפטים של SQL ותוכניות אחרות שמופיעים ביומני מסד הנתונים שנקלטים במהלך בניית שרשרת המקור. סקריפטים מורכבים מהצהרות, שהן בדרך כלל הצהרות SQL יחידות.
צמתים הקודקודים של גרף השושלת. הם מורכבים מטבלאות ועמודות.
Tables נקראות גם יחסים, כולל טבלאות רגילות, תצוגות, קבצים מובנים ומשאבים אחרים דמויי טבלה.
Columns נקראים גם מאפיינים, כולל עמודות בטבלה, הקרנות של תצוגות, עמודות פסאודו, שדות דמויי עמודות בקובצים ובמשאבים אחרים, ועמודות משנה כמו שדות struct.
קצוות חיבורים בין צמתים של שושלת שמציינים אינטראקציות כתוצאה מצינור שמריץ סקריפט שקורא או כותב את הצמתים האלה. הקצוות מתויגים בחותמות זמן, בפרדיקטים ובמטא-נתונים אחרים מהרגע שבו נגזר הקצה. צומת שסמוך לצומת אחר עם קצה נקרא חיבור ישיר. מסלול של קצוות בין שני צמתים נקרא חיבור עקיף.
קצוות של קשרים קשתות מכוונות שמציינות שהצומת של המקור נכלל בסעיף כמו FROM,‏ WHERE או GROUP BY שהשפיע על הנתונים של צומת היעד.
משתמשים וצינורות עיבוד נתונים תוויות של מטא-נתונים שסופקו על ידי מסד הנתונים המקורי לגבי מי ומה הפעיל סקריפטים. אין להם משמעות מובנית במנוע השושלת, אבל הם משמשים לקיבוץ סקריפטים לפי מקור.

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

בדיקת דף הנחיתה

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

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

בדיקת דף הצומת

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

הכרטיסייה 'זרימת נתונים'

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

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

בכל צומת מוצג סמל שמציין את המאפיינים של הצומת:

  • monitor: תצוגה, לא טבלה.
  • cached: טבלה שתמיד עוברת רענון מלא (חיתוך ואז כתיבה מחדש). לוחצים על הסמל כדי לראות את הסקריפטים שצמודים לטבלה הזו.
  • שמור במטמון: טבלה שלא תמיד מתעדכנת באופן מלא (היא נחתכת ואז נכתבת מחדש). לוחצים על הסמל כדי לראות סקריפטים שצמודים לטבלה הזו.
  • timer: טבלה שהייתה קיימת לזמן קצר. מעבירים את הסמן מעל הסמל כדי לראות את משך הזמן שהטבלה הייתה קיימת.
  • snowflake: טבלה שהכתיבה האחרונה שלה הייתה לפני יותר משבעה ימים, מה שמצביע על טבלה עם נתונים סטטיים או נתונים שנכתבים לעיתים רחוקות.

כדי לבדוק את האובייקטים בתרשים Data Flow:

  • כדי לראות רשימה של עמודות בטבלה, לוחצים על טבלה. התצוגה הזו כוללת את השם של כל עמודה וגם את סוג הנתונים שלה, כפי שנקבע מתוך קובץ מטא-נתונים שסופק או כפי שניתן להסיק מתוך ה-SQL שמופיע ביומני השאילתות.
  • כדי לראות את גרף שושלת הנתונים ברמת העמודה, לוחצים על עמודה. בתרשים השושלת ברמת העמודה, הקצוות מייצגים זרימות נתונים שמשפיעות על עמודת היעד.
  • כדי לראות פרטים על קצה, לוחצים על קצה בתרשים. התצוגה הזו כוללת קישורים לסקריפטים של SQL שגרמו לבעיה.

    נוצר קו מקודקוד מקור לקודקוד יעד כשמשפט SQL מפנה לקודקוד המקור בזמן שהמשפט מחשב נתונים שמוכנסים לקודקוד היעד. בדרך כלל, זה כולל העברת נתונים מהמקור ליעד, אבל בכרטיסייה Data Flow מוצג גם קו כשהצומת של המקור נמצא בסעיף WHERE או GROUP BY שמשפיע על היעד. כדי לסנן רק העברות נתונים, לוחצים על הלחצן הצגת קצוות לא של נתונים בסרגל הכלים.

הכרטיסייה 'חיבורים'

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

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

כדי להוריד קובץ שמכיל את כל הצמתים שמוצגים, לוחצים על הורדת CSV.

כרטיסיית המשתמשים

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

כדי להוריד קובץ שמכיל את כל המשתמשים שמוצגים, לוחצים על הורדת CSV.

הכרטיסייה 'פייפליינים'

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

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

הכרטיסייה 'קוד'

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

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

בדיקת דף הקצה

כדי לעיין בקצוות הצמתים בתרשים השושלת, לוחצים על אחת מהכרטיסיות הבאות.

הכרטיסייה 'פרטים'

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

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

  • has: הקשר של המקור מכיל את מאפיין היעד.
  • dat: המקור מעתיק או מעביר נתונים ליעד.
  • res: המקור מסנן או מגביל את הקרדינליות של היעד בסעיף כמו WHERE,‏ HAVING או JOIN ON.
  • grp: המקור נמצא בסעיף GROUP BY שמשפיע על היעד.

החלק השלישי הוא גם r או a, שמציינים אם היעד של הקצה הוא קשר או מאפיין.

קטגוריות קצה יכולות לכלול את הדברים הבאים:

  • dat predicates:
    • AGGREGATE: המקור שימש בחישוב מצטבר שכתב את היעד.
    • EXACT_COPY: הנתונים ממקור הועתקו בשלמותם ליעד.
    • FUNCTION: המקור שימש לחישוב היעד.
    • IDENTITY_COPY: היעד לא חושב. היעד היה עותק מילולי של המקור ללא המרות או שינויים.
    • PARTITION_PROMOTION: היעד מכיל נתונים מהמקור כתוצאה מקידום מחיצה של המקור ליעד.
    • WEAK_COPY: הנתונים מהמקור הועתקו לפחות באופן חלקי ליעד.
  • res predicates:
    • FILTER: המקור שימש בהשוואה שכתבה את היעד.
    • KEY: נתונים מהמקור שימשו כמפתח בהשוואה של איחוד, שכתבה את היעד.
  • grp predicates:
    • GROUP: הנתונים מהמקור שימשו כמפתח בסעיף GROUP BY שמשפיע על היעד.

הכרטיסייה 'קוד'

בכרטיסייה Code של קצה מוצגים סקריפטים של SQL שגרמו לקצה הזה. צמתי המקור והיעד של הקצה מודגשים במקומות שבהם הם מוזכרים בטקסט ה-SQL.

המאמרים הבאים