Referenz zur Azure Digital Twins-Abfragesprache: SELECT-Klausel
Dieses Dokument enthält Referenzinformationen zur SELECT-Klausel für die Azure Digital Twins-Abfragesprache.
Die SELECT-Klausel ist der erste Teil einer Abfrage. Sie gibt die Liste der Spalten an, die von der Abfrage zurückgegeben wird.
Diese Klausel ist für alle Abfragen erforderlich.
SELECT *
Verwenden Sie das Zeichen *
in einer SELECT-Anweisung, um das digitale Zwillingsdokument so zu projizieren, wie es ist, ohne es einer Eigenschaft im Resultset zuzuweisen.
Hinweis
SELECT *
ist nur gültige Syntax, wenn die Abfrage kein JOIN
-Element verwendet. Weitere Informationen zu Abfragen mit JOIN
finden Sie unter Referenz zur Azure Digital Twins-Abfragesprache: JOIN-Klausel.
Syntax
SELECT *
--FROM ...
Rückgabe
Die von der Abfrage zurückgegebenen Eigenschaften.
Beispiel
Die folgende Abfrage gibt alle digitalen Zwillinge in der Instanz zurück.
SELECT *
FROM DIGITALTWINS
SELECT-Spalten mit Projektionen
Sie können Projektionen in der SELECT-Klausel verwenden, um auszuwählen, welche Spalten eine Abfrage zurückgibt. Sie können benannte Sammlungen von Zwillingen und Beziehungen oder Eigenschaften von Zwillingen und Beziehungen angeben.
Projektion wird jetzt sowohl für primitive als auch für komplexe Eigenschaften unterstützt.
Syntax
So projizieren Sie eine Sammlung:
SELECT <twin-or-relationship-collection>
So projizieren Sie eine Eigenschaft:
SELECT <twin-or-relationship-collection>.<property-name>
Rückgabe
Eine Sammlung von Zwillingen, Eigenschaften oder Beziehungen, die in der Projektion angegeben wird.
Wenn eine in der Projektion enthaltene Eigenschaft für eine bestimmte Datenzeile nicht vorhanden ist, ist die Eigenschaft nicht im Resultset vorhanden. Ein Beispiel für dieses Verhalten finden Sie unter Beispiel für das Projizieren einer Eigenschaft: Eigenschaft für Datenzeile nicht vorhanden.
Beispiele
Beispielszenario
Nehmen Sie für die folgenden Beispiele ein Zwillingsdiagramm an, das die folgenden Datenelemente enthält:
- Einen Factoryzwilling namens „FactoryA“
- Enthält eine Eigenschaft namens
name
mit dem WertFactoryA
- Enthält eine Eigenschaft namens
- Einen Consumerzwilling namens „Contoso“
- Enthält eine Eigenschaft namens
name
mit dem WertContoso
- Enthält eine Eigenschaft namens
- Eine consumerRelationship-Beziehung von FactoryA zu Contoso mit dem Namen
FactoryA-consumerRelationship-Contoso
- Enthält eine Eigenschaft namens
managedBy
mit dem WertJeff
- Enthält eine Eigenschaft namens
Diese Abbildung veranschaulicht dieses Szenario:
Beispiel für das Projizieren einer Sammlung
Im Folgenden finden Sie eine Beispielabfrage, mit der eine Sammlung aus diesem Diagramm projiziert wird. Die folgende Abfrage gibt alle digitalen Zwillinge in der Instanz zurück, indem die gesamte Zwillingssammlung T
genannt und T
als zurückzugebende Sammlung projiziert wird.
SELECT T
FROM DIGITALTWINS T
Von dieser Abfrage werden die folgenden JSON-Nutzdaten zurückgegeben:
{
"value": [
{
"result": [
{
"T": {
"$dtId": "FactoryA",
"$etag": "W/\"d22267a0-fd4f-4f6b-916d-4946a30453c9\"",
"$metadata": {
"$model": "dtmi:contosocom:DigitalTwins:Factory;1",
"name": {
"lastUpdateTime": "2021-04-19T17:15:54.4977151Z"
}
},
"name": "FactoryA"
}
},
{
"T": {
"$dtId": "Contoso",
"$etag": "W/\"a96dc85e-56ae-4061-866b-058a149e03d8\"",
"$metadata": {
"$model": "dtmi:com:contoso:Consumer;1",
"name": {
"lastUpdateTime": "2021-04-19T17:16:30.2154166Z"
}
},
"name": "Contoso"
}
}
]
}
],
"continuationToken": "null"
}
Beispiel für das Projizieren mit JOIN
Projektion wird häufig verwendet, um eine in einem JOIN
angegebene Sammlung zurückzugeben. Bei der folgenden Abfrage wird eine Projektion verwendet, um die Daten des Consumers, der Factory und der Beziehung zurückzugeben. Weitere Informationen zur im Beispiel verwendeten JOIN
-Syntax finden Sie unter Referenz zur Azure Digital Twins-Abfragesprache: JOIN-Klausel.
SELECT Consumer, Factory, Relationship
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
Von dieser Abfrage werden die folgenden JSON-Nutzdaten zurückgegeben:
{
"value": [
{
"result": [
{
"Consumer": {
"$dtId": "Contoso",
"$etag": "W/\"a96dc85e-56ae-4061-866b-058a149e03d8\"",
"$metadata": {
"$model": "dtmi:com:contoso:Consumer;1",
"name": {
"lastUpdateTime": "2021-04-19T17:16:30.2154166Z"
}
},
"name": "Contoso"
},
"Factory": {
"$dtId": "FactoryA",
"$etag": "W/\"d22267a0-fd4f-4f6b-916d-4946a30453c9\"",
"$metadata": {
"$model": "dtmi:contosocom:DigitalTwins:Factory;1",
"name": {
"lastUpdateTime": "2021-04-19T17:15:54.4977151Z"
}
},
"name": "FactoryA"
},
"Relationship": {
"$etag": "W/\"f01e07c1-19e4-4bbe-a12d-f5761e86d3e8\"",
"$relationshipId": "FactoryA-consumerRelationship-Contoso",
"$relationshipName": "consumerRelationship",
"$sourceId": "FactoryA",
"$targetId": "Contoso",
"managedBy": "Jeff"
}
}
]
}
],
"continuationToken": "null"
}
Beispiel für das Projizieren mit einer Eigenschaft
In diesem Beispiel wird eine Eigenschaft projiziert. Die folgende Abfrage verwendet Projektion, um die name
-Eigenschaft des Consumerzwillings und die managedBy
-Eigenschaft der Beziehung zurückzugeben.
SELECT Consumer.name, Relationship.managedBy
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
Von dieser Abfrage werden die folgenden JSON-Nutzdaten zurückgegeben:
{
"value": [
{
"result": [
{
"managedBy": "Jeff",
"name": "Contoso"
}
]
}
],
"continuationToken": "null"
}
Beispiel für das Projizieren einer Eigenschaft: Eigenschaft für eine Datenzeile nicht vorhanden
Wenn eine in der Projektion enthaltene Eigenschaft für eine bestimmte Datenzeile nicht vorhanden ist, ist die Eigenschaft nicht im Resultset vorhanden.
Nehmen Sie für dieses Beispiel eine Gruppe von Zwillingen an, die Personen darstellen. Einigen Zwillingen ist ein Alter zugeordnet, anderen nicht.
In der folgenden Abfrage werden die Eigenschaften name
und age
projiziert:
SELECT name, age
FROM DIGITALTWINS
Das Ergebnis könnte in etwa wie folgt aussehen, wobei die Eigenschaft age
für einige Zwillinge im Ergebnis fehlt, da die betreffenden Zwillinge nicht über diese Eigenschaft verfügen.
{
"value": [
{
"result": [
{
"name": "John",
"age": 27
},
{
"name": "Keanu"
}
]
}
],
"continuationToken": "null"
}
SELECT COUNT
Verwenden Sie diese Methode, um die Anzahl der Elemente im Resultset zu zählen und diese Zahl zurückzugeben.
Syntax
SELECT COUNT()
Argumente
Keine.
Gibt zurück
Ein int
-Wert.
Beispiel
Die folgende Abfrage gibt die Anzahl aller digitalen Zwillinge in der Instanz zurück.
SELECT COUNT()
FROM DIGITALTWINS
Die folgende Abfrage gibt die Anzahl aller Beziehungen in der Instanz zurück.
SELECT COUNT()
FROM RELATIONSHIPS
SELECT TOP
Verwenden Sie diese Methode, um nur einige der wichtigsten Elemente zurückzugeben, die die Abfrageanforderungen erfüllen.
Syntax
SELECT TOP(<number-of-return-items>)
Argumente
Ein int
-Wert, der die Anzahl der wichtigsten Elemente angibt, die ausgewählt werden sollen.
Gibt zurück
Eine Sammlung von Zwillingen.
Beispiel
Die folgende Abfrage gibt nur die ersten fünf digitalen Zwillinge in der Instanz zurück.
SELECT TOP(5)
FROM DIGITALTWINS