תוכן הקובץ
בדף הזה מתואר התוכן של כל תיקיית חבילת הגדרות בחבילה של Manufacturing Data Engine (MDE).
בכל תיקייה של חבילת תצורה, מערכת MDE מצפה למצוא קובץ JSON אחד לכל אובייקט תצורה. אם רוצים ליצור שני מאגרי מידע, צריך ליצור שני קבצים נפרדים. אין חשיבות לשמות הקבצים. עם זאת, מומלץ לתת לקבצים שמות לפי שם אובייקט ההגדרה שרוצים ליצור. סכימת ה-JSON בפועל של כל אובייקט תלויה בסוג של ישות ההגדרה שרוצים ליצור, אבל היא תואמת לסכימת ה-JSON של תגובת ה-API המתאימה.
כדי לארגן את חבילת ההגדרות בצורה טובה יותר, אפשר להפנות לקובצי JSON אחרים שיוטמעו בקובץ בשדה מסוים. לדוגמה, קובץ ה-JSON הבא מציין קטגוריית MDE עם סכימה שמוגדרת בקובץ JSON אחר. כך משפרים את נוחות הקריאה והתחזוקה של חבילת ההגדרות.
{
"type": "TAG",
"name": "second-tag-bucket",
"attributes": {
"instanceOverwriteMode": "true"
},
"versions": [
{
"version": 1,
"schema": "'{{schemas/generic-schema.json}}'",
"provider": "local",
}
]
}
כדי להפנות לקובץ אחר, אפשר להשתמש בהוראה {{relative-path/file.json}} שמכילה את הנתיב היחסי של הקובץ שצריך לכלול בקובץ הקיים. MDE ינתח את הקובץ ויכלול את תוכן ה-JSON כערך של השדה שמכיל את הוראת ההפניה. הערך של השדה schema בדוגמה הקודמת יכיל אובייקט משנה מוטמע של JSON שתואם לתוכן הקובץ.
עבור אובייקטים מסוימים, צריך להטמיע את תוכן ה-JSON כמחרוזת. לדוגמה, השדה schema באובייקט של הקטגוריה מחייב הטמעה של סכימת הקטגוריה כמחרוזת. במקרה כזה, פקודת ההפניה צריכה להיות מוקפת במירכאות יחידות ', כדי שמנוע MDE יטמיע את התוכן כמחרוזת ללא עיבוד. פקודת ההפניה תהיה: '{{relative-path/file.json}}'.
הקובץ שאליו מתבצעת ההפניה יכול להיות בכל ספרייה, ואפשר ליצור ספריות שונות למטרות ארגון. לדוגמה, הספרייה שנקראת schemas בדוגמה הקודמת היא מבנה תיקיות שרירותי שנועד לקבץ קבצים משותפים. סוגי הקבצים שאפשר להטמיע הם JSON או WSTL עבור סקריפטים של Whistle.
בהמשך מופיעות דוגמאות להגדרות של כל ישות MDE.
קטגוריה
בקטע הזה מוצגת דוגמה להגדרה של קטגוריית MDE.
{
"type": "TAG",
"name": "second-tag-bucket",
"attributes": {
"instanceOverwriteMode": "true"
},
"versions": [
{
"version": 1,
"schema": "'{{schemas/generic-schema.json}}'",
"provider": "local"
}
]
}
מפרט הטמעה
בקטע הזה מופיעה דוגמה להגדרת מפרט להעברת נתונים מ-MDE.
{
"name": "csv-full-ingestion-specification",
"source": "CSV",
"folderName": "test-csv-folder",
"separator": ",",
"skipRows": 10,
"headers": {
"headerNames": {
"names": [
"one",
"two",
"three"
]
}
},
"insertMetadata": true,
"disabled": false
}
סוגי הודעות
בקטע הזה מוצגת הגדרה לדוגמה של מחלקות הודעות ב-MDE.
{
"name": "default-numeric-message-class",
"priority": 970,
"expression": "#root.event['value'] instanceof T(Number) && #root.event['timestamp'] != null && #root.event['tagName'] != null && #root.event['cluster'] == null"
}
מופעים של מטא-נתונים
בקטע הזה מופיעה דוגמה להגדרה של מטא-נתונים של MDE.
{
"bucketReference": {
"bucketName": "default-tag-bucket",
"bucketType": "TAG",
"version": 1
},
"naturalKey": "cloud-natural-key",
"instance": {
"site": "simulated-site",
"factory": "test-factory"
}
}
מנתחי נתונים
בקטע הזה מוצגת דוגמה להגדרה של מנתחי MDE.
{
"name": "default-numeric-parser",
"messageClassName": "default-numeric-message-class",
"typeReference": {
"name": "default-numeric-type",
"version": 1
},
"disabled": false,
"script": "'{{scripts/parser-script.wstl}}'"
}
סוג
בקטע הזה מוצגת דוגמה להגדרה של סוג MDE.
{
"archetype": "NUMERIC_DATA_SERIES",
"name": "default-numeric-type",
"disabled": false,
"versions": [
{
"version": 1,
"dataSchema": "",
"storageSpecs": [
{
"sink": "PUBSUB_PROTO",
"disabled": true,
"materializeCloudMetadata": false
},
{
"sink": "BIG_QUERY",
"disabled": false,
"materializeCloudMetadata": true
},
{
"sink": "GCS",
"disabled": false,
"materializeCloudMetadata": false
},
{
"sink": "PUBSUB_JSON",
"disabled": true,
"materializeCloudMetadata": false
},
{
"sink": "BIG_TABLE",
"disabled": false,
"materializeCloudMetadata": false
}
],
"metadataBuckets": [
{
"bucketName": "default-record-bucket",
"version": 1,
"required": false
},
{
"bucketName": "second-tag-bucket",
"version": 1,
"required": false
},
{
"bucketName": "default-tag-bucket",
"version": 1,
"required": false
}
],
"transformations": [
{
"window": {
"id": "10-minutes-window",
"durationMinutes": 10,
"valueExpression": "#message['data']['numeric'].toString()"
}
},
{
"eventChange": {
"keyExpression": "#message['tagName']",
"valueExpression": "#message['data']['numeric'].toString()"
}
}
]
}
]
}