Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Mengembalikan elemen array pada indeks yang ditentukan. Fungsi ini berguna untuk mengurai array dan objek berlapis dalam data peristiwa input berformat JSON dan AVRO. Untuk contoh selengkapnya, lihat Mengurai data JSON dan AVRO. Jika Anda perlu mengembalikan semua elemen berlapis dalam array, gunakan GetArrayElements sebagai gantinya.
Sintaksis
GetArrayElement ( array_expression, bigint_expression )
Argumen
array_expression
Adalah ekspresi array yang akan dievaluasi sebagai array sumber. array_expression bisa berupa kolom jenis Array atau hasil panggilan fungsi lain.
bigint_expression
Adalah ekspresi bigint yang akan dievaluasi sebagai indeks array. Posisi ordinal dalam array elemen, mulai dari 0.
Jenis Kembalian
Jenis pengembalian ditentukan oleh jenis elemen array dan dapat berupa salah satu jenis yang didukung.
Contoh
Data contoh
[
{
"DeviceId" : "123",
"SensorReadings" :
{
"Temperature" : 80,
"Humidity" : 70,
"CustomSensor": [1,1,0]
}
},
{
"DeviceId" : "631",
"SensorReadings" :
{
"Temperature" : 81,
"Humidity" : 69,
"CustomSensor": [0,1,0]
}
}
]
Himpunan data sampel di atas adalah array dari dua rekaman. Saat digunakan sebagai input lokal dalam file JSON, array tingkat atas ditafsirkan untuk pembuatan baris/peristiwa oleh Azure Stream Analytics. Tidak perlu mempertimbangkannya dalam sintaks kueri.
Pada tingkat catatan individual, ada dua properti dengan jenis yang berbeda.
DeviceId berjenis nvarchar(max), SensorReadings adalah jenis rekaman (objek).
GetType dapat digunakan untuk menentukan jenis bila perlu.
SensorReadings memiliki tiga properti: dua adalah jenis bigint: Temperature dan Humidity, dan CustomSensor berjenis array (dari bigint). Jika array ini lebih kompleks (sendiri berisi rekaman atau array), kombinasi GetArrayElements (plural) dan GetRecordPropertyValue dapat digunakan.
Pertanyaan
Kueri ini mengembalikan bidang di akar rekaman (DeviceId), bidang berlapis menggunakan notasi titik (Temperature,Humidity), termasuk array (CustomSensor), dan akhirnya, elemen pertama dan kedua dari array tersebut melalui GetArrayElement (indeks 0 dan 1):
SELECT
i.DeviceId,
i.SensorReadings.Temperature,
i.SensorReadings.Humidity,
i.SensorReadings.CustomSensor as CustomSensorArray,
GetArrayElement(i.SensorReadings.CustomSensor,0) AS FirstCustomSensorValue,
GetArrayElement(i.SensorReadings.CustomSensor,1) AS SecondCustomSensorValue
FROM input i
Mengembalikan output berikut:
| DeviceId | Suhu | Kelembaban | CustomSensorArray | FirstCustomSensorValue | SecondCustomSensorValue |
|---|---|---|---|---|---|
| 631 | 81 (delapan puluh satu) | 69 | 0,1,0 | 0 | 1 |
| 123 | 80 | 70 | 1,1,0 | 1 | 1 |
Gunakan CROSS APPLY untuk membuka array:
SELECT
i.DeviceId,
CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
Mengembalikan output berikut:
| DeviceId | CustomerSensorValue |
|---|---|
| 631 | 0 |
| 631 | 1 |
| 631 | 0 |
| 123 | 0 |
| 123 | 1 |
| 123 | 1 |
Dari sana, Anda dapat dengan mudah mengagregasi konten jika perlu:
SELECT
i.DeviceId,
SUM(CustomerSensorValue.ArrayValue) AS CustomerSensorTotal
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
GROUP BY i.DeviceId, TumblingWindow(minute, 1)
| DeviceId | CustomerSensorTotal |
|---|---|
| 123 | 2 |
| 631 | 1 |