Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Returnerar matriselementet vid det angivna indexet. Den här funktionen är användbar för att parsa matriser och kapslade objekt i JSON- och AVRO-formaterade indatahändelsedata. Fler exempel finns i Parsa JSON- och AVRO-data. Om du behöver returnera alla kapslade element i en matris använder du GetArrayElements i stället.
Syntax
GetArrayElement ( array_expression, bigint_expression )  
Argumentpunkter
array_expression
Är matrisuttrycket som ska utvärderas som en källmatris. array_expression kan vara en kolumn av typen Matris eller resultatet av ett annat funktionsanrop.
bigint_expression
Är bigint-uttrycket som ska utvärderas som matrisindex. Ordningspositionen i matrisen med element, med början vid 0.
Returtyper
Returtypen bestäms av matriselementtypen och kan vara någon av de typer som stöds.
Exempel
Exempeldata
[
{
    "DeviceId" : "123",
    "SensorReadings" :
    {
        "Temperature" : 80,
        "Humidity" : 70,
        "CustomSensor": [1,1,0]
    }
},
{
    "DeviceId" : "631",
    "SensorReadings" :
    {
        "Temperature" : 81,
        "Humidity" : 69,
        "CustomSensor": [0,1,0]
    }
}
]
Exempeldatauppsättningen ovan är en matris med två poster. När den används som lokala indata i en JSON-fil tolkas matrisen på den översta nivån för generering av rader/händelser av Azure Stream Analytics. Du behöver inte ta hänsyn till det i frågesyntaxen.
På den enskilda postnivån finns det två egenskaper med olika typer. 
              DeviceId är av typen nvarchar(max), SensorReadings är av typen post (objekt). 
              GetType kan användas för att fastställa typen vid behov.
              SensorReadings har tre egenskaper: två är av typen bigint: Temperature och Humidity, och CustomSensor är av typen array (av bigint). Om den här matrisen var mer komplex (i sig innehåller poster eller matriser) kan en kombination av GetArrayElements (plural) och GetRecordPropertyValue användas.
Frågor
Den här frågan returnerar fält i postens rot (DeviceId), kapslade fält med hjälp av punkt notationen (Temperature,Humidity), inklusive en matris (CustomSensor), och slutligen det första och andra elementet i matrisen via GetArrayElement (index 0 och 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
Returnerar följande utdata:
| DeviceId | Temperatur | Fuktighet | CustomSensorArray | FirstCustomSensorValue | SecondCustomSensorValue | 
|---|---|---|---|---|---|
| 631 | 81 | 69 | 0,1,0 | 0 | 1 | 
| 123 | 80 | 70 | 1,1,0 | 1 | 1 | 
Använd CROSS APPLY för att utveckla matrisen:
SELECT   
    i.DeviceId,
    CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
Returnerar följande utdata:
| DeviceId | CustomerSensorValue | 
|---|---|
| 631 | 0 | 
| 631 | 1 | 
| 631 | 0 | 
| 123 | 0 | 
| 123 | 1 | 
| 123 | 1 | 
Därifrån kan du enkelt aggregera innehållet om det behövs:
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 |