Consulta de datos agregados - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Consulta de datos agregados

AWS IoT proporciona cuatro APIs (GetStatistics, GetCardinalityGetPercentiles, yGetBucketsAggregation) que le permiten buscar datos agregados en su flota de dispositivos.

nota

Si hay problemas relacionados con valores faltantes o inesperados en la agregación APIs, consulta la guía de solución de problemas de indexación de flotas.

GetStatistics

La GetStatisticsAPI y el comando get-statistics CLI devuelven el recuento, el promedio, la suma, el mínimo, el máximo, la suma de los cuadrados, la varianza y la desviación estándar del campo agregado especificado.

El comando get-statistics de la CLI usa los siguientes parámetros:

index-name

El nombre del índice que se buscará. El valor predeterminado es AWS_Things.

query-string

La consulta utilizada para buscar el índice. Puede especificar si desea "*" obtener el recuento de todos los elementos indexados de su. Cuenta de AWS

aggregationField

(Opcional) El campo que se va a agregar. Este campo debe ser un campo administrado o personalizado definido al llamar a update-indexing-configuration. Si no especifica un campo de agregación, se utiliza registry.version como el campo de agregación.

query-version

La versión de la consulta que se va a utilizar. El valor predeterminado es 2017-09-30.

El tipo de campo de agregación puede afectar a las estadísticas devueltas.

GetStatistics con valores de cadena

Si realiza la agregación en un campo de cadena, la llamada a GetStatistics devuelve el número de dispositivos que tienen atributos que coinciden con la consulta. Por ejemplo:

aws iot get-statistics --aggregation-field 'attributes.stringAttribute' --query-string '*'

Este comando devuelve el número de dispositivos que contienen un atributo llamado stringAttribute:

{ "statistics": { "count": 3 } }

GetStatistics con valores booleanos

Cuando llama a GetStatistics con un campo de agregación booleano:

  • AVERAGE es el porcentaje de dispositivos que coinciden con la consulta.

  • MINIMUM es 0 o 1 de acuerdo con las siguientes reglas:

    • Si todos los valores del campo de agregación son false, MINIMUM es 0.

    • Si todos los valores del campo de agregación son true, MINIMUM es 1.

    • Si los valores del campo de agregación son una mezcla de false y true, MINIMUM es 0.

  • MAXIMUM es 0 o 1 de acuerdo con las siguientes reglas:

    • Si todos los valores del campo de agregación son false, MAXIMUM es 0.

    • Si todos los valores del campo de agregación son true, MAXIMUM es 1.

    • Si los valores del campo de agregación son una mezcla de false y true, MAXIMUM es 1.

  • SUM es la suma del entero equivalente de los valores booleanos.

  • COUNT es el recuento de objetos que coinciden con los criterios de la cadena de consulta y contienen un valor de campo de agregación válido.

GetStatistics con valores numéricos

Cuando se llama a GetStatistics y se especifica un campo de agregación de tipo Number, GetStatistics devuelve los siguientes valores:

count

El número de objetos que coinciden con los criterios de la cadena de consulta y contienen un valor de campo de agregación válido.

average

El promedio de los valores numéricos que coinciden con la consulta.

sum

La suma de los valores numéricos que coinciden con la consulta.

minimum

El menor de los valores numéricos que coinciden con la consulta.

maximum

El mayor de los valores numéricos que coinciden con la consulta.

sumOfSquares

La suma de los cuadrados de los valores numéricos que coinciden con la consulta.

variance

La varianza de los valores numéricos que coinciden con la consulta. La varianza de un conjunto de valores es la media de los cuadrados de las diferencias de cada valor con respecto al valor medio del conjunto.

stdDeviation

La desviación estándar de los valores numéricos que coinciden con la consulta. La desviación estándar de un conjunto de valores es una medida de la distribución de los valores.

El siguiente ejemplo muestra cómo llamar a get-statistics con un campo numérico personalizado.

aws iot get-statistics --aggregation-field 'attributes.numericAttribute2' --query-string '*'
{ "statistics": { "count": 3, "average": 33.333333333333336, "sum": 100.0, "minimum": -125.0, "maximum": 150.0, "sumOfSquares": 43750.0, "variance": 13472.22222222222, "stdDeviation": 116.06990230986766 } }

Para los campos de agregación numérica, si los valores del campo superan el valor «double» máximo, los valores de las estadísticas están vacíos.

GetCardinality

La GetCardinalityAPI y el comando get-cardinality CLI devuelven el recuento aproximado de valores únicos que coinciden con la consulta. Por ejemplo, es posible que desee encontrar el número de dispositivos con niveles de batería inferiores al 50 por ciento:

aws iot get-cardinality --index-name AWS_Things --query-string "batterylevel > 50" --aggregation-field "shadow.reported.batterylevel"

Este comando devuelve el número de objetos con niveles de batería de más del 50 por ciento:

{ "cardinality": 100 }

get-cardinality siempre devuelve cardinality, aunque no haya campos coincidentes. Por ejemplo:

aws iot get-cardinality --query-string "thingName:Non-existent*" --aggregation-field "attributes.customField_STR"
{ "cardinality": 0 }

El comando get-cardinality de la CLI usa los siguientes parámetros:

index-name

El nombre del índice que se buscará. El valor predeterminado es AWS_Things.

query-string

La consulta utilizada para buscar el índice. Puede especificar si desea "*" obtener el recuento de todos los elementos indexados de su Cuenta de AWS.

aggregationField

El campo que se va a agregar.

query-version

La versión de la consulta que se va a utilizar. El valor predeterminado es 2017-09-30.

GetPercentiles

La GetPercentilesAPI y el comando get-percentiles CLI agrupan los valores agregados que coinciden con la consulta en grupos de percentiles. Los grupos de percentiles predeterminados son: 1,5,25,50,75,95,99, aunque puede especificar los suyos propios cuando llame a GetPercentiles. Esta función devuelve un valor para cada grupo de percentiles especificado (o para los grupos de percentiles predeterminados). El grupo de percentiles "1" contiene el valor agregado del campo que se obtiene aproximadamente en el uno por ciento de los valores que coinciden con la consulta. El grupo de percentiles "5" contiene el valor agregado del campo que se obtiene en aproximadamente el cinco por ciento de los valores que coinciden con la consulta, y así sucesivamente. El resultado es una aproximación: cuantos más valores coincidan con la consulta, más precisos serán los valores de percentil.

El siguiente ejemplo muestra cómo llamar al comando get-percentiles de la CLI.

aws iot get-percentiles --query-string "thingName:*" --aggregation-field "attributes.customField_NUM" --percents 10 20 30 40 50 60 70 80 90 99
{ "percentiles": [ { "value": 3.0, "percent": 80.0 }, { "value": 2.5999999999999996, "percent": 70.0 }, { "value": 3.0, "percent": 90.0 }, { "value": 2.0, "percent": 50.0 }, { "value": 2.0, "percent": 60.0 }, { "value": 1.0, "percent": 10.0 }, { "value": 2.0, "percent": 40.0 }, { "value": 1.0, "percent": 20.0 }, { "value": 1.4, "percent": 30.0 }, { "value": 3.0, "percent": 99.0 } ] }

El siguiente comando muestra la salida devuelta get-percentiles cuando no hay documentos coincidentes.

aws iot get-percentiles --query-string "thingName:Non-existent*" --aggregation-field "attributes.customField_NUM"
{ "percentiles": [] }

El comando get-percentile de la CLI usa los siguientes parámetros:

index-name

El nombre del índice que se buscará. El valor predeterminado es AWS_Things.

query-string

La consulta utilizada para buscar el índice. Puede especificar si desea "*" obtener el recuento de todos los elementos indexados de su. Cuenta de AWS

aggregationField

El campo que se va a agregar, que debe ser del tipo Number.

query-version

La versión de la consulta que se va a utilizar. El valor predeterminado es 2017-09-30.

percents

(Opcional) Puede utilizar este parámetro para especificar grupos de percentiles personalizados.

GetBucketsAggregation

La GetBucketsAggregationAPI y el comando get-buckets-aggregation CLI devuelven una lista de depósitos y el número total de elementos que se ajustan a los criterios de la cadena de consulta.

El siguiente ejemplo muestra cómo llamar al comando get-buckets-aggregation de la CLI.

aws iot get-buckets-aggregation --query-string '*' --index-name AWS_Things --aggregation-field 'shadow.reported.batterylevelpercent' --buckets-aggregation-type 'termsAggregation={maxBuckets=5}'

Este comando devuelve la siguiente salida:

{ "totalCount": 20, "buckets": [ { "keyValue": "100", "count": 12 }, { "keyValue": "90", "count": 5 }, { "keyValue": "75", "count": 3 } ] }

El comando get-buckets-aggregation de la CLI usa los siguientes parámetros:

index-name

El nombre del índice que se buscará. El valor predeterminado es AWS_Things.

query-string

La consulta utilizada para buscar el índice. Puede especificar si desea "*" obtener el recuento de todos los elementos indexados de su. Cuenta de AWS

aggregation-field

El campo que se va a agregar.

buckets-aggregation-type

El control básico de la forma de la respuesta y el tipo de agregación de buckets que se va a realizar.

Autorización

Puede especificar el índice de grupos de cosas como un ARN de recurso en una acción de AWS IoT política, de la siguiente manera.

Acción Recurso

iot:GetStatistics

El ARN de un índice (por ejemplo, arn:aws:iot:your-aws-region:index/AWS_Things o arn:aws:iot:your-aws-region:index/AWS_ThingGroups).