Megosztás a következőn keresztül:


GetArrayElement (Azure Stream Analytics)

A megadott index tömbelemét adja vissza. Ez a függvény tömbök és beágyazott objektumok JSON- és AVRO formátumú bemeneti eseményadatokban való elemzéséhez hasznos. További példákért lásd: JSON- és AVRO-adatok elemzése. Ha egy tömb összes beágyazott elemét vissza kell adnia, használja helyette a GetArrayElements parancsot .

Szintaxis

GetArrayElement ( array_expression, bigint_expression )  

Argumentumok

array_expression

Forrástömbként értékelendő tömbkifejezés? array_expression lehet Tömb típusú oszlop vagy egy másik függvényhívás eredménye.

bigint_expression

Tömbindexként értékelendő bigint kifejezés? Az elemek tömbjének sorszáma 0-tól kezdve.

Visszatérési típusok

A visszatérési típust a tömbelem típusa határozza meg, és bármelyik támogatott típus lehet.

Példák

Mintaadatok

[
{
    "DeviceId" : "123",
    "SensorReadings" :
    {
        "Temperature" : 80,
        "Humidity" : 70,
        "CustomSensor": [1,1,0]
    }
},
{
    "DeviceId" : "631",
    "SensorReadings" :
    {
        "Temperature" : 81,
        "Humidity" : 69,
        "CustomSensor": [0,1,0]
    }
}
]

A fenti mintaadatkészlet két rekordból álló tömb. Ha helyi bemenetként használják egy JSON-fájlban, a legfelső szintű tömböt az Azure Stream Analytics sorok/események generálására értelmezi. Ezt nem kell figyelembe venni a lekérdezés szintaxisában.

Az egyes rekordok szintjén két különböző típusú tulajdonság létezik. DeviceId típusú nvarchar(max), SensorReadingsrekord típusú (objektum). A GetType segítségével szükség esetén meghatározható a típus.

SensorReadingshárom tulajdonsága van: kettő bigint típusú: Temperature és Humidity, ésCustomSensor tömb típusú (bigint). Ha ez a tömb összetettebb volt (maga is rekordokat vagy tömböket tartalmaz), a GetArrayElements (többes szám) és a GetRecordPropertyValue kombinációját használhatja.

Lekérdezések

Ez a lekérdezés visszaadja a rekord gyökerében lévő mezőket (DeviceId), a beágyazott mezőket a pont jelöléssel (Temperature,Humidity), beleértve egy tömböt (CustomSensor), végül pedig a tömb első és második elemét a GetArrayElement használatával (0 és 1 index):

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 következő kimenetet adja vissza:

DeviceId Hőmérséklet Páratartalom CustomSensorArray FirstCustomSensorValue SecondCustomSensorValue
631 81 69 0,1,0 0 1
123 80 70 1,1,0 1 1

A tömb kibontásához használja a CROSS APPLY et:

SELECT   
    i.DeviceId,
    CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue

A következő kimenetet adja vissza:

DeviceId CustomerSensorValue
631 0
631 1
631 0
123 0
123 1
123 1

Innen egyszerűen összesítheti a tartalmat, ha szükséges:

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

Lásd még