Strukturieren von Ereignissen in Azure Time Series Insights PreviewShape events with Azure Time Series Insights Preview

Dieser Artikel bietet Hilfestellung beim Strukturieren Ihrer JSON-Datei, um die Effizienz Ihrer Azure Time Series Insights Preview-Abfragen zu maximieren.This article helps you shape your JSON file to maximize the efficiency of your Azure Time Series Insights Preview queries.

Bewährte MethodenBest practices

Sie berücksichtigen beim Senden von Ereignissen an Time Series Insights Preview verschiedene Aspekte.Think about how you send events to Time Series Insights Preview. Insbesondere sollte Folgendes sichergestellt werden:Namely, you should always:

  • Senden Sie Daten so effizient wie möglich über das Netzwerk.Send data over the network as efficiently as possible.
  • Speichern Sie Ihre Daten in einer Weise, die Ihnen dabei hilft, sie für Ihr Szenario besser geeignet zu aggregieren.Store your data in a way that helps you aggregate it more suitably for your scenario.

Gehen Sie wie folgt vor, um die bestmögliche Abfrageleistung zu erzielen:For the best possible query performance, do the following:

  • Senden Sie keine unnötigen Eigenschaften.Don't send unnecessary properties. Die Abrechnung von Time Series Insights Preview erfolgt nach Nutzung.Time Series Insights Preview bills you on your usage. Es wird empfohlen, die Daten, die Sie abfragen möchten, zu speichern und zu verarbeiten.It's best to store and process the data that you'll query.
  • Verwenden Sie Instanzenfelder für statische Daten.Use instance fields for static data. Diese Vorgehensweise hilft Ihnen dabei, das Senden von statischen Daten über das Netzwerk zu vermeiden.This practice helps you avoid sending static data over the network. Instanzenfelder, eine Komponente das Zeitreihenmodells, funktionieren wie Verweisdaten im allgemein verfügbaren Time Series Insights-Dienst.Instance fields, a component of the time series model, work like reference data in the Time Series Insights generally available service. Weitere Informationen zu Instanzenfeldern finden Sie unter Zeitreihenmodelle.To learn more about instance fields, see Time Series Models.
  • Teilen Sie Dimensionseigenschaften zwischen zwei oder mehr Ereignissen.Share dimension properties among two or more events. Diese Vorgehensweise hilft Ihnen dabei, Daten effizienter über das Netzwerk zu senden.This practice helps you send data over the network more efficiently.
  • Verwenden Sie keine tiefe Arrayschachtelung.Don't use deep array nesting. Time Series Insights Preview unterstützt bis zu zwei Ebenen für geschachtelte Arrays, die Objekte enthalten.Time Series Insights Preview supports up to two levels of nested arrays that contain objects. Time Series Insights Preview sorgt für flache Arrays in Nachrichten, indem eine Aufteilung in mehrere Ereignisse mit Eigenschaft-Wert-Paaren durchgeführt wird.Time Series Insights Preview flattens arrays in messages into multiple events with property value pairs.
  • Wenn nur wenige Messwerte für viele oder alle Ereignisse vorhanden sind, ist es besser, diese Messwerte als separate Eigenschaften innerhalb desselben Objekts zu senden.If only a few measures exist for all or most events, it's better to send these measures as separate properties within the same object. Durch das separate Senden wird die Anzahl von Ereignissen verringert und die Abfrageleistung möglicherweise gesteigert, weil weniger Ereignisse verarbeitet werden müssen.Sending them separately reduces the number of events and might improve query performance because fewer events need to be processed.

BeispielExample

Das folgende Beispiel basiert auf einem Szenario, in dem zwei oder mehr Geräte Messungen oder Signale senden.The following example is based on a scenario where two or more devices send measurements or signals. Bei diesen Messungen oder Signalen kann es sich um Werte wie Flussrate, Öldruck, Temperaturund Feuchtigkeit handeln.The measurements or signals can be Flow Rate, Engine Oil Pressure, Temperature, and Humidity.

Im folgenden Beispiel wird eine einzelne Azure IoT Hub-Nachricht verwendet, bei der das äußere Array einen gemeinsam verwendeten Abschnitt für allgemeine Dimensionswerte enthält.In the following example, there's a single Azure IoT Hub message where the outer array contains a shared section of common dimension values. Das äußere Array verwendet Zeitreiheninstanzdaten, um die Effizienz der Nachricht zu erhöhen.The outer array uses Time Series Instance data to increase the efficiency of the message. Eine Zeitreiheninstanz enthält Gerätemetadaten, die sich nicht bei jedem Ereignis ändern, stellt aber nützliche Eigenschaften für die Datenanalyse bereit.Time Series Instance contains device metadata, which doesn't change with every event, but it does provide useful properties for data analysis. Um beim Senden über das Netzwerk Bytes einzusparen und somit die Effizienz der Nachricht zu steigern, erwägen Sie die Batchverarbeitung allgemeiner Dimensionswerte und die Verwendung von Zeitreiheninstanz-Metadaten.To save on bytes sent over the wire and make the message more efficient, consider batching common dimension values and employing Time Series Instance metadata.

Beispiel-JSON-NutzlastExample JSON payload

[
    {
        "deviceId": "FXXX",
        "timestamp": "2018-01-17T01:17:00Z",
        "series": [
            {
                "Flow Rate ft3/s": 1.0172575712203979,
                "Engine Oil Pressure psi ": 34.7
            },
            {
                "Flow Rate ft3/s": 2.445906400680542,
                "Engine Oil Pressure psi ": 49.2
            }
        ]
    },
    {
        "deviceId": "FYYY",
        "timestamp": "2018-01-17T01:18:00Z",
        "series": [
            {
                "Flow Rate ft3/s": 0.58015072345733643,
                "Engine Oil Pressure psi ": 22.2
            }
        ]
    }
]

ZeitreiheninstanzTime Series Instance

Hinweis

Die Time Series-ID ist deviceId.The Time Series ID is deviceId.

{
    "timeSeriesId": [
      "FXXX"
    ],
    "typeId": "17150182-daf3-449d-adaf-69c5a7517546",
    "hierarchyIds": [
      "b888bb7f-06f0-4bfd-95c3-fac6032fa4da"
    ],
    "description": null,
    "instanceFields": {
      "L1": "REVOLT SIMULATOR",
      "L2": "Battery System",
    }
  },
  {
    "timeSeriesId": [
      "FYYY"
    ],
    "typeId": "17150182-daf3-449d-adaf-69c5a7517546",
    "hierarchyIds": [
      "b888bb7f-06f0-4bfd-95c3-fac6032fa4da"
    ],
    "description": null,
    "instanceFields": {
      "L1": "COMMON SIMULATOR",
      "L2": "Battery System",
    }
  },

Time Series Insights Preview verknüpft eine Tabelle (nach deren Vereinfachung) während der Abfragezeit.Time Series Insights Preview joins a table (after flattening) during query time. Die Tabelle enthält zusätzliche Spalten, z. B. Typ.The table includes additional columns, such as Type. Im folgenden Beispiel wird veranschaulicht, wie Sie Ihre Telemetriedaten strukturieren können.The following example demonstrates how you can shape your telemetry data.

deviceIddeviceId typeType L1L1 L2L2 timestamptimestamp series.Flow Rate ft3/sseries.Flow Rate ft3/s series.Engine Oil Pressure psiseries.Engine Oil Pressure psi
FXXX Default_TypeDefault_Type SIMULATORSIMULATOR Battery SystemBattery System 2018-01-17T01:17:00Z2018-01-17T01:17:00Z 1.01725757122039791.0172575712203979 34.734.7
FXXX Default_TypeDefault_Type SIMULATORSIMULATOR Battery SystemBattery System 2018-01-17T01:17:00Z2018-01-17T01:17:00Z 2.4459064006805422.445906400680542 49.249.2
FYYY LINE_DATA COMMONLINE_DATA COMMON SIMULATORSIMULATOR Battery SystemBattery System 2018-01-17T01:18:00Z2018-01-17T01:18:00Z 0.580150723457336430.58015072345733643 22.222.2

Beachten Sie im vorangehenden Beispiel die folgenden Punkte:In the preceding example, note the following points:

  • Statische Eigenschaften werden in Time Series Insights Preview gespeichert, um über das Netzwerk gesendete Daten zu optimieren.Static properties are stored in Time Series Insights Preview to optimize data sent over the network.
  • Time Series Insights Preview-Daten werden zur Abfragezeit verknüpft, indem die in der Instanz definierte Time Series-ID verwendet wird.Time Series Insights Preview data is joined at query time by using the Time Series ID that's defined in the instance.
  • Es werden zwei Schachtelungsebenen verwendet, wobei es sich um die maximal von Time Series Insights Preview unterstützte Anzahl handelt.Two layers of nesting are used, which is the most that's supported by Time Series Insights Preview. Tief verschachtelte Arrays müssen vermieden werden.It's critical to avoid deeply nested arrays.
  • Da nur wenige Messwerte vorliegen, werden sie als separate Eigenschaften innerhalb desselben Objekts gesendet.Because there are few measures, they're sent as separate properties within the same object. In dem Beispiel sind series.Flow Rate psi, series.Engine Oil Pressure psi und series.Flow Rate ft3/s eindeutige Spalten.In the example, series.Flow Rate psi, series.Engine Oil Pressure psi, and series.Flow Rate ft3/s are unique columns.

Wichtig

Instanzenfelder werden nicht mit Telemetriedaten gespeichert.Instance fields aren't stored with telemetry. Sie werden mit Metadaten im Zeitreihenmodell gespeichert.They're stored with metadata in the Time Series Model. Die voranstehende Tabelle stellt die Abfrageansicht dar.The preceding table represents the query view.

Nächste SchritteNext steps