Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
✅ Strumień zdarzeń usługi Azure Stream Analytics ✅ Fabric
Zwraca element tablicy w określonym indeksie. Ta funkcja jest przydatna do analizowania tablic i zagnieżdżonych obiektów w formatach JSON i AVRO sformatowanych danych zdarzeń wejściowych. Aby uzyskać więcej przykładów, zobacz Analizowanie danych JSON i AVRO. Jeśli musisz zwrócić wszystkie zagnieżdżone elementy w tablicy, zamiast tego użyj polecenia GetArrayElements .
Składnia
GetArrayElement ( array_expression, bigint_expression )
Argumenty (w programowaniu)
array_expression
Czy wyrażenie tablicy ma być oceniane jako tablica źródłowa. array_expression może być kolumną typu Array lub wynikiem innego wywołania funkcji.
bigint_expression
Czy wyrażenie bigint ma być oceniane jako indeks tablicy. Położenie porządkowe w tablicy elementów, począwszy od 0.
Typy zwracane
Typ zwracany jest określany przez typ elementu tablicy i może być dowolnym z obsługiwanych typów.
Przykłady
Przykładowe dane
[
{
"DeviceId" : "123",
"SensorReadings" :
{
"Temperature" : 80,
"Humidity" : 70,
"CustomSensor": [1,1,0]
}
},
{
"DeviceId" : "631",
"SensorReadings" :
{
"Temperature" : 81,
"Humidity" : 69,
"CustomSensor": [0,1,0]
}
}
]
Powyższy przykładowy zestaw danych to tablica dwóch rekordów. W przypadku użycia jako danych wejściowych lokalnych w pliku JSON tablica najwyższego poziomu jest interpretowana na potrzeby generowania wierszy/zdarzeń przez usługę Azure Stream Analytics. Nie ma potrzeby uwzględnienia jej w składni zapytania.
Na poziomie poszczególnych rekordów istnieją dwie właściwości z różnymi typami.
DeviceId jest typu nvarchar(max), SensorReadings jest rekordem typu (obiekt).
GetType może służyć do określania typu w razie potrzeby.
SensorReadingsma trzy właściwości: dwa są typu bigint: Temperature i , i HumidityCustomSensor jest tablicą typów (bigint). Jeśli ta tablica była bardziej złożona (sama zawiera rekordy lub tablice), można użyć kombinacji elementów GetArrayElements ( mnogiej) i GetRecordPropertyValue .
Kwerendy
To zapytanie zwraca pola w katalogu głównym rekordu (DeviceId), zagnieżdżone pola przy użyciu notacji kropkowej (Temperature,Humidity), w tym tablicy (CustomSensor), a na koniec pierwsze i drugie elementy tej tablicy za pośrednictwem elementu GetArrayElement (indeks 0 i 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
Zwraca następujące dane wyjściowe:
| Identyfikator urządzenia | Temperatura | Wilgotność | CustomSensorArray | FirstCustomSensorValue | SecondCustomSensorValue |
|---|---|---|---|---|---|
| 631 | 81 | 69 | 0,1,0 | 0 | 1 |
| 123 | 80 | 70 | 1,1,0 | 1 | 1 |
Użyj funkcji CROSS APPLY , aby rozwinąć tablicę:
SELECT
i.DeviceId,
CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
Zwraca następujące dane wyjściowe:
| Identyfikator urządzenia | CustomerSensorValue |
|---|---|
| 631 | 0 |
| 631 | 1 |
| 631 | 0 |
| 123 | 0 |
| 123 | 1 |
| 123 | 1 |
W razie potrzeby możesz łatwo agregować zawartość:
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)
| Identyfikator urządzenia | CustomerSensorTotal |
|---|---|
| 123 | 2 |
| 631 | 1 |