הזרמת נתונים
הזרמת נתונים מעבירה אירועים מ־Joryio ליעדים חיצוניים כמעט בזמן אמת. כל זרם מקשר בין יעד לקבוצת אירועים, ו־Joryio מוסרת ליעד את האירועים התואמים באצוות.
עברו אל Data → Data Streaming כדי לנהל את הזרמים שלכם.
יעדים
| יעד | סוג | מה הוא עושה |
|---|---|---|
| Webhook | נקודת קצה של HTTP | שליחת כל אירוע בבקשת POST כאובייקט JSON לכל כתובת HTTPS |
| Snowflake | מחסן נתונים | טעינה רציפה של אירועים לטבלת Snowflake |
| BigQuery | מחסן נתונים | הזרמת אירועים למערך נתונים ב-BigQuery |
| Amazon Redshift | מחסן נתונים | טעינת אירועים לאשכול Amazon Redshift |
| Amazon S3 | אחסון אובייקטים | כתיבת קובצי JSON / NDJSON באצוות ל־Bucket |
| Kafka | זרם אירועים | פרסום אירועים ב־topic של Kafka |
| Mixpanel | אנליטיקת מוצר | העברת אירועים לפרויקט Mixpanel |
| Amplitude | אנליטיקת מוצר | העברת אירועים לפרויקט Amplitude |
שדות חיבור
לכל יעד יש פרטי חיבור משלו. נתונים סודיים (סיסמאות, מפתחות, טוקנים ו-JSON של חשבון שירות) מוצפנים בעת האחסון.
- Webhook - כתובת URL, סוד לחתימה (אופציונלי), כותרות נוספות (אופציונלי)
- Snowflake - Account, Username, Password, Role, Warehouse, Database, Schema, Table
- BigQuery - Project ID, Dataset ID, Table ID, Service Account JSON
- Amazon Redshift - Host, Port, Database, User, Password, Schema, Table
- Amazon S3 - Bucket, Prefix, Region, Endpoint (אופציונלי, לאחסון תואם-S3), Access Key ID, Secret Access Key
- Kafka - Brokers, Topic, SASL Username/Password, SSL
- Mixpanel - Project Token, Region (US / EU / India)
- Amplitude - API Key, Region (US / EU)
יצירת זרם
- עברו אל Data → Data Streaming ולחצו על Create Stream.
- הזינו Name לזרם (השם יוצג ברשימת הזרמים) ובחרו destination.
- מלאו את שדות ה־connection של היעד.
- בחרו payload format - JSON (אובייקט אחד לכל אירוע) או NDJSON (אירוע אחד בכל שורה, כשהאירועים מופרדים בשורות חדשות).
- בחרו אילו events להזרים (ראו בהמשך).
- בדקו את שורת הסיכום ולחצו על Create Stream.
בחירת אירועים
אתם שולטים בדיוק אילו אירועים הזרם מקבל:
- All events - הפעילו אפשרות זו כדי להזרים את כל האירועים הנוכחיים והעתידיים. כבו אותה כדי לבחור אירועים מסוימים.
- By group - האירועים המובנים מקובצים לפי Messaging, In-App, Journeys, Campaigns, E-Commerce ו־Identity. סמנו קבוצה שלמה או אירועים בודדים.
- Custom events - תחת Custom Event, חפשו או הקלידו אירועים מותאמים שאתם שולחים באמצעות
track(), כגוןpurchaseאוpage_view. הבורר מציג את האירועים שכבר התקבלו בסביבת העבודה שלכם; אפשר גם להקליד אירוע שעדיין לא התקבל וללחוץ על Add.
קטלוג האירועים
אלה האירועים המובנים שניתן להזרים. ניתן גם להזרים כל אירוע מותאם שאתם שולחים עם track().
| קבוצה | אירועים |
|---|---|
| Messaging | message.sent, message.delivered, message.opened, message.clicked, message.failed, message.bounced, message.complained, message.spamreport, message.deferred, message.unsubscribed, message.queued, message.skipped |
| Inbound replies | sms.message.received, whatsapp.message.received |
| In-App | in_app.displayed, in_app.clicked, in_app.dismissed, in_app.converted |
| Journeys | canvas.experiment.entered, canvas.ai_decision.entered |
| Campaigns | campaign.sent, campaign.abtest.winner_declared, campaign.ai_decision.entered |
| E-Commerce | Order Completed |
| Identity | $identify, $alias |
אין שמות אירועים נפרדים לכל ערוץ, כגון email.delivered או sms.delivered. כל שליחה באימייל, SMS, Push, WhatsApp או Webhook מפיקה את אותם אירועי message.*, וכל מטען נושא מאפיין channel - אחד מתוך email, sms, push, whatsapp או webhook. הירשמו פעם אחת ל־message.delivered כדי לקבל אירועי מסירה מכל הערוצים, ולאחר מכן סננו לפי המאפיין channel במערכת שקולטת את הנתונים.
צמצום לפי ערוצים בהגדרת הזרם (אופציונלי): כשבוחרים אירוע message.*, מופיע בטופס היצירה או העריכה מסנן לפי ערוץ - סמנו כל אחד מהערכים email, sms, push, whatsapp או webhook כדי להזרים רק את הערוצים האלה, במקום לסנן אותם במערכת הקולטת. השאירו את המסנן ריק כדי לכלול את כל הערוצים (ברירת המחדל). ההגדרה חלה רק על אירועים שנושאים מאפיין channel; אירועים ללא ערוץ (canvas.*, Order Completed וכדומה) אינם מושפעים.
שליחה באצוות
האירועים נצברים ונמסרים באצוות. אתם מגדירים:
- גודל אצווה - מספר האירועים שנצברים לפני השליחה.
- מרווח ריקון - זמן ההמתנה המרבי לפני מסירת אצווה חלקית.
אצווה נמסרת כשהיא מגיעה לגודל שהוגדר או כשחולף מרווח הריקון - המוקדם מביניהם.
כיצד זה עובד
האירועים נמסרים לזרמים דרך מנגנון הפצה עמיד (durable fan-out), שאינו תלוי באחסון האנליטיקה. כל זרם מקבל את מלוא האירועים מכל הערוצים, ולכן כל יעד ממשיך לקבל אירועים בלי תלות באופן שבו נתוני האנליטיקה נשמרים.
כאשר אירוע תואם לבחירת האירועים של זרם, הוא נכנס לתור ונמסר ליעד באצווה הבאה. כל מסירה כוללת את שם האירוע, המאפיינים, חותמת הזמן ומזהה המשתמש - ובאירועי הודעות גם את ה־channel שממנו נשלחה ההודעה. מחסני נתונים ויעדי אחסון טוענים את האצווה כשורות או כקבצים; יעדי אנליטיקת מוצר מעבירים כל אירוע דרך API הקליטה שלהם; Webhooks מקבלים גוף JSON או NDJSON.
כל זרם אוסף אירועים לאצוות (לפי גודל האצווה ומרווח הריקון) ומנסה למסור אותן שוב במקרה של כשל. אם יעד אינו זמין, אירועים שלא נמסרו מוחזרים לתור ונמסרים מחדש כשהיעד חוזר לפעולה, כך שההשבתה אינה גורמת לאובדן נתונים.
הבטחות מסירה וכפילויות
המסירה היא לפחות פעם אחת (at-least-once). במקרים נדירים - ניסיון חוזר אחרי כשל רשת, או הפעלה מחדש של תהליך באמצע אצווה - אותו אירוע עשוי להימסר ליעד שלכם יותר מפעם אחת.
זו בחירה מכוונת, וזו אותה הבטחה שכל פלטפורמת סטרימינג מספקת. החלופה, מסירה של לכל היותר פעם אחת, הייתה אומרת השמטה שקטה של אירוע כשתוצאת המסירה אינה ידועה; אנחנו מעדיפים לשלוח פעמיים מאשר לאבד.
כל אירוע נושא eventId יציב. זהו אותו ערך בכל מסירה של אותו אירוע, כך שתוכלו להשתמש בו לביטול כפילויות:
| יעד | מה אנחנו עושים |
|---|---|
| Amplitude | נשלח כ-insert_id - Amplitude מבטל כפילויות אוטומטית |
| Mixpanel | נשלח כ-$insert_id - Mixpanel מבטל כפילויות אוטומטית |
| S3 | אצווה שנמסרת שוב נכתבת לאותו מפתח אובייקט, ודורסת במקום להוסיף קובץ נוסף |
| BigQuery, Snowflake, Redshift | בטלו כפילויות לפי eventId בעת הטעינה, למשל ROW_NUMBER() OVER (PARTITION BY eventId) |
| Webhook | התעלמו מ-eventId שכבר עיבדתם |
עבור מחסני נתונים ואחסון, כפילויות אינן מזיקות לאחר ביטול כפילויות בטעינה. עבור webhooks שמבצעים פעולה על כל אירוע - יצירת פנייה, חיוב - בדקו את ה-eventId לפני הפעולה.
ניטור
רשימת הזרמים מציגה מדדים וסטטוס לכל זרם:
- Active - מסירת האירועים פועלת כרגיל
- Paused - הזרם נעצר זמנית (אפשר לחדש אותו בכל עת)
- Error - המסירות האחרונות נכשלו (בדקו את החיבור)
אפשר גם לראות את מספר האירועים שנמסרו ושנכשלו, את שיעור המסירה ואת מועד המסירה האחרונה. פתחו זרם כדי להציג את דף הפרטים שלו, לערוך אותו, להשהות או לחדש אותו, או למחוק אותו.