Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Retorna o elemento array no índice especificado. Esta função é útil para analisar matrizes e objetos aninhados em dados de eventos de entrada formatados em JSON e AVRO. Para obter mais exemplos, consulte Análise de dados JSON e AVRO. Se você precisar retornar todos os elementos aninhados em uma matriz, use GetArrayElements em vez disso.
Sintaxe
GetArrayElement ( array_expression, bigint_expression )
Argumentos
array_expression
É a expressão de matriz a ser avaliada como uma matriz de origem. array_expression pode ser uma coluna do tipo Array ou resultado de outra chamada de função.
bigint_expression
É a expressão bigint a ser avaliada como índice de matriz. A posição ordinal na matriz de elementos, começando em 0.
Tipos de devolução
O tipo de retorno é determinado pelo tipo de elemento de matriz e pode ser qualquer um dos tipos suportados.
Exemplos
Dados de exemplo
[
{
"DeviceId" : "123",
"SensorReadings" :
{
"Temperature" : 80,
"Humidity" : 70,
"CustomSensor": [1,1,0]
}
},
{
"DeviceId" : "631",
"SensorReadings" :
{
"Temperature" : 81,
"Humidity" : 69,
"CustomSensor": [0,1,0]
}
}
]
O conjunto de dados de exemplo acima é uma matriz de dois registros. Quando usada como entrada local em um arquivo JSON, a matriz de nível superior é interpretada para a geração de linhas/eventos pelo Azure Stream Analytics. Não há necessidade de levá-lo em consideração na sintaxe da consulta.
No nível de registro individual, há duas propriedades com tipos diferentes.
DeviceId é do tipo nvarchar(max), SensorReadings é do tipo record (object).
GetType pode ser usado para determinar o tipo quando necessário.
SensorReadings tem três propriedades: duas são do tipo bigint: Temperature e Humidity, e CustomSensor é do tipo array (de bigint). Se essa matriz fosse mais complexa (ela mesma contendo registros ou matrizes), uma combinação de GetArrayElements (plural) e GetRecordPropertyValue poderia ser usada.
Interrogações
Essa consulta retorna campos na raiz do registro (DeviceId), campos aninhados usando a notação de pontos (Temperature,Humidity), incluindo uma matriz (CustomSensor), e, finalmente, o primeiro e o segundo elementos dessa matriz via GetArrayElement (índice 0 e 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
Retorna a seguinte saída:
| DeviceId | Temperatura | Humidade | CustomSensorArray | FirstCustomSensorValue | SecondCustomSensorValue |
|---|---|---|---|---|---|
| 631 | 81 | 69 | 0,1,0 | 0 | 1 |
| 123 | 80 | 70 | 1,1,0 | 1 | 1 |
Use CROSS APPLY para desdobrar a matriz:
SELECT
i.DeviceId,
CustomerSensorValue.ArrayValue AS CustomerSensorValue
FROM input AS i
CROSS APPLY GetArrayElements(i.SensorReadings.CustomSensor) AS CustomerSensorValue
Retorna a seguinte saída:
| DeviceId | CustomerSensorValue |
|---|---|
| 631 | 0 |
| 631 | 1 |
| 631 | 0 |
| 123 | 0 |
| 123 | 1 |
| 123 | 1 |
A partir daí, você pode facilmente agregar o conteúdo, se necessário:
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 |