Zum Hauptinhalt wechseln

Plot-Zeitreihen

Erstellen Sie Dashboards, und wählen Sie die Zeitreihen aus, für die Sie ein Diagramm zeichnen möchten. Setzen Sie angepasste Abfragen und erweiterte Funktionen, wie zum Beispiel Filtern, Aggregation, Granularität, Rechenoperationen und Funktionen, für Ihre Arbeit mit Zeitreihen ein.

Ein Dashboard erstellen

So erstellen Sie ein Dashboard mit Zeitreihendaten aus Cognite Data Fusion (CDF):

  1. Melden Sie sich an Ihrer Grafana-Instanz an, und erstellen Sie ein Dashboard.

  2. Wählen Sie mit den Abfrage-Registerkarten unterhalb des Hauptdiagramms Zeitreihen für Ihr Dashboard aus:

    • Zeitreihen-Suche – Daten aus einer bestimmten Zeitreihe abrufen. Beginnen Sie, den Namen oder die Beschreibung der Zeitreihe einzugeben, und wählen Sie diese dann aus der Dropdown-Liste aus.

      Legen Sie Aggregation und Granularität direkt in der Abfrage fest. Standardmäßig ist die Aggregation auf durchschnittlich festgelegt. Die Granularität wird aus dem Zeitintervall berechnet, das für das Chart ausgewählt wurde.

      Tipp

      Setzen Sie optional eine angepasste Bezeichnung ein und verwenden Sie das Format {{property}}, um Daten aus der Zeitreihe zu ziehen. Sie können alle verfügbaren Zeitreiheneigenschaften einsetzen, um eine Bezeichnung zu definieren, zum Beispiel {{name}} - {{description}} oder {{metadata.key1}}.

    • Zeitreihen aus Anlageteil: Daten aus Zeitreihen abrufen, die einem bestimmten Anlageteil zugeordnet sind. Beginnen Sie, den Namen oder die Beschreibung des Anlageteils einzugeben, und wählen Sie dieses dann aus der Dropdown-Liste aus. Optional können Sie entscheiden, ob Sie Zeitreihen aus Unter-Anlageteilen einschließen möchten.

    • Angepasste Zeitreihenabfrage – Daten aus Zeitreihen abrufen, die einer Abfrage entsprechen.

  3. Die Zeitreihe, die Ihrer Auswahl entspricht, wird im Diagrammbereich wiedergegeben. Passen Sie den Zeitrahmen wie erforderlich an, um relevante Daten anzuzeigen.

Zeitraum anpassen

Angepasste Abfragen einsetzen

Benutzerdefinierte Abfragen ermöglichen eine genaue Kontrolle über die Auswahl der Zeitreihendaten. Sie können Rechenoperationen, Funktionen und eine spezielle Syntax für das Abrufen von synthetischen Zeitreihen verwenden. Dieser Abschnitt hebt auch die Einschränkungen in Bezug auf das Filtern von Daten hervor und erklärt, wie Sie reguläre Ausdrücke und serverseitige Filter effektiv verwenden.

Eine Abfrage definieren

Geben Sie eine Abfrage mit Parametern an, um Zeitreihen anzufordern. Um zum Beispiel eine Zeitreihe abzufragen, bei der id gleich 123 ist, geben Sie ts{id=123} an.

Sie können Zeitreihen mit id, externalId oder Zeitreihenfiltern abfragen.

Angepasste Abfrage

Für synthetische Zeitreihen können Sie mehrere Eigenschaftsarten angeben.

  • bool: ts{isString=true} oder ts{isStep=false}
  • string oder number: ts{id=123} oder ts{externalId='external_123'}
  • array: ts{assetIds=[123, 456]}
  • object: ts{metadata={key1="value1", key2="value2"}}

Um komplexe synthetische Zeitreihen zu erstellen, können Sie die Arten in einer einzelnen Abfrage kombinieren:

ts{name="test", assetSubtreeIds=[{id=123}, {externalId="external_123"}]}

Filtern

Abfragen unterstützen auch das Filtern auf der Grundlage von Zeitreiheneigenschaften, die als logisches AND angewandt werden. Zum Beispiel findet die nachfolgende Abfrage Zeitreihen,

  • die zu einem Anlagenteil mit einer id gehören, die gleich 123 ist.
  • deren name mit "Begin" beginnt.
  • deren name nicht mit "end" endet.
  • deren name nicht gleich "Begin query" ist.
ts{assetIds=[123], name=~"Begin.*", name!~".*end", name!="Begin query"}

Die Abfragesyntax enthält die folgenden vier Arten von Gleichheitsoperatoren:

  • = – strikte Gleichheit. Gibt Parameter an für die Anforderung von Zeitreihen an CDF. Wird mit Filterattributen verwendet.
  • =! – strikte Ungleichheit. Filtert die abgerufenen Zeitreihen nach Eigenschaften, die nicht der Zeichenfolge entsprechen. Unterstützt Zeichenfolge, numerischen Ausdruck und booleschen Ausdruck.
  • =~ – Gleichheit mit dem regulären Ausdruck. Filtert die abgerufenen Zeitreihen nach Eigenschaften, die dem regulären Ausdruck entsprechen. Unterstützt Zeichenfolge.
  • !~ – Ungleichheit mit dem regulären Ausdruck. Filtert die abgerufenen Zeitreihen nach Eigenschaften, die nicht dem regulären Ausdruck entsprechen. Unterstützt Zeichenfolge.

Sie können auch nach Metadaten filtern:

ts{externalIdPrefix="test", metadata={key1="value1", key2=~"value2.*"}}

Die oben genannte Abfrage fordert Zeitreihen an, bei denen Folgendes gilt:

  • externalIdPrefix gleicht "test"
  • metadata.key1 gleicht "value1"
  • metadata.key2 beginnt mit "value2"

Abfrageeinschränkungen

Wenn Sie benutzerdefinierte Abfragen durchführen, ist es wichtig, dass Sie die zugrundeliegenden Einschränkungen für das Abrufen von Zeitreihen verstehen:

  • Clientseitige Filterung: Der Connector wendet Abfragen regulärer Ausdrücke (=~ für Übereinstimmungen und !~ für Ausschlüsse) und nicht exakte Ungleichheitsfilter (=!) auf Clientseite an. Dieser Prozess erfolgt nach dem ersten Abrufen von bis zu 1.000 Zeitreihenelemeten aus Cognite Data Fusion (CDF). Aufgrund dieses Ansatzes ist es möglich, dass nicht alle relevanten Zeitreihen in den abgerufenen Teildatensatz einbezogen werden, wenn die Anzahl bei mehr als 1.000 liegt.

  • Serverseitige Filterung: Um diese Einschränkung zu verringern, wird empfohlen, die serverseitige Filterung zu verwenden, wenn möglich. Diese wird ausgeführt, indem Sie strikte Gleichheitsfilter (=) auf bestimmte Filtereigenschaften für Zeitreihen anwenden. So verringern Sie die Anzahl der aus CDF abgerufenen Zeitreihen effektiv und stellen sicher, dass die folgenden clientseitigen Filter auf ein einen gezielteren Datensatz angewendet werden. Dies ist insbesondere nützlich, um sicherzustellen, dass alle Zeitreihen, insbesondere die relevanten, im ersten Datensatz der von CDF abgerufen wird, einbezogen werden.

Kombinieren Sie die serverseitige Filterung mit bestimmten Attributen oder Metadaten, um den Umfang Ihrer Abfrage zu verfeinern, bevor Sie reguläre Ausdrücke oder andere clientseitige Filter anwenden. Dieser Ansatz erhöht die Change, dass alle relevanten Zeitreihen in Ihrem Grafana-Dashboard ausgewählt werden, signifikant.

Aggregation, Granularität und Ausrichtung

Mit den Dropdownlisten in der Benutzeroberfläche können Sie Aggregation und Granularität für jede Zeitreihe angeben.

Wenn die Aggregation zum Beispiel auf average eingestellt ist und die Granularität gleich 1h ist, fordern alle Abfragen Datenpunkte mit der ausgewählten Aggregation und Granularität an. Standardmäßig ist die Aggregation mit synthetischen Zeitreihen auf Donnerstag 00:00:00 UTC, 1. Januar 1970 ausgerichtet.

Mit der Abfragesyntax der synthetischen Zeitreihe können Sie Aggregation, Granularität und Ausrichtung für jede Zeitreihe einzeln angeben:

ts{externalId='houston.ro.REMOTE_AI[34]', alignment=1599609600000, aggregate='average', granularity='24h'}

Die oben genannte Abfrage überschreibt die Werte der Aggregation und Granularität, die in der Benutzeroberfläche eingerichtet sind. Eine Liste der unterstützten Aggregate finden Sie in der API-Dokumentation.

Rechenoperationen

Sie können Rechenoperationen anwenden, um Zeitreihen zu kombinieren. Zum Beispiel:

ts{id=123} + ts{externalId="test"}

Das Ergebnis der oben genannten Abfrage ist eine einzelne Zeichnung, bei der die Datenpunkte addierte Werte jeder Zeitreihe sind.

In diesem Beispiel kann die Abfrage ts{name~="test1.*"} mehr als eine Zeitreihe ausgeben, aber gehen wir einmal davon aus, dass sie drei Zeitreihen mit den IDs 111, 222 und 333 ausgibt:

ts{name~="test1.*"} + ts{id=123}

Das Ergebnis der Abfrage sind drei Zeichnungen, eine Kombination der addierten Zeitreihenwerte, die von dem ersten und zweiten Ausdruck in der Abfrage ausgegeben werden. Die sich daraus ergebenden Zeichnungen stellen diese Abfragen dar:

  • ts{id=111} + ts{id=123}
  • ts{id=222} + ts{id=123}
  • ts{id=333} + ts{id=123}

Im nachfolgenden Bild wird ein Beispiel dieses Verhaltens dargestellt (jeder ts{}-Ausdruck gibt zwei Zeitreihen aus) (achten Sie auf die Bezeichnungen unter dem Diagramm).

Angepasste Abfrage-Mathematik

Functions

Wir unterstützen eine große Anzahl an Funktionen, die auf synthetische Zeitreihen angewandt werden können:

  • Trigonometrische: sin(ts{}), cos(ts{}), pi().
  • Funktionen variabler Länge: max(ts{}, ...), min(ts{}, ...), avg(ts{}, ...).
  • Algebraische: ln(ts{}), pow(ts{}, exponent), sqrt(ts{}), exp(ts{}), abs(ts{}).
  • Fehlerbehebung: on_error(ts{}, default_value). Siehe Fehlerbehebung bei Berechnungen.
  • Zeichenfolge-Zeitreihe: map(expression, [list of strings to map from], [list of values to map to], default_value) Siehe Zeichenfolge-Zeitreihe.

Fehlerbehebung bei Berechnungen

Mit der Funktion on_error(ts{...}) können Diagramme wiedergegeben werden, auch wenn ein Ausnahmefehler auftritt. Sie behebt Fehler wie folgt:

  • BAD_DOMAIN – Wenn falsche Eingabebereiche angegeben werden. Zum Beispiel eine Teilung durch Null oder die Quadratwurzel einer negativen Zahl.
  • OVERFLOW – Wenn der absolute Wert des Ergebnisses größer als 10^100 ist.

Wenn einer dieser Fehler auftritt, gibt CDF für diesen Zeitstempel ein Fehlerfeld mit einer Fehlernachricht statt eines Werts aus. Sie können dies vermeiden, indem Sie den (Unter-)Ausdruck in die Funktion on_error() einbinden:

on_error(1/ts{externalId='canBeZero'}, 0)

Zeichenfolge-Zeitreihe

Die Funktion map() kann Zeitreihen mit Zeichenfolge-Werten so behandeln, dass Zeichenfolgen in Doppel konvertiert werden. Wenn zum Beispiel eine Zeitreihe für ein Ventil die Werte "OPEN" oder "CLOSED" haben kann, können Sie dies in eine Zahl mit den folgenden Werten konvertieren:

map(TS{externalId='stringstate'}, ['OPEN', 'CLOSED'], [1, 0], -1)

"OPEN" wird 1 zugeordnet, "CLOSED" 0 und alles andere -1.

Aggregate für Zeichenfolge-Zeitreihen werden aktuell nicht unterstützt. Alle Zeichenfolge-Zeitreihen gelten als gestufte Zeitreihen.

Einheitenkonvertierung

Wenn für eine Zeitreihe eine unitExternalId definiert ist, können Sie deren Werte in eine andere Einheit derselben Menge konvertieren, wenn Sie Daten in einer benutzerdefinierten Abfrage abrufen.

Beispiel:

{ts{externalId='temperature_f_houston', targetUnit='temperature:deg_c'} + ts{id='123', targetUnitSystem='SI'}}

Sie können entweder targetUnit oder targetUnitSystem für jede Zeitreihe oder jedes Aggregat wählen. Die von Ihnen ausgewählte Zieleinheit muss mit der ursprünglichen Einheit kompatibel sein.

Wenn Sie Datenpunkte mithilfe synthetischer Zeitreihen abfragen, werden die Einheiten für die Werte nicht beibehalten. Das bedeutet, dass es möglich ist, Werte einer Temeratur-Zeitreihe zu einer Distanz-Zeitreihe hinzuzufügen, auch wenn dies physikalisch nicht genau ist.

Beachten Sie, dass Grafana beim Zugriffsversuch auf die Eigenschaft unit oder unitExternalId jeder Zeitreihe im Feld Bezeichnung die ursprüngliche Einheit der Zeitreihe zurückgibt, nicht die Einheit der Datenpunkte.

Zeitreihendaten aus Datenmodell-Instanzen anzeigen

Sie können Zeitreihendaten aus Instanzen von CDF-Datenmodellen anzeigen:

  1. Wählen Sie in der Registerkarte Datenmodelle das Datenmodell und die Version aus.

  2. Geben Sie die Abfrage an.

    Wichtig

    Fügen Sie __typename und externalId unter den Feldern hinzu, die die Zeitreihe enthalten. In diesem Beispiel unterhalb von temperature und pressure:

    {
    listPump {
    items {
    temperature {
    __typename
    externalId
    }
    pressure {
    __typename
    externalId
    }
    }
    }
    }
    Angepasstes Abfrage-Datenmodell