مشاركة عبر


مرجع لغة استعلام Azure Digital Twins: عبارة JOIN

يحتوي هذا المستند على معلومات مرجعية حول عبارة JOIN للغة استعلام Azure Digital Twins.

JOIN يتم استخدام العبارة في لغة استعلام Azure Digital Twins كجزء من عبارة FROM عندما تريد الاستعلام لاجتياز الرسم البياني Azure Digital Twins.

هذه العبارة اختيارية أثناء الاستعلام.

نظرا لأن العلاقات في Azure Digital Twins هي جزء من التوائم الرقمية، وليست كيانات مستقلة، RELATED يتم استخدام الكلمة الأساسية في JOIN الاستعلامات للإشارة إلى مجموعة العلاقات من نوع معين من مجموعة التوأم (يتم تحديد النوع باستخدام حقل العلاقة name من تعريف DTDL الخاص به). يمكن تعيين اسم مجموعة ضمن الاستعلام لمجموعة العلاقات.

يجب أن يستخدم الاستعلام بعد ذلك العبارة WHERE لتحديد التوأم أو التوأم المحدد الذي يتم استخدامه لدعم استعلام العلاقة، والذي يتم عن طريق التصفية على قيمة التوأم $dtId المصدر أو الهدف.

بناء الجملة

--SELECT ...
FROM DIGITALTWINS <twin-collection-name>
JOIN <target-twin-collection-name> RELATED <twin-collection-name>.<relationship-name> <OPTIONAL: relationship-collection-name>
WHERE <twin-collection-name-OR-target-twin-collection-name>.$dtId = '<twin-id>'

مثال

يحدد الاستعلام التالي جميع التوائم الرقمية المرتبطة بالتوأم بمعرف من ABC خلال contains علاقة.

SELECT T, CT
FROM DIGITALTWINS T
JOIN CT RELATED T.contains
WHERE T.$dtId = 'ABC'

أسماء JOIN متعددة

يتم دعم ما يصل إلى خمسة JOINs في استعلام واحد، والذي يسمح باجتياز مستويات متعددة من العلاقات في وقت واحد.

بناء الجملة

--SELECT ...
FROM DIGITALTWINS <twin-collection-name>
JOIN <relationship-collection-name-1> RELATED <twin-collection-name>.<relationship-type-1>
JOIN <relationship-collection-name-2> RELATED <twin-or-relationship-collection-name>.<relationship-type-2>

مثال

يستند الاستعلام التالي إلى الغرف التي تحتوي على LightPanels، ويحتوي كل LightPanel على العديد من LightBulbs. يحصل الاستعلام على جميع LightBulbs الموجودة في LightPanels للغرف 1 و2.

SELECT LightBulb
FROM DIGITALTWINS Room
JOIN LightPanel RELATED Room.contains
JOIN LightBulb RELATED LightPanel.contains
WHERE Room.$dtId IN ['room1', 'room2']

القيود

تنطبق الحدود التالية على الاستعلامات باستخدام JOIN.

لمزيد من المعلومات، راجع الأقسام التالية.

حد العمق خمسة

يقتصر عمق اجتياز الرسم البياني على خمسة JOIN مستويات لكل استعلام.

مثال

يوضح الاستعلام التالي الحد الأقصى لعدد JOIN العبارات الممكنة في استعلام Azure Digital Twins. يحصل على جميع المصابيح في المبنى 1.

SELECT LightBulb
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
JOIN Room RELATED Floor.contains
JOIN LightPanel RELATED Room.contains
JOIN LightBulbRow RELATED LightPanel.contains
JOIN LightBulb RELATED LightBulbRow.contains
WHERE Building.$dtId = 'Building1'

لا توجد دلالات OUTER JOIN

OUTER JOIN الدلالات غير مدعومة، مما يعني أنه إذا كانت العلاقة لها مرتبة صفر، التخلص من "الصف" بأكمله من مجموعة نتائج الإخراج.

مثال

ضع في اعتبارك الاستعلام التالي الذي يوضح اجتياز مبنى.

SELECT Building, Floor
FROM DIGITALTWINS Building
JOIN Floor RELATED Building.contains
WHERE Building.$dtId = 'Building1'

إذا لم يحتوي Building1 على طوابق، فسيرجع هذا الاستعلام مجموعة نتائج فارغة (بدلا من إرجاع صف واحد بقيمة المبنى والطابق undefined ).

التوائم المطلوبة

لا يمكن الاستعلام عن العلاقات في Azure Digital Twins ككيانات مستقلة؛ تحتاج أيضًا إلى تقديم معلومات حول التوأم المصدر الذي تأتي منه العلاقة. يتم تضمين هذه الوظيفة كجزء من الاستخدام الافتراضي JOIN في Azure Digital Twins من خلال RELATED الكلمة الأساسية .

يجب أيضا تصفية الاستعلامات ذات العبارة JOIN حسب خاصية أي توأم $dtId في WHERE عبارة ، لتوضيح التوأم (التوأم) الذي يتم استخدامه لدعم استعلام العلاقة.