Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
✅ Azure Stream Analytics ✅ Fabric Olay Akışı
Belirtilen dizindeki dizi öğesini döndürür. Bu işlev, JSON ve AVRO biçimli giriş olayı verilerinde dizileri ve iç içe nesneleri ayrıştırmada kullanışlıdır. Daha fazla örnek için bkz. JSON ve AVRO verilerini ayrıştırma. Dizideki tüm iç içe öğeleri döndürmeniz gerekiyorsa, bunun yerine GetArrayElements kullanın.
Sözdizimi
GetArrayElement ( array_expression, bigint_expression )
Tartışmalar
array_expression
Kaynak dizi olarak değerlendirilecek dizi ifadesidir. array_expression Dizi türünde bir sütun veya başka bir işlev çağrısının sonucu olabilir.
bigint_expression
Dizi dizini olarak değerlendirilecek bigint ifadesidir. 0'dan başlayarak öğe dizisindeki sıralı konum.
Dönüş Türleri
Dönüş türü, dizi öğesi türü tarafından belirlenir ve desteklenen türlerden herhangi biri olabilir.
Örnekler
Örnek veriler
[
{
"DeviceId" : "123",
"SensorReadings" :
{
"Temperature" : 80,
"Humidity" : 70,
"CustomSensor": [1,1,0]
}
},
{
"DeviceId" : "631",
"SensorReadings" :
{
"Temperature" : 81,
"Humidity" : 69,
"CustomSensor": [0,1,0]
}
}
]
Yukarıdaki örnek veri kümesi iki kayıt dizisidir. Bir JSON dosyasında yerel giriş olarak kullanıldığında, en üst düzey dizi Azure Stream Analytics tarafından satır/olay oluşturma işlemi için yorumlanır. Sorgu söz diziminde bunu dikkate almanıza gerek yoktur.
Tek tek kayıt düzeyinde, farklı türlerde iki özellik vardır.
DeviceId
nvarchar(max) türünde, SensorReadingskayıt (nesne) türündedir.
GetType , gerektiğinde türü belirlemek için kullanılabilir.
SensorReadings üç özelliğe sahiptir: ikisi bigint türündedir: Temperature ve Humidityve CustomSensor tür dizisidir ( bigint). Bu dizi daha karmaşıksa (kayıtları veya dizileri içeren kendisi), GetArrayElements (çoğul) ve GetRecordPropertyValue birleşimi kullanılabilir.
Sorular
Bu sorgu, bir dizi ()DeviceId ve son olarak GetArrayElement (Temperaturedizin 0 ve 1) aracılığıyla bu dizinin ilk ve ikinci öğelerini içeren nokta gösteriminiCustomSensor (,Humidity) kullanarak iç içe yerleştirilmiş alanları ( kaydın kökündeki) alanları döndürür:
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
Aşağıdaki çıkışı döndürür:
| DeviceId | Sıcaklık | Nem | CustomSensorArray | FirstCustomSensorValue | SecondCustomSensorValue |
|---|---|---|---|---|---|
| 631 | 81 | 69 | 0,1,0 | 0 | 1 |
| 123 | 80 | 70 | 1,1,0 | 1 | 1 |
Diziyi açmak için CROSS APPLY kullanın:
SELECT
i.DeviceId,
CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
Aşağıdaki çıkışı döndürür:
| DeviceId | CustomerSensorValue |
|---|---|
| 631 | 0 |
| 631 | 1 |
| 631 | 0 |
| 123 | 0 |
| 123 | 1 |
| 123 | 1 |
Buradan, gerekirse içeriği kolayca toplayabilirsiniz:
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 |