Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
✅ Azure Stream Analytics ✅ Fabric Eventstream
A megadott index tömbelemét adja vissza. Ez a függvény hasznos tömbök és beágyazott objektumok JSON- és AVRO formátumú bemeneti eseményadatokban való elemzéséhez. 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 .
Szemantika
GetArrayElement ( array_expression, bigint_expression )
Érvek
array_expression
A tömbkifejezést forrástömbként kell kiértékelni. array_expression lehet tömb típusú oszlop, vagy egy másik függvényhívás eredménye.
bigint_expression
Az a bigint kifejezés, amelyet tömbindexként kell kiértékelni. 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 a 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
nvarchar(max) típusú, SensorReadingstípusrekord (objektum).
A GetType segítségével szükség esetén meghatározhatja a típust.
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ó használható.
Lekérdezések
Ez a lekérdezés a rekord gyökerében lévő mezőket (DeviceId), a pontjellel (Temperature,) beágyazott mezőket adja vissza,Humidity beleértve egy tömböt (CustomSensor), és végül a tömb első és második elemét a GetArrayElementen keresztül (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 |