JSON التسطيح والهروب ومعالجة الصفيف
ملاحظة
لن يتم دعم خدمة Insights السلاسل الزمنية (TSI) بعد مارس 2025. فكر في ترحيل بيئات TSI الحالية إلى حلول بديلة في أقرب وقت ممكن. لمزيد من المعلومات حول الإهمال والترحيل، يرجى زيارة وثائقنا.
ستقوم بيئة Azure Time Series Insights Gen2 بإنشاء أعمدة المخازن الدافئة والباردة بشكل ديناميكي، باتباع مجموعة معينة من اصطلاحات التسمية. عند استيعاب حدث، يتم تطبيق مجموعة من القواعد على حمولة JSON وأسماء الخصائص. ويشمل ذلك الهروب من بعض الأحرف الخاصة وتسطيح كائنات JSON المتداخلة. من المهم معرفة هذه القواعد حتى تفهم كيف سيؤثر شكل JSON على كيفية تخزين الأحداث والاستعلام عنها. انظر الجدول أدناه للحصول على القائمة الكاملة للقواعد. توضح الأمثلة A & B أيضا كيف يمكنك تجميع سلاسل زمنية متعددة بكفاءة في صفيف.
هام
- راجع القواعد أدناه قبل تحديد خاصية معرف السلسلة الزمنية و/أو الطابع الزمني لمصدر الحدث الخاص بك. إذا كان معرف TS أو الطابع الزمني الخاص بك داخل كائن متداخل أو يحتوي على واحد أو أكثر من الأحرف الخاصة أدناه، فمن المهم التأكد من أن اسم الخاصية الذي تقدمه يتطابق مع اسم العمود بعد تطبيق قواعد الابتلاع. انظر المثال باء أدناه.
| قاعدة | مثال JSON | بناء جملة تعبير السلاسل الزمنية | اسم عمود الخاصية في باركيه |
|---|---|---|---|
| يتم إلحاق نوع بيانات Azure Time Series Insights Gen2 بنهاية اسم العمود ك "_<dataType>" | "type": "Accumulated Heat" |
$event.type.String |
type_string |
| سيتم حفظ خاصية الطابع الزمني لمصدر الحدث في السلسلة الزمنية Azure Insights Gen2 ك "طابع زمني" في التخزين، والقيمة المخزنة في UTC. يمكنك تخصيص خاصية الطابع الزمني لمصدر (مصادر) الأحداث لتلبية احتياجات الحل الخاص بك، ولكن اسم العمود في التخزين الدافئ والبارد هو "الطابع الزمني". سيتم حفظ خصائص JSON الأخرى التي ليست الطابع الزمني لمصدر الحدث باستخدام "_datetime" في اسم العمود، كما هو مذكور في القاعدة أعلاه. | "ts": "2020-03-19 14:40:38.318" |
$event.$ts |
timestamp |
| أسماء خصائص JSON التي تتضمن الأحرف الخاصة. [ \ و ' يتم الهروب باستخدام [' و '] | "id.wasp": "6A3090FD337DE6B" |
$event['id.wasp'].String |
['id.wasp']_string |
| ضمن [' و '] هناك هروب إضافي من علامات الاقتباس الفردية والشرطة المائلة الخلفية. سيتم كتابة اقتباس واحد ك \' وسيتم كتابة شرطة مائلة عكسية ك \\ | "Foo's Law Value": "17.139999389648" |
$event['Foo\'s Law Value'].Double |
['Foo\'s Law Value']_double |
| يتم تسطيح كائنات JSON المتداخلة بفترة كفاصل. يتم دعم تداخل ما يصل إلى 10 مستويات. | "series": {"value" : 316 } |
$event.series.value.Long أو $event['series']['value'].Long أو $event.series['value'].Long |
series.value_long |
| يتم تخزين صفائف الأنواع البدائية كنوع ديناميكي | "values": [154, 149, 147] |
لا يمكن استرداد الأنواع الديناميكية إلا عبر واجهة برمجة تطبيقات GetEvents | values_dynamic |
| تحتوي المصفوفات التي تحتوي على كائنات على سلوكين اعتمادا على محتوى الكائن: إذا كان معرف (معرفات) TS أو خاصية (خصائص) الطابع الزمني داخل الكائنات الموجودة في صفيف ، إلغاء تدوير الصفيف بحيث تنتج حمولة JSON الأولية أحداثا متعددة. يتيح لك ذلك تجميع أحداث متعددة في بنية JSON واحدة. سيتم حفظ أي خصائص المستوى الأعلى التي هي نظيرة للصفيف مع كل كائن غير متداول. إذا لم يكن معرف (معرفات) TS والطابع الزمني ضمن الصفيف ، حفظه بالكامل كنوع ديناميكي. | انظر الأمثلة A و B و C أدناه | ||
| لا يتم تسطيح المصفوفات التي تحتوي على عناصر مختلطة. | "values": ["foo", {"bar" : 149}, 147] |
لا يمكن استرداد الأنواع الديناميكية إلا عبر واجهة برمجة تطبيقات GetEvents | values_dynamic |
| 512 حرفا هو حد اسم خاصية JSON. إذا تجاوز الاسم 512 حرفا، اقتطاعه إلى 512 وسيتم إلحاق _<'>hashCode'. لاحظ أن هذا ينطبق أيضا على أسماء الخصائص التي تم تسلسلها من كائن مسطح، مما يدل على مسار كائن متداخل. | "data.items.datapoints.values.telemetry<...continuing to over 512 chars>" : 12.3440495 |
"$event.data.items.datapoints.values.telemetry<...continuing to include all chars>.Double" |
data.items.datapoints.values.telemetry<...continuing to 512 chars>_912ec803b2ce49e4a541068d495ab570_double |
فهم السلوك المزدوج للمصفوفات
سيتم تخزين صفائف الكائنات بالكامل أو تقسيمها إلى أحداث متعددة اعتمادا على كيفية نمذجة بياناتك. يتيح لك ذلك استخدام صفيف لأحداث الدفع، وتجنب تكرار خصائص القياس عن بعد التي تم تعريفها على مستوى الكائن الجذر. قد يكون الخلط مفيدا لأنه يؤدي إلى إرسال عدد أقل من رسائل مراكز الأحداث أو مركز إنترنت الأشياء.
ومع ذلك ، في بعض الحالات ، تكون المصفوفات التي تحتوي على كائنات ذات مغزى فقط في سياق القيم الأخرى. سيؤدي إنشاء أحداث متعددة إلى جعل البيانات بلا معنى. لضمان تخزين مجموعة من الكائنات كما هي كنوع ديناميكي، اتبع إرشادات نمذجة البيانات أدناه وألق نظرة على المثال C
كيفية معرفة ما إذا كانت مجموعة الكائنات الخاصة بي ستنتج أحداثا متعددة
إذا كان واحد أو أكثر من معرفات السلاسل الزمنية متداخلا داخل كائنات في صفيف، أو إذا كانت خاصية الطابع الزمني لمصدر الحدث متداخلة، فسيقوم محرك الابتلاع بتقسيمها لإنشاء أحداث متعددة. يجب أن تتبع أسماء الخصائص التي قدمتها لمعرف (معرفات) TS و / أو الطابع الزمني قواعد التسوية أعلاه ، وبالتالي ستشير إلى شكل JSON الخاص بك. راجع الأمثلة أدناه، واطلع على الدليل حول كيفية تحديد خاصية معرف السلسلة الزمنية.
المثال أ
معرف السلسلة الزمنية في جذر الكائن والطابع الزمني المتداخلين
معرف السلسلة الزمنية للبيئة:"id"
الطابع الزمني لمصدر الحدث:"values.time"
حمولة JSON:
[
{
"id": "caaae533-1d6c-4f58-9b75-da102bcc2c8c",
"values": [
{
"time": "2020-05-01T00:59:59.000Z",
"value": 25.6073
},
{
"time": "2020-05-01T01:00:29.000Z",
"value": 43.9077
}
]
},
{
"id": "1ac87b74-0865-4a07-b512-56602a3a576f",
"values": [
{
"time": "2020-05-01T00:59:59.000Z",
"value": 0.337288
},
{
"time": "2020-05-01T01:00:29.000Z",
"value": 4.76562
}
]
}
]
النتيجة في ملف الباركيه:
سينتج عن التكوين والحمولة أعلاه ثلاثة أعمدة وأربعة أحداث
| طابع زمني | id_string | values.value_double |
|---|---|---|
2020-05-01T00:59:59.000Z |
caaae533-1d6c-4f58-9b75-da102bcc2c8c |
25.6073 |
2020-05-01T01:00:29.000Z |
caaae533-1d6c-4f58-9b75-da102bcc2c8c |
43.9077 |
2020-05-01T00:59:59.000Z |
1ac87b74-0865-4a07-b512-56602a3a576f |
0.337288 |
2020-05-01T01:00:29.000Z |
1ac87b74-0865-4a07-b512-56602a3a576f |
4.76562 |
المثال باء
معرف السلسلة الزمنية المركبة مع خاصية واحدة متداخلة
معرف السلسلة الزمنية للبيئة:"plantId" و "telemetry.tagId"
الطابع الزمني لمصدر الحدث:"timestamp"
حمولة JSON:
[
{
"plantId": "9336971",
"timestamp": "2020-01-22T16:38:09Z",
"telemetry": [
{
"tagId": "100231-A-A6",
"tagValue": -31.149018
},
{
"tagId": "100231-A-A1",
"tagValue": 20.560796
},
{
"tagId": "100231-A-A9",
"tagValue": 177
},
{
"tagId": "100231-A-A8",
"tagValue": 420
},
]
},
{
"plantId": "9336971",
"timestamp": "2020-01-22T16:42:14Z",
"telemetry": [
{
"tagId": "103585-A-A7",
"value": -30.9918
},
{
"tagId": "103585-A-A4",
"value": 19.960796
}
]
}
]
النتيجة في ملف الباركيه:
سينتج عن التكوين والحمولة أعلاه أربعة أعمدة وستة أحداث
| طابع زمني | plantId_string | telemetry.tagId_string | telemetry.value_double |
|---|---|---|---|
2020-01-22T16:38:09Z |
9336971 |
100231-A-A6 |
-31.149018 |
2020-01-22T16:38:09Z |
9336971 |
100231-A-A1 |
20.560796 |
2020-01-22T16:38:09Z |
9336971 |
100231-A-A9 |
177 |
2020-01-22T16:38:09Z |
9336971 |
100231-A-A8 |
420 |
2020-01-22T16:42:14Z |
9336971 |
100231-A-A7 |
-30.9918 |
2020-01-22T16:42:14Z |
9336971 |
100231-A-A4 |
19.960796 |
المثال جيم
معرف السلسلة الزمنية والطابع الزمني موجودان في جذر الكائن
معرف السلسلة الزمنية للبيئة:"id"
الطابع الزمني لمصدر الحدث:"timestamp"
حمولة JSON:
{
"id": "800500054755",
"timestamp": "2020-11-01T10:00:00.000Z",
"datapoints": [{
"value": 120
},
{
"value": 124
}
]
}
النتيجة في ملف الباركيه:
سينتج عن التكوين والحمولة أعلاه ثلاثة أعمدة وحدث واحد
| طابع زمني | id_string | datapoints_dynamic |
|---|---|---|
2020-11-01T10:00:00.000Z |
800500054755 |
[{"value": 120},{"value":124}] |
الخطوات التالية
- فهم قيود الإنتاجية في بيئتك