הגדרת העברות מצטברות ל-Snowflake

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

מגבלות

העברות מצטברות של Snowflake כפופות למגבלות הבאות:

  • כדי להשתמש במצב הכתיבה upsert, צריך לספק עמודות של מפתח ראשי. מידע נוסף זמין במאמר בנושא הגדרת מפתחות ראשיים להעברות מצטברות.
  • המפתחות הראשיים חייבים להיות ייחודיים בטבלת המקור. אם יש כפילויות, יכול להיות שהתוצאות של פעולת המיזוג ב-BigQuery לא יהיו עקביות ולא יתאימו לנתוני המקור.
  • אין תמיכה בטיפול אוטומטי בשינויים בסכימה בהעברות מצטברות. אם הסכימה של טבלת מקור משתנה, צריך לעדכן ידנית את הסכימה של טבלה ב-BigQuery.
  • העברות מצטברות פועלות בצורה הטובה ביותר כשהשינויים בנתוני המקור מרוכזים במספר קטן של מחיצות. הביצועים של העברה מצטברת יכולים להיפגע באופן משמעותי אם העדכונים מפוזרים בטבלת המקור, כי במקרה כזה צריך לסרוק הרבה מחיצות. אם יש הרבה שורות שמשתנות בין העברות נתונים, מומלץ לבצע העברה מלאה במקום זאת.
  • פעולות מסוימות ב-Snowflake, כמו CREATE OR REPLACE TABLE או CLONE, יכולות לשכתב את אובייקט הטבלה המקורי ואת היסטוריית מעקב השינויים שמשויכת אליו. כתוצאה מכך, העברות הנתונים הקיימות לא מעודכנות, וצריך לבצע סנכרון מלא חדש כדי להמשיך בהעברות מצטברות.
  • צריך להפעיל העברות מצטברות בתדירות גבוהה מספיק כדי להישאר במסגרת תקופת שמירת הנתונים של Snowflake לצורך מעקב אחר שינויים. אם ההעברה האחרונה שהושלמה בהצלחה בוצעה מחוץ לחלון הזמן הזה, ההעברה הבאה תהיה העברה מלאה.

הגדרת העברות מצטברות

כדי להגדיר העברות מצטברות, בוחרים באפשרות Incremental (מצטבר) בהעדפת הכתיבה בהגדרת ההעברה כשמגדירים העברה ל-Snowflake.

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

הוספה למצב כתיבה

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

מצב כתיבה של Upsert

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

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

  • המפתח הראשי יכול להיות עמודה אחת או יותר בטבלה, שנדרשות כדי שהמחבר יוכל לזהות רשומות לעדכון.

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

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

התנהגות של שינויים בסכימה

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

קובץ סכימה מותאם אישית להעברות מצטברות

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

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

בדוגמה הבאה מוצג קובץ סכימה בהתאמה אישית שמגדיר את O_ORDERKEY ואת O_ORDERDATE כמפתחות ראשיים לטבלה orders:


{
  "databases": [
    {
      "name": "my_db",
      "originalName": "my_db",
      "tables": [
        {
          "name": "orders",
          "originalName": "orders",
          "columns": [
            {
              "name": "O_ORDERKEY",
              "originalName": "O_ORDERKEY",
              "usageType": [
                "PRIMARY_KEY"
              ]
            },
            {
              "name": "O_ORDERDATE",
              "originalName": "O_ORDERDATE",
              "usageType": [
                "PRIMARY_KEY"
              ]
            }
          ]
        }
      ]
    }
  ]
}

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

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

ALTER TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME SET CHANGE_TRACKING = TRUE;

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

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

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