Zeitreihen zeichnen
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):
-
Melden Sie sich an Ihrer
Grafana-Instanz an, und erstellen Sie ein Dashboard. -
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 eingestellt. Die Granularität wird aus dem Zeitintervall berechnet, das für das Chart ausgewählt wurde.
TippSetzen 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.
-
-
Die Zeitreihe, die Ihrer Auswahl entspricht, wird im Diagrammbereich wiedergegeben. Passen Sie den Zeitrahmen wie erforderlich an, um relevante Daten anzuzeigen.
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.
Für synthetische Zeitreihen können Sie mehrere Eigenschaftsarten angeben.
bool
:ts{isString=true}
oderts{isStep=false}
string
odernumber
:ts{id=123}
oderts{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 gleich123
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 anCDF. 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 des regulären Ausdrucks. Filtert die abgerufenen Zeitreihen nach Eigenschaften, die dem regulären Ausdruck entsprechen. Unterstützt Zeichenfolge.!~
– Ungleichheit des regulären Ausdrucks. 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:
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:
-
Clientseitiges Filtern: 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 Zeitreihenelementen 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. -
Serverseitiges Filtern: Um diese Einschränkung zu verringern, wird empfohlen, das serverseitige Filtern zu verwenden, wenn möglich. Dieses 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 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 das serverseitige Filtern 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 Chance, 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 synthetischer Zeitreihe 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ützen 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, gehen wir mal 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).
Funktionen
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 Temperatur-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:
-
Wählen Sie in der Registerkarte Datenmodelle das Datenmodell und die Version aus.
-
Geben Sie die Abfrage an.
WichtigFügen Sie
__typename
undexternalId
unter den Feldern hinzu, die die Zeitreihe enthalten. In diesem Beispiel unterhalb vontemperature
undpressure
:{
listPump {
items {
temperature {
__typename
externalId
}
pressure {
__typename
externalId
}
}
}
}