הגירת נתונים ב-AI: היכן נשבר המעבר האוטומטי
בעת העברת נתוני מערכות בין מערכות, כשל כמעט אף פעם לא מגיע מאחסון הנתונים — מסד הנתונים יקבל כל קבוצת שורות תקינה. מה שנשבר הוא החלק הסמנטי: התאמת הישויות בין המודל הישן לחדש.
אם במקור הלקוח הוא ישות משפטית עם חשבון בנק, וביעד הוא איש קשר, התאמה אוטומטית לפי שמות השדות תניב תוצאה סבירה לכאורה, אך שגויה.
צוואר הבקבוק הראשון — אי-התאמה בין ספרי העזר. מסווגים, יחידות מידה, סטטוסים וקטגוריות בשתי המערכות הם כמעט תמיד בעלי עוצמה שונה: במקור יש כמה מאות ערכים, ביעד — עשרות, חלק מהקודים מיושנים, חלק הוזנו ידנית. התאמה לפי דמיון מחרוזת טועה בניסוחים דומים, וסטטוס חשבון שהועבר בטעות משנה בשקט את הרשאות הגישה.
השני — ניתוק הקשרים בין רשומות. ההעברה מתבצעת לפי טבלאות, והקשרים ביניהן נשענים על מזהים: אם חוזה הגיע לפני הצד המתקשר או קיבל מפתח חדש, הקשרים מתפרקים. ביעד מופיעות רשומות יתומות — תשלומים בלי חשבוניות, בקשות בלי לקוחות, חיובים בלי חוזים.
השלישי — עריכות ידניות במהלך ההעברה. הן נעשות בטבלת ביניים «על הדרך», מחוץ לנוהל: התוצאה אינה ניתנת לשחזור, ובטעינה הבאה העריכות נמחקות. להלן נבחן כיצד כל אחד מהמקומות הללו נסגר.
מה משתנה לאחר המעבר להעברה אוטומטית
השינוי המרכזי — כללי ההעברה מפסיקים להתקיים בהתכתבויות ובטבלאות משובצות. התאמת שדות, נרמול ספרי עזר, טיפול בערכים ריקים ובערכים מתנגשים — כולם מתוארים כקונפיגורציה במאגר קוד: ענף אחד — מקור אמת אחד, כל שינוי עובר בדיקה ולא מגיע כ«עריכה בקובץ האחרון».
חלק מהטרנספורמציות נוח להחזיק ב-dbt — אז מרשם הכללים, הבדיקות ותיאור השדות יושבים זה לצד זה ונקראים כמסמך אחד.
מכאן צומחת חזרתיות של ההרצה. אותה קבוצת כללים על אותו חתך נתונים מניבה אותה תוצאה: ההרצה אידמפוטנטית, מעבר חוזר אינו יוצר כפילויות ואינו מוסיף רשומות בדיעבד. נוצרת סכמת עבודה — להריץ את ההעברה על עותק, להשוות את התפוקות, לתעד את הפערים ורק לאחר מכן לעבור לקונטור הפרודוקטיבי.
חלקה של העבודה הידנית יורד לא מפני שהכללים «חכמים יותר», אלא מפני שהם מיושמים על כל הרשומות באותו אופן. שארית העבודה הידנית הופכת לרשימה קצרה של חריגים עם סיבה: ספר עזר דו-משמעי, קשר קרוע, מקור חסר. רשימה כזו נראית במלואה, והיא אינה גדלה מהרצה להרצה — זהו בדיוק בקרת איכות מדידה של ההעברה.
אימות אוטומטי סוגר את הפער האחרון: השוואת מספר שורות וסכומי ביקורת בשדות מפתח, בדיקות לקשרים שאבדו, דוח פערים לפני ואחרי. במקום «העברנו, נראה שהכול במקום» — פרוטוקול משוחזר של כל הרצה, שממנו רואים מה בדיוק עבר, מה נכנס לחריגים ואילו כללים הובילו לכך.
דרכי הגירה: העברה בזרימה וטעינה באצוות
בחירת המצב נקבעת לפי שני דברים: עד כמה קריטי זמן ההשבתה וכיצד בנוי העומס על המקור. העברה בזרימה קוראת את יומן השינויים ומעבירה כל טרנזקציה ליעד כמעט מיד — המקור ממשיך לקבל כתיבות, ואין צורך בחלונות תחזוקה.
טעינה באצוות עובדת עם תמונות עקביות לפי לוח זמנים: קלה יותר לניפוי שגיאות ולהרצה חוזרת, אך דורשת חלון שבו הכתיבה למקור מופסקת.
בין שני הקצוות הללו עומדת כמעט תמיד סכמה היברידית — והיא גם סוגרת את תרחיש המעבר העיקרי. להלן השוואה לפי התאמה ומגבלות.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| העברה בזרימה לפי יומן שינויים | אסור לעצור את המקור; הנתונים נדרשים בקונטור החדש בהשהיה מינימלית | נדרשות הרשאות קריאה ליומן; בעדכון מסיבי של כל הטבלה הזרימה מפגרת; החזרה לאחור מורכבת יותר |
| טעינה באצוות באמצעות תמונות | החלפת פלטפורמה חד-פעמית, קונטור דיווח, השבתה מותרת בחלון תחזוקה | העברה ללא השבתה אינה אפשרית: הכתיבה מופסקת לצילום התמונה ולהשלמת הדלתא |
| תמונה בתוספת זרימת שינויים | מעבר של קונטור פעיל: התמונה מצולמת מראש, השינויים נצברים במקביל, ההחלפה אורכת דקות | יש לקשור קשר קשיח את נקודת ההתחלה של הזרימה לתמונה, אחרת השורות מתפצלות |
יהיה אשר יהיה סיום ההעברה, היא נסגרת לא בהחלפה אלא בהשוואה מדורגת: תחילה מספר השורות בכל טבלה, אחר כך סכומי ביקורת, ולבסוף דגימה לפי מפתחות בגבולות הטווחים. פערים מנתחים לפני העברת העומס לקונטור החדש — לאחר ההחלפה חיפושם יקר בהרבה.
שלבי ההטמעה: מניתוח הסכמה ועד מסירה לפעילות
כל שלב מסתיים בארטיפקט הנבדק לפני שהשלב הבא מתחיל לשנות נתונים. לכן כללי ההתאמה ונקודת החזרה מוכנים מראש — שגיאת הגירה נתפסת על חתך נתונים, ולא בקונטור הפעיל.
- סקר מקורות. עוברים על מסדי נתונים, תפוקות של מערכות הנהלת חשבונות וטבלאות בקבצים, מתעדים נפחים, פורמטים, כפילויות ושדות «מלוכלכים». התוצאה — מרשם מקורות עם מפת ישויות.
- סכמת התאמת שדות. מתאימים בין שדות המקור לשדות היעד, מתארים המרות טיפוסים וספרי עזר. המודל מציע חלופות, ונקודות שנויות במחלוקת מאשר המהנדס עם בעל הנתונים.
- הרכבת צינור ההעברה. מגדירים חילוץ, נרמול, הסרת כפילויות וכתיבה; הכללים מנוהלים בגרסאות, כך שכל שינוי ניתן להסביר ולבטל.
- הרצת ניסוי. מריצים את הזרימה על חתך נתונים ומודדים את חלק השדות שהותאמו אוטומטית ואת מספר הפערים. הדוח עליהם הוא הבסיס לכוונון הכללים.
- קבלת הנתונים. משווים סכומי ביקורת ומצטברים לפי ישויות מפתח, ורשומות קריטיות נבדקות ידנית בדגימה. הקריטריונים נקבעים לפני ההרצה, ולא אחריה.
- תוכנית חזרה לאחור. מכינים תמונת יעד ונקודת חזרה: אם ההשוואה לא תתאם, חוזרים למצב ההתחלתי בלי אובדן רשומות.
- מסירה לפעילות. מוסרים את נוהל ההרצה, ניטור הפערים והתיעוד של הסכמה — הזרימה מתוחזקת מעתה ללא מעורבותנו.
ארטיפקטים של הפרויקט: מה נשאר אצל הלקוח לאחר המסירה
מסירת הפרויקט מבחינתנו אינה דוח על ההעברה, אלא ערכת חומרים שהצוות שלכם ממשיך לעבוד איתה בעצמו. כל מה שהמהנדסים שלנו השתמשו בו מועבר בצורה הניתנת לעריכה: קונפיגורציות, סכמות, יומנים ותיעוד.
- קונפיגורציות של כללי התאמה — מילוני מילים נרדפות, סדרי עדיפויות בין מקורות, טיפול במקרים דו-משמעיים. משתנות בעריכת קבצים, בלי לגעת בקוד.
- סכמות העברה — איזה מקור, באיזה סדר ודרך אילו ספרי עזר עוברת הרשומה, והיכן נקודות ההשוואה המחייבות.
- יומני בדיקה — פרוטוקולים לכל מקטע: שיעור הרשומות שעברו אוטומטית, מה עבר לבדיקה ידנית, ואילו פערים נותרו פתוחים.
- נוהל חזרה לאחור — סדר החזרת האחסון למצבו הקודם, תנאי ההפעלה, נקודות הבקרה והאחראים.
- הוראות תחזוקה — כיצד להפעיל מחדש מקטע בהעברה, להוסיף כלל, לחבר מקור חדש, לעדכן את מודל ההתאמה.
- סט שאילתות ביקורת ודגימות בדיקה — כדי לבדוק מחדש את הנתונים לאחר כל שינוי בכללים.
החומרים מתעדכנים תוך כדי העבודה, ולא נכתבים לפני המסירה, ולכן עד הסוף הם כבר נבדקו בהרצות אמת. אינכם מקבלים תיאור של מערכת, אלא ערכה עובדת: מהנדס חדש נכנס דרכה לפרויקט בימים, ולא בחודשים.
מקרה בוחן: העברת ספרי עזר ויתרות למערכת חדשה
מפיץ העביר את ספר העזר של הפריטים ואת יתרות המלאי מ-SAP ההיסטורי למערכת ניהול חדשה. בקונטור — 1.4 מיליון כרטיסי מוצר, 380 אלף שורות יתרות ב-42 מחסנים ושבעה מקורות, כל אחד עם יחידות המידה, הקבוצות וקודי הספקים שלו. ההעברה הראשונה נעשתה בתפוקות עם השוואה ידנית, והפערים צפו רק לאחר סגירת התקופה — כשהתיקון כבר יקר.
ההתאמה לפי זהות מק"ט נכשלה: במקורות נכתבו מקט"ים עם מפרידים שונים ובלי אפסים מובילים, ולכן 210 אלף פריטים נדרשו להחלטה אנושית. הרצה מלאה נמשכה כ-14 שעות, ותיקון של כלל אחד חייב הרצה מחדש של הכול.
מה שינו
את הנרמול הציבו לפני ההשוואה: מקט"ים, יחידות מידה ושמות מובאים לצורה קנונית, ורק אחר כך מותאמים לפי שם ומאפיינים עם ציון ביטחון. זוגות מעל הסף מועברים אוטומטית, השאר נכנסים לתור בדיקה עם הדגשת ההבדלים, והחלטת האנליסט נרשמת ונעשה בה שימוש חוזר בהרצות הבאות.
התוצאה במספרים
הבדיקה הידנית הצטמצמה מ-210 אלף רשומות ל-11 אלף — 5% מהנפח. הרצה מלאה נכנסת ל-38 דקות, והרצה חוזרת לאחר תיקונים — ל-7, מפני שמחושבות מחדש רק ענפי ספר העזר שנגעו בהם.
אימות לפי סכומי ביקורת — מספר היתרות בכל מחסן וקבוצה לפני ההעברה ואחריה — הביא את הפערים לאפס בקבלה, והתנגשויות מיפוי נותרו 0.4% לעומת 12% בניסיון הראשון.
במה נבדלת התאמת שדות אוטומטית מהתאמה ידנית?
התאמה אוטומטית נשענת על שני אותות: מבנה (טיפוס, אורך, שם שדה) ותוכן — שיעור הערכים החופפים. לכל זוג «מקור — יעד» מוצמד ציון ביטחון: זהות מדויקת של שמות מניבה ציון גבוה, התאמה מטושטשת לפי דמיון מחרוזות וערכים משותפים בספר העזר — ציון ביניים.
לאחר מכן פועל סף הביטחון. מעל הסף העליון הזוג מיושם אוטומטית, בין הספים הוא נכנס לרשימת ההצעות, ומתחת — להסגר. סכמה דו-שלבית אינה מאפשרת לאוטומטיקה לקלקל את הנתונים בשקט, ובמקביל אינה מחייבת לבדוק הכול ידנית.
התאמה ידנית נדרשת במקומות שבהם המשמעות אינה נגזרת מהנתונים: שדה אחד במקור מפורק לשניים ביעד, יחידות המידה שונות, המפתח מורכב, וב-1С הצטברו כפילויות היסטוריות של פריטים שצריך לאחד לפני ההעברה.
בדיקת מומחה אינה השוואה גורפת, אלא ניתוח ההסגר בתוספת אישור דגימה מתוך הזוגות שהוחלו אוטומטית. שיעור הבדיקה הידנית הופך למדד עבודה: הוא יורד מכלל השדות לכמה אחוזים בודדים, וכל החלטה של המומחה חוזרת אל הכללים ומגבירה את דיוק ההרצה הבאה.
הקו המפריד עובר לפי טבע ההחלטה: האוטומטיקה מצמצמת את מרחב האפשרויות ולוקחת על עצמה את הנפח, והאדם אחראי להסכמות הסמנטיות — אילו ישויות להיחשב כאחת וכיצד לפרש פערים. לכן סף הביטחון והכללים מכווננים להתחשבנות מסוימת, ולא נלקחים ככלליים.
ספקות טכניים: דיוק, חזרה לאחור, בקרת איכות
שלמות הנתונים מאומתת לא בבדיקה סלקטיבית «בעיניים», אלא בהשוואה ברמת הסטים: מספר רשומות לפני ואחרי, סכומי ביקורת בשדות מספריים, חתך לפי מפתחות ראשיים. פער נצמד מיד לרשומת המקור ולכלל שממנו נוצר — כך רואים אם מדובר בשגיאת התאמה או בהתנגשות ספרי עזר.
כל אי-התאמה וכל זוג כפילויות נכנסים לדוח עם החלטה: לקבל, לאחד, לדחות. כל עוד אין החלטה לגבי רשומה, היא אינה עוברת למערכת היעד — ההעברה מתנהלת בגלים, וכל גל נסגר בהשוואה.
כיצד מאומתת שלמות הנתונים?
בשלוש השוואות: לפי מספר, לפי סכומי ביקורת בשדות מספריים ולפי חתך של מפתחות ראשיים. בנוסף מנותחים קשרי «אב — בן» — כך נתפסות רשומות שאמנם עברו פורמלית, אך איבדו את ההפניה. דוח ההשוואה נשמר יחד עם ההרצה.
מה לעשות עם אי-התאמות של רשומות וכפילויות בספרי העזר?
המודל מציע אפשרות איחוד ונימוק, וההחלטה מתקבלת בידי האחראי. זוגות שנויים במחלוקת עוברים להסגר — סט נפרד שמטפלים בו לאחר ההעברה, בלי לחסום את שאר הרשומות.
האם ניתן לחזור מההעברה לאחור?
כן. הכתיבה למערכת היעד מתבצעת עם תגית של ההרצה, ולכן חזרה לאחור היא מחיקת הסט לפי התגית, ולא שחזור מגיבוי. חזרה לאחור של גל בודד אינה פוגעת בנתונים שכבר התקבלו ואושרו.
מה מתעד תיעוד הפעולות?
כל טרנספורמציה: ערך המקור, הכלל שהופעל או החלטת המודל, הערך הסופי, מבצע העריכה והזמן. היומן בלתי ניתן לשינוי — ממנו משחזרים את ההיסטוריה של כל רשומה, גם אם נערכה ידנית לאחר ההעברה.
נדון במשימה שלכם ונחזור עם הערכה ותוכנית
כדי שההערכה תהיה עובדתית ולא משוערת, המהנדסים זקוקים לנתוני פתיחה על הנתונים ועל הקונטור. ככל שהמקורות מפורטים יותר, כך יש פחות הנחות בתוכנית העבודה והלוחות זמנים מציאותיים יותר.
- רשימת מקורות: מסדי נתונים, תפוקות קבצים, ממשקים חיצוניים, תורי הודעות — עם נפחים ותדירות עדכון.
- סכמות טבלאות או דגימות תפוקה בעילום זיהוי — לפיהן נבדוק מיפוי אוטומטי של שדות על ערכים אמיתיים, ולא על השערות.
- כללי עסק: מה נחשב כפילות, אילו שדות חובה, וכיצד לפרש ערכים ריקים ומתנגשים.
- דרישות מהמערכת היעד: טיפוסים נתמכים, מפתחות ייחודיים, ספרי עזר, קשרים מחייבים בין ישויות.
- קריטריוני אימות: אילו פערים קריטיים, ואיזה שיעור של רשומות מותר לבדוק ידנית בקבלה.
- מגבלות הרשאות וקונטור: היכן מותר לפרוס את העיבוד, והאם נדרש קונטור סגור בלי יציאה החוצה.
- היסטוריית העברות קודמות: היכן נקרעו קשרים, מה לא הסתדר בדוחות, אילו תרחישים כבר ניסו ולמה ויתרו.
בתגובה אנו מחזירים תוכנית עבודה, ולא הבטחות כלליות: שלבים, סדר ההרצות על סט בדיקה, סכמת אימות, הערכת לוחות זמנים והרכב הצוות — מי אחראי על המיפוי, מי על בדיקת הנתונים, ומי על קבלת התוצאה.
תארו את המשימה בצורה חופשית וצרפו את מה שכבר קיים — נחזור עם הערכה ותוכנית.







