טרנספורמציות

‫Manufacturing Data Engine‏ (MDE) מספק דרך פשוטה לבצע עיבוד לאחר קליטת הודעות וליצור תגים ורשומות חדשים שנגזרים מהודעות הקלט. המעבדים האלה נקראים טרנספורמציות. אפשר לשייך אותן לסוג מסוים וליצור הודעות חדשות שמוזנות מחדש ל-MDE. הטרנספורמציות מובנות בצינורות Dataflow ואפשר להגדיר אותן באמצעות פרמטרים ספציפיים של טרנספורמציה.

ב-MDE בגרסה 1.3 ובגרסאות מאוחרות יותר יש שני שינויים שמוגדרים כברירת מחדל:

  • שינוי באירוע של קבוצה
  • חלונות

הטרנספורמציות מופעלות ברמת הסוג. המשמעות היא שכל התגים ששייכים לסוג הזה יעברו שינוי. אפשר לשייך סוג לאף טרנספורמציה, לטרנספורמציה אחת או ליותר מטרנספורמציה אחת. אפשר להגדיר את השיוך בין הסוג לבין טרנספורמציה ספציפית בממשק האינטרנט וגם באמצעות API להגדרות. אפשר לשייך סוג לטרנספורמציה בכל שלב, ואפשר גם להסיר את השיוך הזה אם הוא כבר לא נחוץ.

יכול להיות שיהיה צורך בפרמטרים של טרנספורמציה כדי להגדיר את ההתנהגות הספציפית של טרנספורמציה מסוימת. פרמטרים של טרנספורמציה הם ספציפיים לכל סוג של טרנספורמציה ויכולים להיות שונים מטרנספורמציה אחת לאחרת.

גם ערכי הפרמטרים הספציפיים של הטרנספורמציה עבור טרנספורמציה מסוימת מוגדרים ברמת הסוג. סוגים שונים יכולים להשתמש בערכי פרמטרים שונים ולהשתמש באותו שינוי באופן שונה.

ההמרות מקבלות כקלט את כל ההודעות שממופות לסוג, אם ההמרה פעילה. כל הודעה מעובדת על ידי מעבד ההמרה ב-Dataflow.

הפלט של כל טרנספורמציה הוא הודעת JSON גולמית שמוזנת לנושא הראשוני של נחיתת הנתונים. ‫MDE מספק חבילת הגדרות ייחודית לכל טרנספורמציה. צריך להחיל את חבילת ההגדרות הזו על MDE אם מתכננים להשתמש בטרנספורמציה. חבילת ההגדרות יוצרת קבוצה של מחלקת הודעות, כלי ניתוח, סוג ומאגר מטא-נתונים. ישויות ההגדרה האלה מאפשרות ל-MDE לזהות ולעבד את הודעות הפלט של ההמרה לסוג ספציפי. בסוגים ספציפיים של המרות מאוחסן המידע שמופק על ידי ההמרה. הם משויכים גם לקטגוריות של מטא-נתונים של טרנספורמציות ספציפיות, שבהן מאוחסנים פרטי הפניה לגבי התג או הרשומה המקוריים שעברו טרנספורמציה.

יש שני סוגים של הודעות גולמיות שנוצרות על ידי כל טרנספורמציה:

  • group-event-change-records: סוג היעד להודעות הפלט של ההמרה של שינוי אירוע בקבוצה.
  • window-transformation-records: סוג היעד להודעות הפלט של הטרנספורמציה של חלונות.

טרנספורמציה של שינוי באירוע קבוצתי

הטרנספורמציה הזו עוקבת אחרי כל שדה בתג או בקבוצת תגים, ומפיקה אירוע בכל פעם שהערכים במעקב משתנים באחד מהתגים האלה. אפשר לשייך את הטרנספורמציה הזו לכל סוג של ארכיטיפ. השינוי מופיע בממשק האינטרנט כ-eventChange.

הטרנספורמציה הזו יוצרת הודעה שמנותחת לסוג CONTINUOUS_DATA_SERIES ספציפי בשם group-event-change-records שמופיע בחבילת ההגדרות המשויכת. הסוג מכיל את זמן ההתחלה וזמן הסיום של התקופה בין שינויי הערכים, וגם את הערך הקודם, הערך הנוכחי ושם התג שהפעיל את השינוי.

אפשר להגדיר קבוצה של תגים מאותו סוג למעקב משותף. אתם יכולים לבחור קריטריון מפתח כדי להגדיר איך לקבץ תגים. כל התגים שבהם המפתח מקבל את אותו ערך נבדקים יחד. הערך של key יכול להיות כל רכיב בתג proto, כולל כל שדה נתונים וכל רכיב של המטא-נתונים.

כדי שהטרנספורמציה תפעל עבור תג ספציפי, צריך להגדיר את המפתח לערך TagName.

פרמטרים

אלה שני פרמטרי ההמרה שנדרשים להגדרת ההמרה הזו:

  1. ביטוי מפתח: הוא מוצג בממשק האינטרנט כ-keyExpression. מגדיר את הביטוי שישמש לקיבוץ התגים. כל התגים שבהם לביטוי המפתח יש את אותו ערך נכללים יחד במעקב. הטרנספורמציה שולחת אירוע של שינוי ערך בכל פעם שמזוהה שינוי באחד מהתגים האלה. הערכים מושווים לערכים הקודמים של אותו תג, אבל אירוע מופעל כשכל אחד מהתגים משתנה. ביטוי המפתח מוגדר כביטוי SpEL ויכול להשתמש בכל השדות שזמינים ב-proto של התג. לדוגמה, כדי לעקוב רק אחרי תג אחד על סמך שם התג, ביטוי ה-SpEL יוגדר כך:

    #message['tagName']
    

    לחלופין, כדי לקבץ תגים על סמך שדה מטא-נתונים משותף, כמו שם המכונה (בהנחה שקיים asset-hierarchy מאגר עם מאפיין בשם machine-name), אפשר להגדיר את הביטוי כך:

    #message['metadata']['asset-hierarchy']['machine-name']
    
  2. ביטוי ערך: מוצג בממשק האינטרנט כ-valueExpression. השדה הזה מגדיר את שדה הערך שהטרנספורמציה עוקבת אחריו כדי לשלוח אירוע שינוי חדש. הוא מוגדר גם כביטוי SpEL. הביטוי יכול להשתמש בכל שדה של מבנה פרוטוקול התג. הפלט של הביטוי חייב להיות מהסוג String כדי שהפונקציה תפעל בצורה תקינה.

    לדוגמה, כדי לעקוב אחרי השדה value בקטע Data של פרוטוקול התג, אפשר להגדיר את Value Expression כך:

    #message['data']['numeric'].toString()
    

הודעת פלט

התוכן של הודעת הפלט שנוצרת על ידי הטרנספורמציה של שינוי אירוע קבוצתי מספק את הפרטים של האירוע שזוהה. אלה המאפיינים הספציפיים שזמינים בהודעת הפלט:

  1. TagName: הטרנספורמציה יוצרת אירוע בשם Tagname שתואם לערך של Key Expression ולסיומת "_event_change". אם Key Expression מוגדר כ-TagName יחיד, התג הנגזר יהיה "TagName_event_change".
  2. אובייקט חותמת זמן רציפה של שינוי באירוע: מכיל את חותמות הזמן הראשונית (מאפיין event_timestamp_start) והסופית (מאפיין event_timestamp_end) של האירוע. הוא מכיל גם את משך האירוע (המאפיין duration) כ-double.
  3. אובייקט נתונים של הודעת שינוי באירוע: מכיל את השם של התגים שערכם השתנה במהלך האירוע (מאפיין changed_tags) ואת רשימת התגים שתואמים לקריטריוני הקיבוץ בזמן שליחת האירוע (מאפיין contributing_tags). שניהם יכולים להכיל יותר מתג אחד לכל הודעה.
  4. אובייקט של שינוי ערך תג: השם (מאפיין tag_name), הערך הישן (מאפיין old_expression_value), הערך החדש (מאפיין new_expression_attribute) וההודעה (מאפיין message_id) שהפעילו את אירוע שינוי המצב.
  5. Changed Value Message Object (בגרסה 1.3.6 ואילך): מכיל את ההודעה שהפעילה את שינוי האירוע.

אפשר לעיין בסכימה הספציפית בקטע ההפניה.

טרנספורמציה של החלק הנצפה בלבד

הטרנספורמציה הזו מחילה פונקציית Windowing על כל התגים מסוג מסוים. חלונות הם סיכום של כמה רשומות לאורך תקופה מסוימת ברשומה אחת. אפשר לשייך את הטרנספורמציה של חלונות לכל סוג של ארכיטיפ. הוא יכול לסכם את הרשומות של תגים מ-1 דקה עד 60 דקות. התוצאה של הטרנספורמציה היא הודעה גולמית שמכילה את ערכי הסיכום של ביטוי הערך במהלך התקופה שנבחרה.

אפשר להחיל את הטרנספורמציה הזו כמה פעמים על אותו סוג, כל עוד המזהה של כל טרנספורמציה של חלון (כפי שמוגדר בפרמטרים שלה) הוא ייחודי בתוך הסוג. אפשר להוסיף את הטרנספורמציה Windowing באמצעות ממשק האינטרנט, אבל כדי להוסיף כמה טרנספורמציות Windowing לסוג נתון מסוים, צריך להשתמש ב-API.

הטרנספורמציה יוצרת תג נגזר מסוג שצוין (בשם window-transformation-records) שמכיל סיכום של כל הרשומות שהתקבלו במהלך חלון הזמן הזה עבור התג הזה. הטרנספורמציה הזו פועלת ברמת התג: היא תיצור תג מסוכם לכל תג מהסוג שאליו שויכה הטרנספורמציה. שם התג מורכב מהשם המקורי Tagname, מהסיומת -window-stats ומהערך id של הטרנספורמציה של חלון הזמן.

פרמטרים

כדי שהטרנספורמציה הזו תפעל, צריך להגדיר שלושה פרמטרים:

  1. משך הזמן של החלון: זמין בממשק האינטרנט כdurationMinutes. הוא מתייחס למשך הזמן של חלון ההחלה בדקות. לדוגמה, ערך של 1 ייצור סדרת זמן נגזרת ברזולוציה של דקה אחת.
  2. ID of the Window (מזהה החלון): זמין בממשק האינטרנט בתור id. הפעולה מקצה מזהה ייחודי לכל טרנספורמציה של חלון מהסוג הזה, כדי לאפשר החלה של יותר מאחת במקביל. המזהה יכול להיות כל מחרוזת.
  3. ביטוי ערך: זמין בממשק האינטרנט כ-valueExpression. זהו ביטוי SpEL שמוחל על פרוטוקול התגים כדי ליצור ערך מספרי שיסוכם על ידי טרנספורמציית חלון הזמן. לדוגמה, אם רוצים להשתמש בשדה הערך של תג מספרי גנרי, אפשר להגדיר את הביטוי valueExpression כך:

    #message['data']['numeric']
    

הודעת פלט

ההמרה שולחת הודעה אחת לכל תקופת זמן שמוגדרת על ידי פרמטר ההמרה durationMinutes. הודעת הפלט מכילה את המאפיינים הבאים:

  1. TagName: שם התג של סדרת הזמנים הנגזרת. הוא נוצר באופן אוטומטי על ידי ההמרה של חלונות הזמן. השם מורכב מה-TagName המקורי, מהסיומת -window-stats ומה-id של הטרנספורמציה של חלון הזמן. לדוגמה, אם שם התג הוא Temperature והמזהה הוא 1, שם התג הנגזר יהיה Temperature-window-stats-1.
  2. TimeStamp: מכיל את חותמות הזמן של ההתחלה והסיום של החלון (זמין כמאפיינים event_timestamp_start ו-event_timestamp_end).
  3. Window Summary Stats: מכיל את כל הנתונים המסוכמים לתקופה, כולל:
    1. ממוצע: הערך הממוצע של כל הערכים שהתקבלו במהלך חלון הזמן.
    2. Min: הערך המינימלי מכל הערכים שהתקבלו במהלך חלון הזמן.
    3. מקסימום: הערך המקסימלי מכל הערכים שהתקבלו במהלך חלון הזמן.
    4. סטיית תקן: סטיית התקן של כל הערכים שהתקבלו במהלך חלון הזמן.
    5. p50: רמת הסמך של 50% שלא תהיה חריגה מהערכים שהתקבלו במהלך חלון הזמן.
    6. p90: רמת הסמך של 90% שלא תעלה על הערכים שהתקבלו במהלך חלון הזמן.
    7. סכום: סיכום של כל הערכים שהתקבלו במהלך חלון הזמן.
    8. ספירה: מספר הערכים שהתקבלו במהלך חלון הזמן.
    9. דלתא: ההפרש בין הערך האחרון לבין הערך הראשון שהתקבלו במהלך חלון הזמן.

מידע נוסף זמין בסכימה הספציפית בקטע סכימות של טרנספורמציות.