רשתות מזון גדולות בישראל מחויבות לפרסם מחירים, מבצעים ורשימת חנויות כקבצים להורדה, בעדכון יומי. זה מקור נתונים לגיטימי ולא גירוד - והבעיה ההנדסית היא נפח ונרמול, לא גישה.
עיקרי הדברים
- אלה נתונים מפורסמים, לא גירוד. תקנות שקיפות המחירים מחייבות רשתות מזון גדולות לפרסם את הקבצים, וזה מסיר לגמרי את שאלת תנאי השימוש.
- יש שלושה סוגי קבצים לכל חנות - חנויות, מצרכים ומחירים, ומבצעים. קובץ המבצעים הוא המקום שבו יושב רוב הערך האנליטי ורוב הצוותים מתעלמים ממנו.
- היחידה היא חנות, לא רשת. המחירים שונים בין סניפים של אותה רשת, ולכן כל השוואה שממצעת רשת עונה על שאלה שאף אחד לא שאל.
- הברקוד הוא מפתח החיבור ושם המוצר אינו. השמות שונים בין רשתות לאותו פריט; רק הברקוד מאפשר להשוות בין שווים.
זו אחת הדוגמאות הבודדות שבהן דאטה מסחרית שימושית זמינה באופן חוקי ומובנה בישראל. תקנות שקיפות המחירים מחייבות קמעונאים גדולים בענף המזון לפרסם את מחירי המוצרים בחנויותיהם - כקבצים להורדה, לכל סניף בנפרד, בעדכון יומי. אין כאן שאלה של תנאי שימוש, כי הפרסום הוא החובה.
למה זה שונה מגירוד אתרים
זו הנקודה שכדאי להבין ראשונה. בגירוד אתרים יש תמיד שאלה - מה תנאי השימוש אומרים, האם הגישה מותרת, מה קורה כשהאתר משתנה.
כאן הפרסום עצמו הוא הדרישה הרגולטורית. הקבצים נועדו להורדה, והקישורים אליהם מרוכזים בערוצים ציבוריים. זה הופך את זה מפרויקט עם סיכון לפרויקט הנדסי רגיל - וזה הבדל משמעותי כשמתמחרים ללקוח.
הסתייגות אחת: מה מותר לעשות עם הנתונים אחרי שהורדת - במיוחד אם אתה בונה מוצר מסחרי מעליהם - זו שאלה נפרדת ששווה לברר עם עורך דין. הגישה מותרת; השימוש המסחרי הוא שיחה אחרת.
מה יש בקבצים
לכל חנות מפורסמים שלושה סוגי קבצים:
| קובץ | מה בו |
|---|---|
| חנויות | רשימת הסניפים ומזהיהם |
| מצרכים ומחירים | שם מוצר, ברקוד, מחיר, מחיר ליחידת מידה |
| מבצעים | מחירי מבצע ותנאיהם |
הפורמטים כוללים XML ואקסל, לרוב דחוסים. ותדירות העדכון היא הדבר שקובע את הארכיטקטורה: עדכון נדרש סמוך לשינוי, וקובץ יומי מלא בסוף כל יום.
קובץ המבצעים הוא מה שרוב האנשים מפספסים
הפיתוי הוא למשוך רק מחירים ולהתעלם מהמבצעים. זו טעות אנליטית, כי בקמעונאות מזון המחיר האפקטיבי הוא לרוב מחיר המבצע - שלוש ב-30, מחיר למועדון, הנחה בכמות.
השוואת מחירי מדף בלבד מייצרת מסקנות שגויות: מוצר שנראה יקר יותר יכול להיות זול יותר בפועל. אם אתה בונה השוואת מחירים, קובץ המבצעים אינו אופציונלי.
שלוש ההחלטות שקובעות אם זה יעבוד
1. היחידה היא חנות, לא רשת
הטעות הראשונה היא לחשוב "מה המחיר ברשת X". אין דבר כזה. המחירים מתפרסמים לכל סניף בנפרד כי הם באמת שונים בין סניפים.
מיצוע על רשת מייצר מספר שלא קיים בשום מקום. אם הלקוח שלך רוצה לדעת מול מי הוא מתחרה, השאלה היא מה המחיר בסניפים שבטווח שלו - לא ממוצע ארצי.
ההשלכה על היקף: מספר החנויות כפול מספר המוצרים הוא המכפלה שקובעת את גודל הפרויקט. שווה לחשב אותה לפני שמתחייבים - אפשר בקלות להגיע למיליוני שורות ליום.
2. הברקוד הוא המפתח
אותו מוצר מופיע בשמות שונים ברשתות שונות - כתיב שונה, קיצורים, סדר מילים אחר. השוואה לפי שם לא עובדת.
הברקוד הוא מה שמאפשר להשוות בין שווים. ובכל זאת יש מקרי קצה שצריך לתכנן סביבם: מוצרים ללא ברקוד (ירקות בתפזורת, מוצרי משקל), ברקוד פנימי של הרשת, ואריזות שונות של אותו מותג.
מה שעובד: להתחיל עם התאמת ברקוד מדויקת, לתת לשאר ליפול לתור לבדיקה, ולא לנסות להתאים בשם באופן אוטומטי. התאמה שגויה בין מוצרים גרועה יותר מהתאמה חסרה, כי היא מייצרת מסקנה שקרית שנראית נכונה.
3. זה נפח, ולכן זה pipeline
עדכון יומי לכל חנות אינו סקריפט - זה צינור נתונים. מה שנדרש:
- שמירת הקובץ הגולמי כפי שהתקבל, לפני עיבוד. כשמספר ייראה מוזר בעוד חודש, זו הראיה מה באמת פורסם.
- עיבוד אינקרמנטלי - לא לעבד הכול מחדש כל יום.
- אידמפוטנטיות - אותו קובץ שיעובד פעמיים לא יכפיל שורות.
- היסטוריה. הערך האמיתי אינו המחיר היום אלא איך הוא השתנה. לשמור סדרת זמן, לא מצב נוכחי.
מה שנשבר בפועל
- עברית מלוכלכת. רווחים כפולים, תווים בלתי נראים, גרשיים בכמה צורות. שני ערכים שנראים זהים ולא משתווים כמחרוזות. לנרמל בקליטה.
- מבנה שמשתנה בין רשתות. הדרישה אחידה, המימוש פחות. לצפות לשמות שדות שונים ולעטוף כל מקור בשכבת תרגום משלו.
- קובץ שלא התפרסם. קורה. לא להשלים משתיקה - להתריע. יום חסר שמתמלא בנתוני אתמול מייצר סדרת זמן שקרית.
- מוצרים שנעלמים. מוצר שלא מופיע היום אינו בהכרח מוצר שהוסר - הוא יכול להיות חוסר זמני. להבחין בין השניים או להימנע מלהסיק.
לשם מה זה משמש
- קמעונאי שרוצה לתמחר מול הסניפים שבאזור שלו.
- ספק שרוצה לראות איך המוצר שלו מתומחר ברשתות שונות - ואיפה הוא במבצע בלי שידע.
- מחקר שוק - מגמות מחירים לאורך זמן בקטגוריה.
בכל אחד מהם, החלק היקר אינו ההורדה. הוא הנרמול, ההתאמה לפי ברקוד, והאמינות לאורך זמן - וזה בערך היחס בין יום עבודה לשבועיים.
מתי לא לבנות את זה
אם מה שנדרש הוא מבט חד-פעמי על עשרה מוצרים בשלושה סניפים - אל תבנה pipeline. הורדה ידנית ובדיקה באקסל נותנות את התשובה באותו יום, בלי תחזוקה.
הבנייה משתלמת כשצריך מעקב מתמשך, סדרת זמן, או כיסוי רחב. אחרת זו תשתית שמישהו יצטרך לתחזק בשביל שאלה שנשאלה פעם אחת.
שאלות נפוצות
האם מחירי הסופרמרקטים בישראל זמינים לציבור?
כן. תקנות שקיפות המחירים מחייבות רשתות מזון גדולות לפרסם את מחירי המוצרים בחנויותיהן כקבצים להורדה, לכל סניף בנפרד, בעדכון יומי. מפורסמים שלושה סוגי קבצים לכל חנות: רשימת חנויות, קובץ מצרכים ומחירים הכולל ברקודים, וקובץ מבצעים. מכיוון שהפרסום הוא החובה החוקית, זהו מקור נתונים מפורסם ולא גירוד.
למה השוואת מחירים צריכה את קובץ המבצעים?
כי בקמעונאות מזון המחיר האפקטיבי הוא בדרך כלל מחיר המבצע - מבצע כמות, מחיר למועדון, הנחה בכמות. השוואת מחירי מדף בלבד מייצרת מסקנות שגויות, כי מוצר שנראה יקר יותר יכול להיות זול יותר בפועל. אם בונים השוואה, קובץ המבצעים אינו אופציונלי.
האם אפשר להשוות מחירים ברמת הרשת?
לא באופן משמעותי. המחירים מתפרסמים לכל סניף כי הם באמת שונים בין סניפים של אותה רשת, ולכן מיצוע על רשת מייצר מספר שלא קיים בשום מקום. השאלה השימושית היא מה המחיר בסניפים שבטווח מסוים ולא ממוצע ארצי - והמכפלה של חנויות בפריטים היא גם מה שקובע את גודל הפרויקט.
איך מתאימים את אותו מוצר בין רשתות שונות?
לפי ברקוד, אף פעם לא לפי שם - אותו פריט מופיע בכתיבים, קיצורים וסדרי מילים שונים ברשתות שונות. יש להתחיל בהתאמת ברקוד מדויקת ולתת לכל השאר ליפול לתור בדיקה במקום לנסות התאמת שם אוטומטית, כי התאמת מוצר שגויה גרועה מהתאמה חסרה: היא מייצרת מסקנה שקרית שנראית נכונה.
מה צריך לקרות כשרשת לא מפרסמת קובץ יומי?
להתריע, ולא להשלים את הפער בשקט. מילוי יום חסר בנתוני היום הקודם מייצר סדרת זמן שקרית שנראית שלמה, וכל ניתוח מגמה שנבנה עליה שגוי באופן שאף אחד לא יבחין בו. אותו דבר לגבי מוצרים שנעלמים - חסר היום לא אומר שהוסר, ייתכן שהוא חוסר זמני.
להמשך קריאה
שירות רלוונטי
Web Scraping וחילוץ נתונים
סקרייפינג וצינורות נתונים אמינים שמספקים נתונים נקיים.
על הכותב
יהונתן סעדיה
מהנדס פרילנסר לאוטומציה, אתרים ו-MVP
אני יהונתן סעדיה, מהנדס בכיר שבונה אוטומציה עסקית, אתרים מותאמים ומוצרי MVP לעסקים קטנים ובינוניים בארה"ב, אירופה וישראל. המדריכים האלה נכתבים מתוך עבודה אמיתית עם לקוחות, לא מתיאוריה.
בוא נעבוד יחדיש לך פרויקט דומה?
ספר לי מה אתה מנסה להפוך לאוטומטי או לבנות, ואומר לך מהי הדרך המהירה והאמינה ביותר ליישם את זה.
