Menautkan rekaman ke instance metadata
Panduan ini menjelaskan cara menautkan data ke instance metadata.
Manufacturing Data Engine (MDE) menautkan data ke instance metadata dengan menulis instance_id bucket metadata ke dalam data. Namun, Anda tidak menetapkan
instance_id secara langsung dalam rekaman proto di parser. Sebagai gantinya,
MDE akan otomatis menyelesaikan instance_id untuk Anda
berdasarkan input yang Anda berikan dalam rekaman proto. MDE
menyediakan dua cara untuk menyelesaikan masalah di instance_id:
- Menurut kunci alami instance metadata.
- Menurut nilai instance metadata.
Menyelesaikan instance_id metadata dengan kunci alami
Setiap instance metadata dalam bucket metadata memiliki kunci alami, dan mungkin ada lebih dari satu instance untuk kunci alami. Anda dapat mengaitkan rekaman ke instance metadata
terbaru untuk kunci natural dengan memberikan kunci natural dalam
rekaman proto di parser. MDE akan mengambil
instance terbaru untuk kunci alami yang Anda berikan, dan menyisipkan
instance_id instance dalam catatan.
Misalnya, dengan instance metadata berikut dalam bucket metadata rekaman
yang disebut machine dengan nomor bucket 1:
[
{
"instance_id": "a614e25d-fded-41c3-9a56-3222cd30070d",
"bucket_number": "1",
"bucket_name": "machine",
"bucket_version": "1",
"natural_key": "m-234",
"instance": {
"machineName": "CNC Mill"
},
"created_timestamp": "2023-06-27 20:00:29.603000 UTC"
},
{
"instance_id": "6cfdf894-2fb6-4951-82c6-c4eada587529",
"bucket_number": "1",
"bucket_name": "machine",
"bucket_version": "1",
"natural_key": "m-234",
"instance": {
"machineName": "5 Axis CNC Mill"
},
"created_timestamp": "2023-06-28 20:00:29.632000 UTC"
}
]
Dengan pesan sumber berikut sebagai contoh:
{
"sensor": "rotation-speed-sensor",
"machine": "m-234",
"timestamp": "1687973092857",
"value": 1200
}
Skrip Whistle berikut:
package mde
[
{
tagName: $root.machine + "-" + $root.sensor;
data: {
numeric: $root.value;
};
timestamps: {
eventTimestamp: $root.timestamp;
}
cloudMetadata: [{
bucketReference: {
bucketName: "machine";
version: 1;
}
naturalKey: $root.machine
}]
}
]
Akan menghasilkan catatan proto berikut:
[
{
"tagName": "m-234-rotation-speed-sensor",
"data": {
"numeric": 1200
},
"timestamps": {
"eventTimestamp": "1687973092857"
},
"cloudMetadata": [
{
"bucketReference": {
"bucketName": "machine",
"number": 1
},
"naturalKey": "m-234"
}
]
}
]
Setelah MDE selesai memproses rekaman proto, MDE akan menghasilkan rekaman (baris) berikut di BigQuery (dengan asumsi sink BigQuery dan materialisasi metadata diaktifkan):
[
{
"id": "6e008960-7f25-4418-899c-75b05c3d3186",
"tag_name": "m-234-rotation-speed-sensor",
"type_version": "1",
"event_timestamp": "2023-06-28 17:24:52.526000 UTC",
"value": "1200",
"embedded_metadata": {},
"materialized_cloud_metadata": {
"machine": {
"machineName": "5 Axis CNC Mill"
}
},
"cloud_metadata_ref": {
"machine": {
"instance_id": "6cfdf894-2fb6-4951-82c6-c4eada587529"
}
},
"event_timestamp": "2023-06-28 17:24:53.526000 UTC",
"source_message_id": "8511923697775002"
}
]
Menyelesaikan instance_id metadata menurut nilai instance
Atau, Anda dapat mengaitkan rekaman ke instance metadata terbaru untuk kunci alami dengan memberikan seluruh objek instance metadata dalam rekaman proto di parser. Anda dapat secara opsional memberikan kunci natural. Jika Anda tidak menyertakan kunci alami, MDE menyimpulkan kunci alami berdasarkan jenis bucket:
- Jika Anda memberikan nilai instance metadata untuk bucket tag dan tidak menyertakan kunci alami, MDE akan otomatis menggunakan nama tag sebagai kunci alami.
- Jika Anda memberikan nilai instance metadata untuk bucket rekaman dan menghilangkan kunci alami, MDE akan otomatis menggunakan nilai hash objek instance sebagai kunci alami.
Setelah Anda membuat rekaman proto di parser, MDE akan membandingkan objek instance metadata yang diberikan dengan objek instance metadata terbaru untuk kunci alami yang diberikan.
Jika objek instance identik, MDE akan menyisipkan instance_id dari instance metadata terbaru untuk kunci alami ke dalam catatan.
Jika objek instance tidak identik, MDE akan menggunakan instance metadata yang disediakan oleh rekaman proto untuk membuat instance metadata baru untuk kunci alami tertentu. Kemudian, MDE akan memasukkan instance_id
instance yang baru dibuat ke dalam catatan.
Penyelesaian metadata instance_id menurut nilai instance sangat berguna
saat sumber edge Anda mengirimkan pesan yang sepenuhnya memenuhi syarat. Dengan menggunakan metode ini untuk menyelesaikan instance metadata, Anda dapat mereferensikan instance yang sudah ada serta membuat instance metadata baru secara dinamis.
Mereferensikan instance yang ada berdasarkan nilai
Contoh instance metadata dalam bucket metadata tag yang disebut asset
dengan nomor bucket 1:
[
{
"instance_id": "a614e25d-fded-41c3-9a56-3222cd30070d",
"bucket_number": "1",
"bucket_name": "asset",
"bucket_version": "1",
"natural_key": "s-446-pressure",
"instance": {
"machineName": "Stamping M. 446"
},
"created_timestamp": "2023-06-27 20:00:29.603000 UTC"
},
{
"instance_id": "6cfdf894-2fb6-4951-82c6-c4eada587529",
"bucket_number": "1",
"bucket_name": "asset",
"bucket_version": "1",
"natural_key": "s-446-pressure",
"instance": {
"machineName": "Stamping Machine 446"
},
"created_timestamp": "2023-06-28 20:00:29.632000 UTC"
}
]
Mengingat pesan sumber berikut:
{
"sensor": "pressure",
"machine": "s-446",
"timestamp": "1687973092857",
"machineName": "Stamping Machine 446",
"value": 24
}
Dan skrip Whistle berikut:
package mde
var tagName: $root.machine + "-" + $root.sensor;
[
{
tagName: tagName;
data: {
numeric: $root.value;
};
timestamps: {
eventTimestamp: $root.timestamp;
}
cloudMetadata: [{
bucketReference: {
bucketName: "asset";
version: 1;
}
instance: {
// optional. Since bucketReference points to a tag bucket, if omitted, the natural is inferred to be tagName
naturalKey: tagName
attributes: {
machineName: $root.machineName;
}
}
}]
}
]
Penerapan skrip Whistle akan menghasilkan rekaman proto berikut:
[
{
"tagName": "s-446-pressure",
"data": {
"numeric": 24
},
"timestamps": {
"eventTimestamp": "1687973092857"
},
"cloudMetadata": [
{
"bucketReference": {
"bucketName": "asset",
"number": 1
},
"naturalKey": "s-446-pressure",
"attributes": {
"machineName": "Stamping Machine 446"
}
}
]
}
]
Setelah MDE selesai memproses rekaman proto, MDE akan menghasilkan rekaman (baris) berikut di BigQuery (dengan asumsi sink BigQuery dan perwujudan metadata metadata diaktifkan):
[
{
"id": "6e008960-7f25-4418-899c-75b05c3d3186",
"tag_name": "s-446-pressure",
"type_version": "1",
"event_timestamp": "2023-06-28 17:24:52.526000 UTC",
"value": "24",
"embedded_metadata": {},
"materialized_cloud_metadata": {
"asset": {
"machineName": "Stamping Machine 446"
}
},
"cloud_metadata_ref": {
"asset": {
"instance_id": "6cfdf894-2fb6-4951-82c6-c4eada587529"
}
},
"event_timestamp": "2023-06-28 17:24:53.526000 UTC",
"source_message_id": "8511923697775002"
}
]
Membuat instance baru menurut nilai
Jika instance metadata yang diberikan dalam rekaman proto tidak identik dengan instance metadata terbaru untuk kunci alami yang diberikan, MDE akan membuat instance baru.
Anda dapat mengonfigurasi cara instance baru dibuat menggunakan setelan
instanceOverwriteMode di bucket:
- Jika
instanceOverwriteModedisetel ke benar (true), instance baru dibuat dari objek instance yang disediakan dalam rekaman proto. Instance baru disimpan di bucket metadata jika lulus validasi skema bucket. - Jika
instanceOverwriteModedisetel ke salah (false), instance baru dibuat dengan menggabungkan instance terbaru untuk kunci natural dengan objek instance yang diberikan dalam rekaman proto. Objek yang dihasilkan disimpan sebagai instance metadata baru di bucket metadata jika lulus validasi skema bucket.
Misalnya, dengan instance metadata berikut dalam bucket metadata tag bernama asset dengan nomor bucket 1:
[
{
"instance_id": "a614e25d-fded-41c3-9a56-3222cd30070d",
"bucket_number": "1",
"bucket_name": "asset",
"bucket_version": "1",
"natural_key": "s-446-pressure",
"instance": {
"machineName": "Stamping M. 446"
},
"created_timestamp": "2023-06-27 20:00:29.603000 UTC"
}
]
Serta pesan sumber berikut:
{
"sensor": "pressure",
"machine": "s-446",
"timestamp": "1687973092857",
"machineName": "Stamping Machine 446",
"value": 24
}
Dengan skrip Whistle berikut:
package mde
var tagName: $root.machine + "-" + $root.sensor;
[
{
tagName: tagName;
data: {
numeric: $root.value;
};
timestamps: {
eventTimestamp: $root.timestamp;
}
cloudMetadata: [{
bucketReference: {
bucketName: "asset";
number: 1;
}
instance: {
// optional. Since bucketReference points to a tag bucket, if omitted, the natural is inferred to be tagName
naturalKey: tagName
attributes: {
machineName: $root.machineName;
}
}
}]
}
]
Penerapan skrip Whistle akan menghasilkan rekaman proto berikut:
[
{
"tagName": "s-446-pressure",
"data": {
"numeric": 24
},
"timestamps": {
"eventTimestamp": "1687973092857"
},
"cloudMetadata": [
{
"bucketReference": {
"bucketName": "asset",
"number": 1
},
"naturalKey": "s-446-pressure",
"attributes": {
"machineName": "Stamping Machine 446"
}
}
]
}
]
Karena instance metadata yang diberikan tidak sama dengan instance metadata terbaru untuk kunci alami, MDE akan membuat instance metadata baru. Bucket metadata kini memiliki dua instance:
[
{
"instance_id": "a614e25d-fded-41c3-9a56-3222cd30070d",
"bucket_number": "1",
"bucket_name": "asset",
"bucket_version": "1",
"natural_key": "s-446-pressure",
"instance": {
"machineName": "Stamping M. 446"
},
"created_timestamp": "2023-06-27 20:00:29.603000 UTC"
},
{
"instance_id": "6cfdf894-2fb6-4951-82c6-c4eada587529",
"bucket_number": "1",
"bucket_name": "asset",
"bucket_version": "1",
"natural_key": "s-446-pressure",
"instance": {
"machineName": "Stamping Machine 446"
},
"created_timestamp": "2023-06-28 20:00:29.632000 UTC"
}
]
Setelah MDE selesai memproses rekaman proto, MDE akan menghasilkan rekaman (baris) berikut di BigQuery (dengan asumsi sink BigQuery dan perwujudan metadata metadata diaktifkan):
[
{
"id": "6e008960-7f25-4418-899c-75b05c3d3186",
"tag_name": "s-446-pressure",
"type_version": "1",
"event_timestamp": "2023-06-28 17:24:52.526000 UTC",
"value": "24",
"embedded_metadata": {},
"materialized_cloud_metadata": {
"asset": {
"machineName": "Stamping Machine 446"
}
},
"cloud_metadata_ref": {
"asset": {
"instance_id": "6cfdf894-2fb6-4951-82c6-c4eada587529"
}
},
"event_timestamp": "2023-06-28 17:24:53.526000 UTC",
"source_message_id": "8511923697775002"
}
]