Azure Digital Twins クエリ言語リファレンス: SELECT 句
このドキュメントには、Azure Digital Twins クエリ言語の SELECT 句に関するリファレンス情報が含まれています。
SELECT 句は、クエリの最初の部分です。 これにより、クエリによって返される列の一覧を指定します。
この句は、すべてのクエリで必要になります。
SELECT *
*
文字を select ステートメントで使用すると、デジタル ツイン ドキュメントはそのまま射影され、結果セットのプロパティには割り当てられません。
Note
SELECT *
は、クエリで JOIN
を使用しない場合にのみ有効な構文です。
JOIN
を使用したクエリの詳細については、「Azure Digital Twins クエリ言語リファレンス: JOIN 句」を参照してください。
構文
SELECT *
--FROM ...
戻り値
クエリから返されるプロパティのセット。
例
次のクエリでは、インスタンス内のすべてのデジタル ツインが返されます。
SELECT *
FROM DIGITALTWINS
プロジェクションを使用した SELECT 列
プロジェクションを SELECT 句で使用して、クエリによって返される列を選択できます。 ツインとリレーションシップの名前指定コレクション、またはツインとリレーションシップのプロパティを指定できます。
プロジェクションは、プリミティブ プロパティと複合プロパティの両方でサポートされるようになりました。
構文
コレクションを射影するには:
SELECT <twin-or-relationship-collection>
プロパティを射影するには:
SELECT <twin-or-relationship-collection>.<property-name>
戻り値
プロジェクションで指定されたツイン、プロパティ、またはリレーションシップのコレクション。
プロジェクションに含まれるプロパティが特定のデータ行に存在しない場合、このプロパティは結果セットにも同様に存在しません。 この動作の例については、「プロパティを射影する例: データ行のプロパティが存在しない場合」を参照してください。
例
シナリオ例
次の例では、次のデータ要素を含むツイン グラフについて考えてみましょう。
- FactoryA と呼ばれるファクトリ ツイン
-
FactoryA
の値を持つname
というプロパティが含まれています
-
- Contoso と呼ばれるコンシューマー ツイン
-
Contoso
の値を持つname
というプロパティが含まれています
-
-
FactoryA-consumerRelationship-Contoso
と呼ばれる、FactoryA から Contoso への consumerRelationship リレーションシップ-
Jeff
の値を持つmanagedBy
というプロパティが含まれています
-
次の図にこのシナリオを示します。
コレクションを射影する例
このグラフからコレクションを射影するクエリの例を下に示します。 次のクエリでは、ツイン コレクション全体に T
の名前を付け、返すコレクションとして T
を射影することで、インスタンス内のすべてのデジタル ツインが返されます。
SELECT T
FROM DIGITALTWINS T
このクエリから返される JSON ペイロードを次に示します。
{
"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"
}
JOIN を使用して射影する例
プロジェクションは通常、JOIN
で指定されたコレクションを返すために使用されます。 次のクエリでは、プロジェクションを使用してコンシューマー、ファクトリ、リレーションシップのデータが返されます。 この例で使用されている JOIN
構文の詳細については、「Azure Digital Twins クエリ言語リファレンス: JOIN 句」を参照してください。
SELECT Consumer, Factory, Relationship
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
このクエリから返される JSON ペイロードを次に示します。
{
"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"
}
プロパティを射影する例
プロパティを射影する例を次に示します。 次のクエリでは、プロジェクションを使用して、コンシューマー ツインの name
プロパティとリレーションシップの managedBy
プロパティが返されます。
SELECT Consumer.name, Relationship.managedBy
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
このクエリから返される JSON ペイロードを次に示します。
{
"value": [
{
"result": [
{
"managedBy": "Jeff",
"name": "Contoso"
}
]
}
],
"continuationToken": "null"
}
プロパティを射影する例: データ行のプロパティが存在しない場合
プロジェクションに含まれるプロパティが特定のデータ行に存在しない場合、このプロパティは結果セットにも同様に存在しません。
この例では、人物を表すツインのセットを考えましょう。 ツインの中には年齢が関連付けられているものがありますが、そうでないものもあります。
name
と age
の各プロパティを射影するクエリを次に示します。
SELECT name, age
FROM DIGITALTWINS
結果は次のようになります。結果の中で、一部のツインに age
プロパティがありませんが、そのツインにはこのプロパティは存在しません。
{
"value": [
{
"result": [
{
"name": "John",
"age": 27
},
{
"name": "Keanu"
}
]
}
],
"continuationToken": "null"
}
SELECT COUNT
このメソッドを使用すると、結果セット内の項目の数をカウントし、その数を返すことができます。
構文
SELECT COUNT()
引数
[なし] :
戻り値
int
値。
例
次のクエリは、インスタンス内のすべてのデジタル ツインの数を返します。
SELECT COUNT()
FROM DIGITALTWINS
次のクエリは、インスタンス内のすべてのリレーションシップの数を返します。
SELECT COUNT()
FROM RELATIONSHIPS
SELECT TOP
このメソッドを使用すると、クエリの要件を満たす一部の上位項目だけを返すことができます。
構文
SELECT TOP(<number-of-return-items>)
引数
選択する上位項目の数を指定する int
値。
戻り値
ツインのコレクション。
例
次のクエリでは、インスタンス内の上位 5 個のデジタル ツインのみが返されます。
SELECT TOP(5)
FROM DIGITALTWINS