Aracılığıyla paylaş


GetArrayElement (Azure Stream Analytics)

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öz dizimi

GetArrayElement ( array_expression, bigint_expression )  

Bağımsız değişkenler

array_expression

Bir 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, üst düzey dizi Azure Stream Analytics tarafından satır/olay oluşturma için yorumlanır. Sorgu söz diziminde bunu dikkate almanız gerekmez.

Tek kayıt düzeyinde, farklı türlerde iki özellik vardır. DeviceId nvarchar(max) türünde, SensorReadingskayıt türündedir (nesne). 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.

Sorgular

Bu sorgu, bir diziCustomSensor ()DeviceId ve son olarak GetArrayElement aracılığıyla bu dizinin birinci ve ikinci öğeleri (dizin 0 ve 1) dahil olmak üzere nokta gösterimini (Temperature,Humidity) kullanarak iç içe yerleştirilmiş kayıtları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 oranı 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

Ayrıca bkz.