Referensi bahasa kueri Azure Digital Twins: klausa SELECT

Dokumen ini berisi informasi referensi tentang klausul SELECT untuk bahasa kueri Azure Digital Twins.

Klausa SELECT adalah bagian pertama dari kueri. Ini menentukan daftar kolom yang akan dikembalikan oleh kueri.

Klausa ini diperlukan untuk semua kueri.

PILIH *

Gunakan karakter * dalam pernyataan pilih untuk memproyeksikan dokumen kembar digital apa adanya, tanpa menetapkannya ke properti di tataan hasil.

Catatan

SELECT * hanya sintaksis yang valid bila kueri tidak menggunakan JOIN. Untuk informasi selengkapnya tentang kueri yang menggunakan JOIN, lihat referensi bahasa kueri Azure Digital Twins: klausa JOIN.

Sintaks

SELECT *
--FROM ...

Mengembalikan

Kumpulan properti yang dikembalikan dari kueri.

Contoh

Kueri berikut mengembalikan semua kembar digital dalam instans.

SELECT *
FROM DIGITALTWINS

Kolom SELECT dengan proyeksi

Anda dapat menggunakan proyeksi dalam klausa SELECT untuk memilih kolom mana yang akan dikembalikan oleh kueri. Anda dapat menentukan koleksi bernama kembar dan hubungan, atau properti kembar dan hubungan.

Proyeksi sekarang didukung untuk properti primitif dan properti kompleks.

Sintaks

Untuk memproyeksikan koleksi:

SELECT <twin-or-relationship-collection>

Untuk memproyeksikan properti:

SELECT <twin-or-relationship-collection>.<property-name>

Mengembalikan

Kumpulan kembar, properti, atau hubungan yang ditentukan dalam proyeksi.

Jika properti yang disertakan dalam proyeksi tidak ada untuk baris data tertentu, properti tersebut juga tidak akan ada dalam tataan hasil. Untuk contoh perilaku ini, lihat Contoh properti proyek: Properti tidak ada untuk baris data.

Contoh

Contoh skenario

Untuk contoh berikut, perhatikan grafik kembar yang berisi elemen data berikut:

  • Kembar pabrik bernama FactoryA
    • Berisi properti bernama name dengan nilai FactoryA
  • Kembar konsumen bernama Contoso
    • Berisi properti bernama name dengan nilai Contoso
  • Hubungan consumerRelationship dari FactoryA ke Contoso, disebut FactoryA-consumerRelationship-Contoso
    • Berisi properti bernama managedBy dengan nilai Jeff

Berikut adalah diagram yang menggambarkan skenario ini:

Diagram yang menunjukkan contoh grafik yang dijelaskan di atas.

Contoh kumpulan proyek

Di bawah ini adalah contoh kueri yang memproyeksikan kumpulan dari grafik ini. Kueri berikut mengembalikan semua kembaran digital dalam instans, dengan menamai seluruh koleksi kembar T dan memproyeksikan T sebagai koleksi yang akan dikembalikan.

SELECT T
FROM DIGITALTWINS T

Berikut adalah payload JSON yang dikembalikan dari kueri ini:

{
  "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"
}

Proyek dengan contoh JOIN

Proyeksi biasanya digunakan untuk mengembalikan koleksi yang ditentukan dalam JOIN. Kueri berikut menggunakan proyeksi untuk mengembalikan data Konsumen, Pabrik, dan Hubungan. Untuk selengkapnya tentang JOIN sintaks yang digunakan dalam contoh, lihat referensi bahasa kueri Azure Digital Twins: klausa JOIN.

SELECT Consumer, Factory, Relationship
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'

Berikut adalah payload JSON yang dikembalikan dari kueri ini:

{
  "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"
}

Contoh properti proyek

Berikut adalah contoh yang memproyeksikan properti. Kueri berikut menggunakan proyeksi untuk mengembalikan properti name dari kembaran Konsumen, dan properti managedBy dari hubungan tersebut.

SELECT Consumer.name, Relationship.managedBy
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'

Berikut adalah payload JSON yang dikembalikan dari kueri ini:

{
  "value": [
    {
      "result": [
        {
          "managedBy": "Jeff",
          "name": "Contoso"
        }
      ]
    }
  ],
  "continuationToken": "null"
}

Contoh properti proyek: Properti tidak ada untuk baris data

Jika properti yang disertakan dalam proyeksi tidak ada untuk baris data tertentu, properti tersebut juga tidak akan ada dalam tataan hasil.

Pertimbangkan contoh ini satu set kembar yang mewakili orang. Beberapa dari kembaran memiliki usia yang terkait dengan mereka, tetapi yang lain tidak.

Berikut adalah kueri yang memproyeksikan properti name dan age:

SELECT name, age 
FROM DIGITALTWINS

Hasilnya mungkin terlihat seperti ini, dengan properti age hilang dari beberapa kembaran dalam hasil di mana si kembar tidak memiliki properti ini.

{
  "value": [
    {
      "result": [
        {
          "name": "John",
          "age": 27
        },
        {
          "name": "Keanu"
        }
      ]
    }
  ],
  "continuationToken": "null"
}

PILIH COUNT

Gunakan metode ini untuk menghitung jumlah item dalam kumpulan hasil dan mengembalikan angka tersebut.

Sintaks

SELECT COUNT()

Argumen

Tidak ada.

Mengembalikan

Sebuah nilai int.

Contoh

Kueri berikut mengembalikan jumlah semua kembar digital dalam instans.

SELECT COUNT()
FROM DIGITALTWINS

Kueri berikut mengembalikan jumlah semua hubungan dalam instans.

SELECT COUNT()
FROM RELATIONSHIPS

PILIH ATAS

Gunakan metode ini untuk mengembalikan hanya sejumlah item teratas yang memenuhi persyaratan kueri.

Sintaks

SELECT TOP(<number-of-return-items>)

Argumen

Nilai int yang menentukan jumlah item teratas untuk dipilih.

Mengembalikan

Koleksi anak kembar.

Contoh

Kueri berikut hanya mengembalikan lima kembar digital pertama dalam instans.

SELECT TOP(5)
FROM DIGITALTWINS