Share via


Azure Digital Twins sorgu dili başvurusu: JOIN yan tümcesi

Bu belge, Azure Digital Twins sorgu dili için JOIN yan tümcesinde başvuru bilgilerini içerir.

Yan JOIN tümcesi, Azure Digital Twins grafını sorgulamak istediğinizde FROM yan tümcesinin bir parçası olarak Azure Digital Twins sorgu dilinde kullanılır.

Sorgu sırasında bu yan tümce isteğe bağlıdır.

Azure Digital Twins'deki ilişkiler bağımsız varlıkların değil dijital ikizlerin bir parçası olduğundan anahtar sözcük, RELATED ikiz koleksiyonundan belirli bir türdeki ilişki kümesine başvurmak için sorgularda JOIN kullanılır (tür, DTDL tanımındaki ilişkinin name alanı kullanılarak belirtilir). İlişki kümesine sorgu içinde bir koleksiyon adı atanabilir.

Sorgunun daha sonra ilişki sorgusunu WHERE desteklemek için hangi ikizin veya ikizlerin kullanıldığını belirtmek için yan tümcesini kullanması gerekir. Bu $dtId işlem kaynak veya hedef ikizin değerine göre filtrelenerek gerçekleştirilir.

Syntax

--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>'

Örnek

Aşağıdaki sorgu, bir ilişki aracılığıyla contains kimliğine ABC sahip ikizle ilişkili tüm dijital ikizleri seçer.

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

Birden çok JOIN

Aynı anda birden çok ilişki düzeyinin çapraz geçişini sağlayan tek bir sorguda en fazla beş JOINsorgu desteklenir.

Syntax

--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>

Örnek

Aşağıdaki sorgu LightPanel içeren Odaları temel alır ve her LightPanel birkaç Ampul içerir. Sorgu, 1 ve 2. odaların LightPanel'lerinde bulunan tüm Ampulleri alır.

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

Sınırlamalar

Aşağıdaki sınırlar kullanan JOINsorgular için geçerlidir.

Daha fazla bilgi için aşağıdaki bölümlere bakın.

Beş derinlik sınırı

Graf dolaşma derinliği sorgu başına beş JOIN düzeyle sınırlıdır.

Örnek

Aşağıdaki sorgu, Bir Azure Digital Twins sorgusunda mümkün olan en fazla yan tümce sayısını JOIN gösterir. Bina1'deki tüm Ampulleri alıyor.

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 semantiği yok

OUTER JOIN semantik desteklenmez; yani ilişki sıfır derecesine sahipse, "satırın" tamamı çıkış sonuç kümesinden çıkarılır.

Örnek

Bir bina geçişi gösteren aşağıdaki sorguyu göz önünde bulundurun.

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

Bina1'de kat yoksa, bu sorgu boş bir sonuç kümesi döndürür (Bina ve undefined Kat için değeri olan bir satır döndürmek yerine).

İkizler gerekli

Azure Digital Twins'deki ilişkiler bağımsız varlıklar olarak sorgulanamaz; ayrıca ilişkinin geldiği kaynak ikiz hakkında da bilgi sağlamanız gerekir. Bu işlev, anahtar sözcüğü aracılığıyla Azure Digital Twins'deki varsayılan JOIN kullanımın RELATED bir parçası olarak dahil edilir.

Yan tümcesi olan JOIN sorgular, ilişki sorgusunu desteklemek için hangi ikizlerin kullanıldığını netleştirmek için yan tümcedeki WHERE herhangi bir ikizin $dtId özelliğine göre de filtrelenmelidir.