Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Retourneert het matrixelement op de opgegeven index. Deze functie is handig voor het parseren van matrices en geneste objecten in JSON- en AVRO-indeling voor invoergebeurtenisgegevens. Zie JSON- en AVRO-gegevens parseren voor meer voorbeelden. Als u alle geneste elementen in een matrix wilt retourneren, gebruikt u In plaats daarvan GetArrayElements .
Syntaxis
GetArrayElement ( array_expression, bigint_expression )
Argumenten
array_expression
Moet de matrixexpressie worden geëvalueerd als een bronmatrix. array_expression kan een kolom van het type Matrix of het resultaat van een andere functie-aanroep zijn.
bigint_expression
Wordt de bigint-expressie geëvalueerd als matrixindex. De rangtelpositie in de matrix met elementen, beginnend bij 0.
Retourtypen
Het retourtype wordt bepaald door het type matrixelement en kan een van de ondersteunde typen zijn.
Voorbeelden
Voorbeeldgegevens
[
{
"DeviceId" : "123",
"SensorReadings" :
{
"Temperature" : 80,
"Humidity" : 70,
"CustomSensor": [1,1,0]
}
},
{
"DeviceId" : "631",
"SensorReadings" :
{
"Temperature" : 81,
"Humidity" : 69,
"CustomSensor": [0,1,0]
}
}
]
De bovenstaande voorbeeldgegevensset is een matrix van twee records. Wanneer deze wordt gebruikt als lokale invoer in een JSON-bestand, wordt de matrix op het hoogste niveau geïnterpreteerd voor het genereren van rijen/gebeurtenissen door Azure Stream Analytics. Er hoeft geen rekening mee te worden gehouden in de querysyntaxis.
Op recordniveau zijn er twee eigenschappen met verschillende typen.
DeviceId is van het type nvarchar(max), SensorReadings is van het type record (object).
GetType kan worden gebruikt om het type te bepalen wanneer dat nodig is.
SensorReadings heeft drie eigenschappen: twee zijn van het type bigint: Temperature en Humidity, en CustomSensor is van het type matrix (van bigint). Als deze matrix complexer was (zelf met records of matrices), kan een combinatie van GetArrayElements (meervoud) en GetRecordPropertyValue worden gebruikt.
Opvragen
Deze query retourneert velden in de hoofdmap van de record (DeviceId), geneste velden met behulp van de punt notatie (Temperature,Humidity), inclusief een matrix (CustomSensor) en ten slotte de eerste en tweede elementen van die matrix via GetArrayElement (index 0 en 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
Retourneert de volgende uitvoer:
| DeviceId | Temperatuur | Vochtigheid | CustomSensorArray | FirstCustomSensorValue | SecondCustomSensorValue |
|---|---|---|---|---|---|
| 631 | 81 | 69 | 0,1,0 | 0 | 1 |
| 123 | 80 | 70 | 1,1,0 | 1 | 1 |
Gebruik CROSS APPLY om de matrix uit te vouwen:
SELECT
i.DeviceId,
CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
Retourneert de volgende uitvoer:
| DeviceId | CustomerSensorValue |
|---|---|
| 631 | 0 |
| 631 | 1 |
| 631 | 0 |
| 123 | 0 |
| 123 | 1 |
| 123 | 1 |
Van daaruit kunt u de inhoud eenvoudig aggregeren indien nodig:
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 |