Abfragen von Aggregatdaten - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abfragen von Aggregatdaten

AWS IoT bietet vier APIs (GetStatistics,GetCardinality, undGetBucketsAggregation)GetPercentiles, mit denen Sie Ihre Geräteflotte nach aggregierten Daten durchsuchen können.

Anmerkung

Bei Problemen mit fehlenden oder unerwarteten Werten für die Aggregation APIs lesen Sie den Leitfaden zur Fehlerbehebung bei der Fleet-Indexierung.

GetStatistics

Die GetStatisticsAPI und der get-statistics CLI-Befehl geben die Anzahl, den Durchschnitt, die Summe, das Minimum, das Maximum, die Summe der Quadrate, die Varianz und die Standardabweichung für das angegebene aggregierte Feld zurück.

Der get-statistics-CLI-Befehl nimmt die folgenden Parameter entgegen:

index-name

Der Name des zu durchsuchenden Indexes. Der Standardwert ist AWS_Things.

query-string

Die zur Abfrage des Indexes verwendete Abfrage. Sie können angeben"*", dass die Anzahl aller indizierten Dinge in Ihrem abgerufen werden soll. AWS-Konto

aggregationField

(Optional) Das zu aggregierende Feld. Dieses Feld muss ein verwaltetes oder benutzerdefiniertes Feld sein, das beim Aufruf von update-indexing-configuration definiert wird. Wenn Sie kein Aggregationsfeld angeben, wird registry.version als Aggregationsfeld verwendet.

query-version

Die Version der Abfrage, die verwendet werden soll. Der Standardwert ist 2017-09-30.

Der Typ des Aggregationsfelds kann sich auf die zurückgegebenen Statistiken auswirken.

GetStatistics mit Zeichenkettenwerten

Wenn Sie in einem Zeichenfolgenfeld aggregieren, gibt der Aufruf von GetStatistics eine Anzahl von Geräten zurück, die Attribute aufweisen, die der Abfrage entsprechen. Zum Beispiel:

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

Dieser Befehl gibt die Anzahl der Geräte zurück, die ein Attribut mit dem Namen stringAttribute enthalten:

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

GetStatistics mit booleschen Werten

Wenn Sie GetStatistics mit einem booleschen Aggregationsfeld aufrufen:

  • AVERAGE ist der Prozentsatz der Geräte, die mit der Abfrage übereinstimmen.

  • MINIMUM ist 0 oder 1 gemäß den folgenden Regeln:

    • Wenn alle Werte für das Aggregationsfeld false lauten, ist MINIMUM 0.

    • Wenn alle Werte für das Aggregationsfeld true lauten, ist MINIMUM 1.

    • Wenn die Werte für das Aggregationsfeld eine Mischung aus false und sind true, ist MINIMUM 0.

  • MAXIMUM ist 0 oder 1 gemäß den folgenden Regeln:

    • Wenn alle Werte für das Aggregationsfeld false lauten, ist MAXIMUM 0.

    • Wenn alle Werte für das Aggregationsfeld true lauten, ist MAXIMUM 1.

    • Wenn die Werte für das Aggregationsfeld eine Mischung aus false und true sind, ist MAXIMUM 1.

  • SUM ist die Summe des ganzzahligen Äquivalents der booleschen Werte.

  • COUNT ist die Anzahl der Elemente, die den Kriterien der Abfragezeichenfolge entsprechen und einen gültigen Aggregationsfeldwert enthalten.

GetStatistics mit numerischen Werten

Wenn Sie GetStatistics aufrufen und ein Aggregationsfeld vom Typ Number angeben, gibt GetStatistics die folgenden Werte zurück:

count

Die Anzahl der Elemente, die den Kriterien der Abfragezeichenfolge entsprechen und einen gültigen Aggregationsfeldwert enthalten.

Durchschnitt

Der Durchschnitt der numerischen Werte, die der Abfrage entsprechen.

sum

Die Summe der numerischen Werte, die der Abfrage entsprechen.

Minimum

Der kleinste numerische Wert, der der Abfrage entspricht.

Maximum

Der größte numerische Wert, der der Abfrage entspricht.

sumOfSquares

Die Summe der Quadrate der numerischen Werte, die der Abfrage entsprechen.

Varianz

Die Varianz der numerischen Werte, die der Abfrage entsprechen. Die Varianz einer Wertemenge ist der Durchschnitt der Quadrate der Differenzen jedes einzelnen Werts vom Durchschnittswert der Menge.

stdDeviation

Die Standardabweichung der numerischen Werte, die der Abfrage entsprechen. Die Standardabweichung einer Wertemenge ist ein Maß für die Verteilung der Werte.

Das folgende Beispiel zeigt, wie get-statistics mit einem numerischen benutzerdefinierten Feld aufgerufen wird.

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 } }

Wenn die Feldwerte den maximalen doppelten Wert überschreiten, sind bei numerischen Aggregationsfeldern die Statistikwerte leer.

GetCardinality

Die GetCardinalityAPI und der get-cardinality CLI-Befehl geben die ungefähre Anzahl der eindeutigen Werte zurück, die der Abfrage entsprechen. Beispiel: Sie möchten die Anzahl der Geräte mit einem Akkustand von weniger als 50 Prozent ermitteln:

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

Dieser Befehl gibt die Anzahl der Elemente mit einem Akkustand von mehr als 50 Prozent zurück:

{ "cardinality": 100 }

cardinality wird immer von get-cardinality zurückgegeben, auch wenn keine übereinstimmenden Felder vorhanden sind. Zum Beispiel:

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

Der get-cardinality-CLI-Befehl nimmt die folgenden Parameter entgegen:

index-name

Der Name des zu durchsuchenden Indexes. Der Standardwert ist AWS_Things.

query-string

Die zur Abfrage des Indexes verwendete Abfrage. Sie können angeben"*", dass die Anzahl aller indizierten Dinge in Ihrem AWS-Konto abgerufen werden soll.

aggregationField

Das zu aggregierende Feld.

query-version

Die Version der Abfrage, die verwendet werden soll. Der Standardwert ist 2017-09-30.

GetPercentiles

Die GetPercentilesAPI und der get-percentiles CLI-Befehl gruppieren die aggregierten Werte, die der Abfrage entsprechen, in Perzentilgruppierungen. Die standardmäßigen Perzentilgruppierungen sind 1,5,25,50,75,95,99, auch wenn Sie beim Aufrufen von GetPercentiles Ihre eigenen angeben können. Diese Funktion gibt einen Wert für jede angegebene Perzentilgruppe (oder die standardmäßigen Perzentilgruppierungen) zurück. Die Perzentilgruppe „1“ enthält den aggregierten Feldwert, der in etwa in einem Prozent der Werte auftritt, die der Abfrage entsprechen. Die Perzentilgruppe „5“ enthält den aggregierten Feldwert, der in etwa in fünf Prozent der Werte auftritt, die der Abfrage entsprechen, usw. Das Ergebnis ist eine Annäherung, je mehr Werte der Abfrage entsprechen, desto genauer sind die Perzentilwerte.

Das folgende Beispiel zeigt, wie der get-percentiles-CLI-Befehl aufgerufen wird.

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 } ] }

Der folgende Befehl zeigt die Ausgabe von get-percentiles, wenn keine entsprechenden Dokumente vorhanden sind.

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

Der get-percentile-CLI-Befehl nimmt die folgenden Parameter entgegen:

index-name

Der Name des zu durchsuchenden Indexes. Der Standardwert ist AWS_Things.

query-string

Die zur Abfrage des Indexes verwendete Abfrage. Sie können angeben"*", dass die Anzahl aller indizierten Dinge in Ihrem abgerufen werden soll. AWS-Konto

aggregationField

Das zu aggregierende Feld, das den Typ Number aufweisen muss.

query-version

Die Version der Abfrage, die verwendet werden soll. Der Standardwert ist 2017-09-30.

percents

Mit diesem Parameter können Sie benutzerdefinierte Perzentilgruppierungen angeben.

GetBucketsAggregation

Die GetBucketsAggregationAPI und der get-buckets-aggregation CLI-Befehl geben eine Liste von Buckets und die Gesamtzahl der Dinge zurück, die den Kriterien der Abfragezeichenfolge entsprechen.

Das folgende Beispiel zeigt, wie der get-buckets-aggregation-CLI-Befehl aufgerufen wird.

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

Dieser Befehl gibt die folgende Ausgabe zurück: .

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

Der get-buckets-aggregation-CLI-Befehl nimmt die folgenden Parameter entgegen:

index-name

Der Name des zu durchsuchenden Indexes. Der Standardwert ist AWS_Things.

query-string

Die zur Abfrage des Indexes verwendete Abfrage. Sie können angeben"*", dass Sie die Anzahl aller indizierten Dinge in Ihrem abrufen möchten. AWS-Konto

aggregation-field

Das zu aggregierende Feld.

buckets-aggregation-type

Die grundlegende Steuerung der Antwortform und des auszuführenden Bucket-Aggregationstyps.

Autorisierung

Sie können den Index der Dinggruppen wie folgt als Ressourcen-ARN in einer AWS IoT Richtlinienaktion angeben.

Aktion Ressource

iot:GetStatistics

Ein Index-ARN (z. B. arn:aws:iot:your-aws-region:index/AWS_Things oder arn:aws:iot:your-aws-region:index/AWS_ThingGroups).