استعلامات StableNet

ينطبق هذا القسم على الأنظمة المدمجة مع StableNet® فقط

يمكن الاستعلام عن بيانات StableNet® من مجموعة بيانات مجمعة على قاعدة بيانات SKOOR المحلية وكذلك في الوقت الفعلي من واجهة برمجة تطبيقات StableNet®. تساعد الإرشادات التالية على الجمع بين هاتين الطريقتين وتحسينهما.

إعداد استعلام بيانات مجمعة للأجهزة والقياسات

يقدم مثال الاستعلام التالي بيانات أساسية للاستخدام مع أداة FilterMatrix (على سبيل المثال تصفية للأجهزة أو القياسات) وكذلك لضم بيانات القياس من واجهة برمجة تطبيقات StableNet® API أو جدول البيانات المجمعة. يجب تعيين مصدر البيانات إلى مصدر من نوع StableNet.

-- Data query example "device_measurement"

SELECT   
  std.id AS device_id,
  std.display_name AS device_name,
  sm.id as measurement_id,
  sm.name as measurement_name
FROM stablenet_taggable_device std
JOIN stablenet_measurement sm 
  ON std.id = sm.dest_device_id

نظرًا لأن بيانات الجهاز وبيانات القياس لن تتغير كثيرًا، يجب أن يتجسد هذا الاستعلام. سيتم زيادة الأداء بشكل كبير.

اضبط الفاصل الزمني للتحديث على يومي وأنشئ مؤشرات لجميع السمات:

image-20240513-142234.png

انضم إلى جدول خارجي لبيانات الوقت الحقيقي

بالإضافة إلى الاستعلام عن البيانات المادية المُعدّة، يمكن ربط البيانات من واجهة برمجة تطبيقات StableNet® API باستخدام جدول خارجي.

تشير الكلمة الأساسية "من" في المثال التالي إلى الاستعلام المادي المُعد أعلاه.

SELECT   
  dm.device_id,
  dm.device_name,
  dm.measurement_name,
  dm.measurement_id,
  sma.metric_key,
  sma.metric_name,
  sma.interval,
  sma.min,
  sma.max,
  sma.avg,
  sma.timestamp
FROM device_measurement dm
JOIN stablenet_measurement_data sma 
  ON dm.measurement_id = sma.measurement_id
WHERE sma.start = ${begin}::timestamptz
  AND sma."end" = ${end}::timestamptz
  AND sma.bucket_size = EXTRACT(
    EPOCH FROM ('1 ' || ${bucket_size})::interval
  )::integer
  AND sma.metric_name = ${metric_name}

في لوحة المعلومات أو معاينة البيانات، يجب تعيين السمات التالية لهذا المثال الاستعلام:

image-20240516-132209.png
  • البداية/النهاية: الطابع الزمني ISO 8601، على سبيل المثال 2024-05-01T00:00:00:00Z

  • حجم_الدلو: دلو الوقت بكلمات مثل الساعة، اليوم، الشهر، إلخ.

  • اسم_المتري: اسم متري صالح ل StableNet® متري مثل وقت الرحلة ذهابًا وإيابًا

بدلاً من اسم_المقياس، جرب السمة metric_key في بند WHERE لتحديد مقياس معين إذا كان هناك أكثر من مقياس متاح

الانضمام إلى جدول البيانات المجمعة

إذا كان الأداء أكثر أهمية من بيانات الوقت الحقيقي، فيجب تفضيل جدول البيانات المجمعة على الجداول الخارجية.

تشير الكلمة الأساسية "من" في المثال التالي إلى الاستعلام المجمّع الذي تم إعداده أعلاه.

SELECT   
  dm.device_id,
  dm.device_name,
  dm.measurement_name,
  dm.measurement_id,
  sma.metric_key,
  sma.metric_name,
  sma.interval,
  sma.min,
  sma.max,
  sma.avg,
  sma.timestamp
FROM device_measurement dm
JOIN stablenet_measurement_data_aggregated sma 
  ON dm.measurement_id = sma.measurement_id
WHERE sma.timestamp BETWEEN ${begin}::timestamptz AND ${end}::timestamptz
  AND sma.metric_name = ${metric_name}

في لوحة المعلومات أو معاينة البيانات، يجب تعيين السمات التالية لهذا الاستعلام المثال:

image-20240516-132037.png
  • البداية/النهاية: الطابع الزمني ISO 8601، على سبيل المثال 2024-05-01T00:00:00:00Z

  • اسم_المتري: اسم متري صالح ل StableNet® متري مثل وقت الرحلة ذهابًا وإيابًا

بدلاً من اسم_المقياس، جرب السمة metric_key في بند WHERE لتحديد مقياس معين إذا كان هناك أكثر من مقياس متاح

الجداول الخارجية

الاسم

الحقول

المؤهلات

stablenet_info

server_name TEXT
name TEXT
version TEXT
technical_version TEXT

stablenet_taggable

server_name TEXT
domain TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

domain TEXT (إلزامي)
id BIGINT
tag_filter TEXT

stablenet_taggable_device

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_interface

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_job

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_link

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_service

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_agent

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_tag_category

server_name TEXT
domain TEXT
id BIGINT
name TEXT
description TEXT

domain TEXT (إلزامية)
id BIGINT

stablenet_measurement

server_name TEXT
id BIGINT
name TEXT
description TEXT
categories JSONB
dest_device_id BIGINT
dest_interface_id BIGINT
agent_id BIGINT
start_time TIMESTAMPTZ
end_time TIMESTAMPTZ
state TEXT
type TEXT
template_name TEXT
permanent BOOL
payload JSONB
active BOOL
tag_filter TEXT

tag_filter TEXT
dest_device_id BIGINT

stablenet_measurement_metric

server_name TEXT
measurement_id BIGINT
data_id BIGINT
description TEXT
expected_interval INT
key TEXT
name TEXT
only_average BOOL
unit TEXT

measurement_id BIGINT

stablenet_measurement_data

server_name TEXT
measurement_id BIGINT
metric_key TEXT
metric_name TEXT
"start" TIMESTAMPTZ
"end" TIMESTAMPTZ
bucket_size INT (بالثواني)
"timestamp" TIMESTAMPTZ
min double precision
max double precision
avg double precision
tag_filter TEXT

measurement_id BIGINT
metric_key TEXT
"start" TIMESTAMPTZ (إلزامي)
"end" TIMESTAMPTZ (إلزامي)
bucket_size INT (إلزامي)
tag_filter TEXT

على الرغم من أن measurement_id و metric_key اختياريان، إلا أنه لا يوصى بتنفيذ الاستعلامات بدونهما. يؤدي القيام بذلك إلى قراءة بيانات القياس لجميع القياسات وجميع المقاييس التي قد تستغرق وقتًا طويلاً لقراءتها وتضع بعض الأحمال الثقيلة على خادم StableNet. يُنصح به فقط للنطاقات الزمنية القصيرة جدًا < 1 ساعة. إذا كانت هناك حاجة إلى قياسات ومقاييس متعددة، فيجب استخدام الجدول stablenet_measurement_data_aggregated.

بيانات القياس المجمعة

مجمعة حسب الساعة، ويتم تحديثها تلقائيًا كل ساعة. يمكن استخدامه لإجراء استعلامات تحليلية على نطاق واسع من القياسات وعلى نطاقات زمنية كبيرة.

هو في الأساس مقياس زمني مفرط(https://docs.timescale.com/ ). حجم القطع هو 7 أيام، ويتم ضغط القطع بعد 7 أيام.

الاسم

الحقول

stablenet_measurement_data_aggregated

server_name TEXT
measurement_id BIGINT
metric_key TEXT
metric_name TEXT
"timestamp" TIMESTAMPTZ NOT NULL
min double precision
max double precision
avg double precision

stablenet_measurement_data_aggregated يحتوي فقط على بيانات مفاتيح القياس المكوّنة.