מנתח
מנתחי נתונים הם ישויות הגדרה שמגדירות איך מנתחים ומשנים הודעות ממקור מסוים של מחלקת הודעות לרשומות מסוג יעד מסוים.

הגדרת מנתח כוללת את שלושת הרכיבים הבאים:
- שיוך של מחלקה להודעת מקור: מנתח מבצע עיבוד של הודעות מקור ממחלקה אחת של הודעות מקור. מידע נוסף זמין במאמר סוגי הודעות מקור.
- שיוך של גרסת סוג: מנתח יוצר רשומות פרוטו של גרסה אחת של סוג. הגדרת גרסת הסוג מגדירה אילו שדות צריכים להיות ברשומת ה-proto שמופקת, ומכתיבה את המבנה שלהם (סכימה). מידע נוסף זמין במאמר בנושא סוג.
- סקריפט Whistle: סקריפטים של Whistle מגדירים איך להפוך הודעות מקוריות לרשומות פרוטו באמצעות מיפוי, ניתוח ולוגיקת טרנספורמציה. משתמשים כותבים סקריפטים של Whistle, אבל Manufacturing Data Engine (MDE) מספק חבילות הגדרה לתרחישי שימוש אופייניים. מידע נוסף מפורט בסעיף הבא.
הגדרה של משרוקית
Whistle היא שפת מיפוי שאפשר להשתמש בה כדי להמיר נתונים מורכבים עם היררכיה מקוננת מסכימה אחת לסכימה אחרת. בתחום הייצור, מודלים של נתונים יכולים להיות מורכבים ולהכיל הרבה מבנים מוטמעים וחוזרים. לכן קשה להביע לוגיקת מיפוי בפורמט פרוצדורלי. כדי לפתור את הבעיה הזו, Whistle מספקת שפה הצהרתית שמאפשרת להגדיר את ההיגיון של המיפוי והשינוי בצורה טבעית.
לדוגמה, אפשר להשתמש ב-Whistle כדי להפוך כמה מודלים של נתוני חיישנים במפעלים שונים למודל מאוחד מסוג MDE. נתוני המקור עשויים להכיל מבנים מקוננים, כמו רשימה של רכיבים או היררכיה של תכונות. Whistle מאפשרת לכם לבטא את לוגיקת המיפוי של המבנים המקוננים האלה בצורה טבעית, בלי שתצטרכו לכתוב קוד פרוצדורלי.
בנוסף, Whistle תומך בפונקציות שמאפשרות לפרק מיפויים מורכבים שכוללים מבנים חוזרים לפונקציות. כך קל יותר להבין את קוד המיפוי ולתחזק אותו, וגם קל יותר לעשות שימוש חוזר בקוד.
ל-Whistle יש יתרונות על פני גישות פרוצדורליות. מקרה לדוגמה:
בהינתן המטען הייעודי לדוגמה הזה:
{
"payload": {
"tag": "vibration-sensor"
},
"details": {
"value": 0.24,
"timestamp": "2023-06-26 12:19:20.046000 UTC"
}
}
והסקריפט הבא של Whistle:
package mde
[{
tagName: $root.payload.tag
timestamps: {
eventTimestamp: $root.details.timestamp
}
data: {
numeric: $root.details.value
}
}]
אם נחיל את סקריפט Whistle הקודם, מנתח התוכן ייצור רשומה של פרוטוקול כמו הבאה:
[
{
"tagName": "vibration-sensor",
"timestamps": {
"eventTimestamp": "2023-06-26 12:19:20.046000 UTC"
},
"data": {
"value": 0.24
}
}
]
מידע נוסף על תחביר השפה של Whistle ועל הפונקציות הזמינות מופיע במסמכי התיעוד של Whistle.
התנהגות של מנתחים בזמן ריצה
בזמן הריצה, כלי הניתוח מקבל את כל ההודעות של מחלקת הודעות המקור שאליה הוא משויך, מחיל את סקריפט Whistle שהוגדר על כל הודעה ופולט רשומה אחת או יותר של פרוטוקול מהסוג שהוגדר.
רשומות הפרוטו שמופקות חייבות לעמוד בדרישות של הגדרת הסוג. אם הם לא עומדים בדרישות, הם מועברים לתור של הודעות שלא ניתן למסור.
Association rules
אפשר לשייך כל מנתח רק לסוג אחד של הודעה ולגרסה אחת. עם זאת, מנתח יכול להפיק רשומה אחת או יותר כל עוד הן מהסוג של הגרסה שאליה המנתח מקושר. הפלט של מנתח תחביר הוא מערך של אובייקטים של רשומות פרוטו.

הפקה של יותר מרשומה אחת מניתוח תחבירי שימושית בתרחישים שבהם הודעת מקור מכילה מערך של קריאות או אירועים שרוצים לבטל את הצבירה שלהם. מנתחי נתונים מאפשרים לכם 'לפצל' את הודעת המקור לכמה רשומות פרוטו, כך שכל קריאה, למשל, הופכת לשורה בטבלת רשומות ב-BigQuery.
רשומות ה-proto שמועברות יכולות להפנות לכל שם תג. ההתנהגות הזו שונה מגרסאות 1.1 ו-1.2, שבהן שמות התגים הוגבלו לסוג. אחרי v1.3 MDE proto records emitted by any parser can
סכימת רשומת Proto
סכימת ה-JSON שרשומות הפרוטו חייבות להתאים לה תלויה ב:
- ארכיטיפ: הארכיטיפ הספציפי שמשויך לסוג.
- הגדרת הסוג: הגדרות התצורה שהוגדרו לסוג.
ארכיטיפ מגדיר את סכימת הבסיס לרשומות. לדוגמה, סוג מסוים במשפחת הארכיטיפים discrete מחייב שרשומות פרוטו יכילו ערכים למאפיינים הבאים:
tagNametimestamps.eventTimestampdata.complex
הסוג יכול להטיל הגבלות נוספות על רשומות הפרוטו. לדוגמה, אפשר להגדיר סכימה לשדה data, או לדרוש שרשומות פרוטו יספקו הפניה למופע של מטא-נתונים.
מידע נוסף מופיע במאמרי העזרה בנושא רשומות פרוטו.
חיפוש נתוני הפניות
MDE מספק פונקציית Whistle מותאמת אישית כדי לחפש ערך של מפתח שסופק מקטגוריית חיפוש.
כדי לחפש מופע של דלי חיפוש לפי המפתח הטבעי שלו, אפשר לקרוא לפונקציה mde::lookupByKey בסקריפט Whistle. הפונקציה מקבלת את הפרמטרים lookupbucketName,
bucketVersion ו-naturalKey של המופע כארגומנטים, ומחזירה את מופע המטא-נתונים האחרון של המפתח הטבעי שצוין. אפשר להשתמש במופע כדי לאכלס שדות ברשומה של פרוטו במנתח התחביר. לדוגמה:
"data" : {
"complex" : {
"VIN" : mde::lookupByKey("vin-lookup-bucket", input.vinKey, 1).VIN,
"vin_registration_time" : mde::lookupByKey("vin-lookup-bucket", input.vinKey, 1).vin_registration_time,
"ResultValue" : 163.0482614,
}
}
הגבלות על שמות של מנתחי נתונים
שם של מנתח יכול להכיל את התווים הבאים:
- אותיות (רישיות וקטנות), מספרים והתווים המיוחדים
-ו-_. - יכול להכיל עד 255 תווים.
אפשר להשתמש בביטוי הרגולרי הבא לאימות: ^[a-z][a-z0-9\\-_]{1,255}$.
אם תנסו ליצור ישות שתפר את מגבלות השמות, תקבלו את השגיאה 400 error.
אפשר להשתמש בפונקציה mde::sanitizeTagName() כדי לוודא שהשם עומד בדרישות של הגבלות השמות. מידע נוסף זמין במאמר בנושא פונקציות של Whistle MDE.