

אורלי הופרט,
VP Data At Travelier (formerly Bookaway Group)
איך הפכנו את סלאק למערכת התראות עסקיות מבוססות דאטה?
2023-07-24
•
7 דקות קריאה
אין ויכוח שדשבורדים יעילים ומאפשרים שקיפות למדדי החברה אבל לעיתים מורכב לזהות שינויים בזמן אמת ויכול להיות לזה מחיר כבד.
כולנו מכירים את המשתמשים שמרעננים דשבורדים שוב ושוב באובססיביות לצד אנליסטים אשר מזהים בעיה או שינוי מגמה ראשוני אך רק באיחור של כמה ימים מתחילים להבין לעומק את מקור ההשפעה והשינוי. הדבר מייצר תחושת החמצה ולרב עולה לחברות הרבה מאוד כסף שלא לדבר על בזבוז זמן של צוותי ניתוח.
אנחנו ב-Travelier מאמינים בדמוקרטיזציה של דאטה. צוות ה-Data Engineering וה-BI אחראים לספק לאנליסטים ולמשתמשים העסקיים בכל הדומיינים וחברות הבת גישה מלאה לדאטה על מנת לקבל החלטות מדויקות ובזמן אמת. גילינו כי רוב המשתמשים ייגשו לדאטה בממוצע פעם ביום, לפעמים גם פעם ביום וחצי. הדבר מייצר פער של עד 36 שעות בגישה למידע ברגעי אמת. בנוסף, חברות הבת שלנו פרוסות בכל העולם כך שגם אזורי זמן יכולים להוות אתגר זיהוי.
לאור ההבנה כי יש פער בין שעת השינוי/בעיה לבין נקודת זיהוי הבעיה ע״י המשתמש, החלטנו להרחיב את ארגז הכלים שאנו מציעים למשתמשים שלנו, קרי עובדי החברה.
היה לנו חשוב לייצר עבורם כלי המאפשר לקבל מידע באופן מיידי לצד היכולת להיות פרואקטיביים, יעילים ולהגיב במהירות ברגע שאירוע קורה.
בבלוג הזה אשתף איך בנינו מערכת התראות מבוססת דאטה על ה DWH שלנו, המאפשרת הגדרה מהירה וקלה של התראות הנשלחות ישירות בסלאק של בעליי העניין הרלוונטים.
את הכלי בנינו בעזרת ה stack הטכנולוגי הקיים שלנו (Airflow, Python, BigQuery) ולהלן הפרמטרים שהגדרנו:
-
- קלות שימוש
- הגדרה וניהול של התראות בצורה קלה ב google sheet בעזרת ידע ב SQL בלבד ללא צורך בתמיכה של מפתחים
- רלוונטיות
- התראות לסביבת התקשורת הטבעית של היוזרים שלנו (AKA Slack) עם אפשרות להגדיר ערוץ ספציפי ביצירת ההתראה כך שיוזרים יירשמו רק להתראות הרלוונטיות להם
-
- כל המידע בסלאק בלי צורך להוריד קבצים או לעבור בלינק לדשבורד
- גמישות
- אין הגבלה על סוגי ההתראות, כל התראה שניתן לתרגם לשאילתא ניתנת למימוש, מערכי סף בהם שאילתא ללא תוצאות לא תשלח כהתראה ועד אנומליות בדאטה ובדיקות נכונות נתונים.
בבלוג הזה אנסה לשתף בקוד פרקטי שיעזור לכם לבנות כלי כזה בעצמכם, בקלות ומהירות עם ערך מיידי מובטח.
אז איך זה עובד?
לתיאור הארכיטקטורה אעבור לאנגלית למען הימנעות מתרגום קלוקל .
The system reads data received from the user through a google sheets file, uploads it to BigQuery, runs logic, outputs alerts to Slack and monitors it on a BI report.
- Google sheets file: Contains the alert configuration metadata, accessible by users to add/modify tests.
- BigQuery external table: BigQuery replication of the google sheets configuration file
- AirFlow DAG - the DAG generates 3 tasks:
- Queries the BQ external table, looks for tests that should be triggered on the next interval and pushes it to a table in BigQuery.
- Triggers a Python script which executes the tests logic as received by the user and sends alert to Slack if necessary.
- Save run statistics data to an audit table in BigQuery
- Reports to monitor alerts and track usage
אז איך זה נראה?
הרי התראה לדוגמא היישר מהסלאק והשיח המיידי בין בעלי העניין:
עוד כמה טיפים:
- תערבו בתהליך את המשתמשים, אנליטסים ויוזרים עסקיים. אצלנו מי שהובילה את היוזמה הייתה האנליסטית של הקבוצה שהגדירה את הצרכים של הכלי והתבססה על כאבים יומיומיים
- אספו פידבק ממשתמשים לאורך כל הדרך שיסייע לדייק את התוצר
- לא לוותר על ערוצים שונים בסלאק לפי קבוצות עניין. כשמשתמשים מקבלים יותר מידי הודעות לא רלוונטיות הם לא נשארים דרוכים להתראות אמת
- תבדקו התראות חדשות על דטה היסטורי, תראו שבחרתם לוגיקות מדוייקות או ערך סף נכון שיציפו רק את התוצאות הממוקדות שקוראות לפעולה
לסיכום
עם הרבה יוזמה וקצת קוד מערכת ההתראות שבנינו מביאה ערך חדש וגדול למשתמשים שלנו. הוספת התראה חדשה היא קלה ומהירה מתבצעת על ידי האנליסטים שלנו ללא עזרה של מפתחים.
הזדמנויות ובעיות חדשות שמתעוררות הופכות במהרה להתראות מניבות.
הצלחנו להוריד את הזמן לאיתור שינוי מממוצע של 28 שעות ל 35 דקות. מספק לראות את התקשורת המיידית בין בעלי העניין בסלאק על התראה שנשלחת והמהירות של הטיפול.
בהמשך נרצה לשפר את הויזואליזציה של התוצאות ואנחנו מתכננים למדוד את שביעות הרצון של המשתמשים שלנו בסקר וגם לשמוע מהם הצעות לשיפור.
בהמשך יש פירוט של מבנה קובץ ה metadata ושיתוף של הקוד מקווה שעזרנו לכל מי שירצה לפתח כלי כזה, מוזמנים גם לפנות ולהתייעץ.
ועכשיו נרד לפרטים:
שדות הקונפיגורציה בקובץ הגדרת ההתראות:
Values | Description | Column Name |
test indicator | test_id | |
slack user name to allow personal tagging | test_owner_name | |
slack user id | test_owner_id | |
SQL test code - the output (if exists) will be pushed to slack | query | |
{0,1} | Indicator for incremental type alerts | increment_test |
{day,hour} | Frequency interval value for alerts scheduling | frequency_interval |
integer | Units of time for frequency interval | frequency_units_of_time |
TIMESTAMP_ADD(TIMESTAMP, INTERVAL history_time_value day, day) | The time parameter value for increment alerts | history_time_value |
TIMESTAMP_ADD(TIMESTAMP, INTERVAL 1 history_units_of_time ) | The time units value for increment alerts | history_units_of_time |
alert active status | test_status | |
Optional, customize slack message | slack_message |
בניית טבלת stage לריצה בזמן אמת:
שליפה מטבלת ה meatadata של ההתראות ויצירת טבלת הטסטים להרצה בהתאם לנקודת זמן הריצה
פייתון סקריפט להרצת הטסטים:
הרצת כל טסט מטבלת הקונפיגורציות ושליחת ההתראה במידה וקיימת לערוץ הסלאק הרלוונטי. הסטטיסטיקות כמו משך זמן הריצה, שגיאות וכו׳ נרשמות לטבלת audit נפרדת.
לשם כך ניצור מחלקה בשם DataAlertsHandler:
במחלקה זו הפונקציה run_data_alerts תנהל את הפעולות השונות לצורך טעינת קונפיגורציות ההתראות, הרצתן ושליחת התראה במידת הצורך:
ראשית נטען את הקונפיגורציה המתאימה באמצעות הפונקציה load_test_configuration:
כחלק מהטעינת הקונפיגורציה, נפנה ל DWH שלנו בbigQuery לשם משיכת הקונפיגורציה באמצעות
נריץ את הבדיקות ובמידה ואותרה במהלך הרצת הבדיקה אנומליה, נוציא התראה מתאימה דרך ערוץ הסלאק הרלוונטי באמצעות קריאה לפונקציה הבאה:
לבסוף נכתוב לטבלת audit את תוצאות ההרצה (גם במידה ולא אותרו אנומליות):
שתפו את הבלוג:
Startup for Startup אישי
קבלו עדכונים על הנושאים שהכי מעניינים אתכם
שלי Startup for Startup
קבלו עדכון ישר למייל ברגע שיוצא תוכן חדש בנושא.
הירשמו לאיזור האישי
צרו פרופיל אישי באתר ותוכלו להתחבר לאחרים ואחרות, לקבל תכנים מותאמים אישית, ולשמור את התכנים שהכי מעניינים אתכם.
עוד תוכן בנושא:
בלוג
5 דק'
04/2025
AI חכם מתחיל בדאטה חכם
פודקאסט
41 דק'
07/2024
261: סדרת SaaS בסקייל פרק 3 - מטריקות מרכזיות לחברה בצמיחה
אנחנו מדברים על NDR ועל Gross Retention, מטריקות מרכזיות לחברות שעוברות תהליך סקייל.
וידאו
59 דק'
05/2024
איך מגדירים ומודדים הצלחה?
גיל הירש וטל זקון מדבדרים על איך ולמה חשוב להגדיר ולמדוד הצלחה.
פודקאסט
13 דק'
01/2024
פרק 238: איך לתכנן את 2024 - שימוש בדאטה להסתכלות קדימה
אנחנו מדברים על כלים,אסטרטגיות ומתודולוגיות שונות הקשורות לתכנון קדימה ברמת החברה - הצבת יעדים, תכנון תרחישים, וכו׳.
וידאו
01 דק'
08/2023
פייתון לאנליסטים
רות השקס, Senior Data Scientist במאנדיי, מעבירה סדנא על איך להשתמש בפייתון בתור אנליסטים
וידאו
49 דק'
08/2023
Scenario Planning
תומר קרמרמן, Head of Analytics to the CEO בחברת מאנדיי, מדגים איך לבנות תוכנית חמש-שנתית לחברות SaaS - מפרודקט מרקט פיט ועד להנפקה - אך ורק על ידי שימוש ב-Spreadsheet
וידאו
1 דק'
08/2023
AI for Data Analysts
כלי AI שיעזרו לכם בניתוחי עומק ועבודות אנליטיקה, ושימוש במתודולוגית יצירת הכלים ואופטימיזציה לתהיליכים יומיומיים
וידאו
39 דק'
08/2023
המסע לעבר אנליזה מצוינת
איתי שבתאי, מוביל גילדת האנליסטים במאנדיי, משתף בהצלחות, בטעויות, בשיעורים של צוות האנליסטים במאנדיי בדרך לאנליזה שמשרתת את המטרות שלה.
וידאו
20 דק'
07/2023
עבודה עם דאטה: איך להנגיש נתונים
וידאו
23 דק'
07/2023
עבודה עם דאטה: A/B testing
איך עובדים עם A/B testing ביום יום שלנו? מה חשוב לזכור? איך A/B testing עוזר לנו לקבל החלטות נכונות בחברה?
וידאו
12 דק'
07/2023
עבודה עם דאטה: Apples to Apples
למה להשוות הזמנת תפוחים במשלוח לקניית תפוחים בשוק זה בעצם כמו להשוות ARR של לקוחות? גרא וינר עם סשן שמבהיר את הנקודה החשובה הזאת - ועם מסר לאבא.
בלוג
3 דק'
10/2023
איך אפשר ללמוד על אנשים מתוך מספרים, ולהפיק מהם תובנות משמעותיות ופרקטיות
הניוזלטר שלנו
הירשמו וקבלו עדכונים על פרקים חדשים, כתבות, אירועים ועוד הפתעות!
רוצים לקחת חלק בשיתוף ידע?
אם גם אתם רוצים להצטרף למשימה שלנו להעשיר את האקוסיסטם בידע ותובנות, אם אתם רוצים לשאול אותנו משהו, אם אתם מרגישים שיש משהו שעזר לכם וכולם צריכים לדעת, נשמח לשמוע.
Startup for Startup