Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Retourne l’élément de tableau à l’index spécifié. Cette fonction est utile pour analyser des tableaux et des objets imbriqués dans des données d’événement d’entrée au format JSON et AVRO. Pour plus d’exemples, consultez Analyse des données JSON et AVRO. Si vous devez retourner tous les éléments imbriqués dans un tableau, utilisez GetArrayElements à la place.
Syntaxe
GetArrayElement ( array_expression, bigint_expression )
Les arguments
array_expression
Expression de tableau à évaluer comme tableau source. array_expression peut être une colonne de type Array ou le résultat d’un autre appel de fonction.
bigint_expression
Expression bigint à évaluer en tant qu’index de tableau. Position ordinale dans le tableau d’éléments, commençant à 0.
Types de retour
Le type de retour est déterminé par le type d’élément de tableau et peut être l’un des types pris en charge.
Exemples
Exemple de données
[
{
"DeviceId" : "123",
"SensorReadings" :
{
"Temperature" : 80,
"Humidity" : 70,
"CustomSensor": [1,1,0]
}
},
{
"DeviceId" : "631",
"SensorReadings" :
{
"Temperature" : 81,
"Humidity" : 69,
"CustomSensor": [0,1,0]
}
}
]
L’exemple de jeu de données ci-dessus est un tableau de deux enregistrements. Lorsqu’elle est utilisée comme entrée locale dans un fichier JSON, le tableau de niveau supérieur est interprété pour la génération de lignes/événements par Azure Stream Analytics. Il n’est pas nécessaire de tenir compte de la syntaxe de la requête.
Au niveau de l’enregistrement individuel, il existe deux propriétés avec des types différents.
DeviceId est de type nvarchar(max), SensorReadings est d’enregistrement de type (objet).
GetType peut être utilisé pour déterminer le type si nécessaire.
SensorReadingsa trois propriétés : deux sont de type bigint : Temperature et HumidityCustomSensor est de type tableau de types (de bigint). Si ce tableau était plus complexe (lui-même contenant des enregistrements ou des tableaux), une combinaison de GetArrayElements (plural) et GetRecordPropertyValue peut être utilisée.
Requêtes
Cette requête retourne des champs à la racine de l’enregistrement (DeviceId), des champs imbriqués à l’aide de la notation par points (Temperature,Humidity), y compris un tableau (CustomSensor), et enfin, les premiers et deuxième éléments de ce tableau via GetArrayElement (index 0 et 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
Retourne la sortie suivante :
| DeviceId | Température | Humidité | CustomSensorArray | FirstCustomSensorValue | SecondCustomSensorValue |
|---|---|---|---|---|---|
| 631 | 81 | 69 | 0,1,0 | 0 | 1 |
| 123 | 80 | 70 | 1,1,0 | 1 | 1 |
Utilisez CROSS APPLY pour déployer le tableau :
SELECT
i.DeviceId,
CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
Retourne la sortie suivante :
| DeviceId | CustomerSensorValue |
|---|---|
| 631 | 0 |
| 631 | 1 |
| 631 | 0 |
| 123 | 0 |
| 123 | 1 |
| 123 | 1 |
À partir de là, vous pouvez agréger facilement le contenu si nécessaire :
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 |