Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utiliser des fonctions temporelles dans les expressions de formules
Utilisez des fonctions temporelles pour renvoyer des valeurs basées sur les horodatages des points de données.
Utiliser des fonctions temporelles dans les métriques
Dans les métriques uniquement, vous pouvez utiliser les fonctions suivantes qui renvoient des valeurs basées sur l'horodatage des points de données.
Les arguments des fonctions temporelles doivent être des propriétés du modèle d'actif local ou des expressions imbriquées. Cela signifie que vous ne pouvez pas utiliser les propriétés des modèles d'actifs enfants dans les fonctions temporelles.
Vous pouvez utiliser des expressions imbriquées dans les fonctions temporelles. Lorsque vous utilisez des expressions imbriquées, les règles suivantes s'appliquent :
-
Chaque argument ne peut comporter qu'une seule variable.
Par exemple,
latest( t*9/5 + 32 )
est pris en charge. -
Les arguments ne peuvent pas être des fonctions d'agrégation.
Par exemple,
first( sum(x) )
n'est pas pris en charge.
Fonction | Description |
---|---|
|
Renvoie la valeur de la variable donnée avec l'horodatage le plus ancien sur l'intervalle de temps actuel. |
|
Renvoie la valeur de la variable donnée avec l'horodatage le plus récent sur l'intervalle de temps actuel. |
|
Renvoie la dernière valeur de la variable donnée avant le début de l'intervalle de temps actuel. Cette fonction calcule un point de données pour chaque intervalle de temps, si la propriété d'entrée a au moins un point de données dans son historique. Consultez time-range-defintion pour plus de détails. |
|
Renvoie la dernière valeur de la variable donnée avec le dernier horodatage avant la fin de l'intervalle de temps actuel. Cette fonction calcule un point de données pour chaque intervalle de temps, si la propriété d'entrée a au moins un point de données dans son historique. Consultez time-range-defintion pour plus de détails. |
|
Renvoie la durée, en secondes, pendant laquelle les variables données sont positives sur l'intervalle de temps actuel. Vous pouvez utiliser les fonctions de comparaison pour créer une propriété de transformation pour la Par exemple, si vous avez une propriété Cette fonction ne prend pas en charge les propriétés de métriques en tant que variables d'entrée. Cette fonction calcule un point de données pour chaque intervalle de temps, si la propriété d'entrée a au moins un point de données dans son historique. |
|
Renvoie la moyenne des données d'entrée pondérées par les intervalles de temps entre les points. Voir Paramètres des fonctions pondérées dans le temps pour plus de détails sur les calculs et les intervalles.L'argument facultatif
|
|
Renvoie l'écart type des données d'entrée pondéré avec les intervalles de temps entre les points. Voir Paramètres des fonctions pondérées dans le temps pour plus de détails sur les calculs et les intervalles. Le calcul utilise l'algorithme de calcul du dernier report observé pour les intervalles entre les points de données. Dans cette approche, le point de données est calculé comme la dernière valeur observée jusqu'au prochain horodatage du point de données d'entrée. Le poids est calculé sous la forme d'un intervalle de temps en secondes entre les points de données ou les limites des fenêtres. L'argument facultatif
Les formules suivantes sont utilisées pour le calcul où :
Équation pour l'écart type de la population : Équation pour l'écart type de fréquence : |
Le schéma suivant montre comment AWS IoT SiteWise les fonctions temporellesfirst
, last
earliest
latest
, et sont calculées par rapport à l'intervalle de temps actuel.
Note
L'intervalle de temps pour
first(x)
,last(x)
est (début de la fenêtre actuelle, fin de la fenêtre actuelle].L'intervalle de temps pour
latest(x)
est [début du temps, fin de la fenêtre actuelle].La plage de temps pour
earliest(x)
est (début de l'heure, fin de la fenêtre précédente).
Paramètres des fonctions pondérés dans le temps
Les fonctions pondérées dans le temps calculées pour la fenêtre d'agrégation prennent en compte les éléments suivants :
-
Points de données à l'intérieur de la fenêtre
-
Intervalles de temps entre les points de données
-
Dernier point de données avant la fenêtre
-
Premier point de données après la fenêtre (pour certains algorithmes)
Termes :
-
Point de données incorrect : tout point de données dont la qualité n'est pas bonne ou dont la valeur n'est pas numérique. Cela n'est pas pris en compte dans le calcul des résultats d'une fenêtre.
-
Intervalle incorrect — Intervalle après un point de données erroné. L'intervalle avant le premier point de données connu est également considéré comme un mauvais intervalle.
-
Bon point de données — Tout point de données présentant une bonne qualité et une bonne valeur numérique.
Note
-
AWS IoT SiteWise ne consomme des données
GOOD
de qualité que lorsqu'il calcule les transformations et les métriques. Il ignore les pointsUNCERTAIN
deBAD
données. -
L'intervalle avant le premier point de données connu est considéré comme un mauvais intervalle. Pour plus d’informations, consultez Tutoriels d'expression de formules.
L'intervalle après le dernier point de données connu se poursuit indéfiniment, affectant toutes les fenêtres suivantes. Lorsqu'un nouveau point de données arrive, la fonction recalcule l'intervalle.
Conformément aux règles ci-dessus, le résultat agrégé des fenêtres est calculé et limité aux limites des fenêtres. Par défaut, la fonction envoie le résultat de la fenêtre uniquement si l'ensemble de la fenêtre correspond à un bon intervalle.
Si l'intervalle de validité de la fenêtre est inférieur à la longueur de la fenêtre, la fonction n'envoie pas la fenêtre.
Lorsque les points de données affectant le résultat de la fenêtre changent, la fonction recalcule la fenêtre, même si les points de données se trouvent en dehors de la fenêtre.
Si la propriété d'entrée comporte au moins un point de données dans son historique et qu'un calcul a été lancé, la fonction calcule les fonctions d'agrégation pondérées dans le temps pour chaque intervalle de temps.
Exemple de scénario statetime
Prenons un exemple où vous avez une ressource avec les propriétés suivantes :
-
Idle
— Une mesure qui est0
ou1
. Lorsque la valeur est1
, la machine est inactive. -
Idle Time
— Mesure qui utilise la formulestatetime(Idle)
pour calculer la durée en secondes pendant laquelle la machine est inactive, par intervalle d'une minute.
La propriété Idle
possède les points de données suivants.
Horodatage | 2:00:00 PM | 2:00:30 PM | 2:01:15 PM | 2:02:45 PM | 2:04:00 PM |
Idle | 0 | 1 | 1 | 0 | 0 |
AWS IoT SiteWise calcule la Idle Time
propriété toutes les minutes à partir des valeurs deIdle
. Une fois ce calcul terminé, la propriété Idle Time
possède les points de données suivants.
Horodatage | 2:00:00 PM | 2:01:00 PM | 2:02:00 PM | 2:03:00 PM | 2:04:00 PM |
Idle Time | N/A | 30 | 60 | 45 | 0 |
AWS IoT SiteWise effectue les calculs suivants Idle Time
à la fin de chaque minute.
-
À 2:00 PM (pour 1:59 PM à 2:00 PM)
-
Il n'y a pas de données pour
Idle
avant 2:00 PM, donc aucun point de données n'est calculé.
-
-
À 2:01 PM (pour 2:00 PM à 2:01 PM)
-
À 2:00:00 PM, la machine est active (
Idle
est égal à0
). -
À 2:00:30 PM, la machine es inactive (
Idle
est égal à1
). -
Idle
ne change plus avant la fin de l'intervalle à 2:01:00 PM,Idle Time
est donc égal à 30 secondes.
-
-
À 2:02 PM (pour 2:01 PM à 2:02 PM)
-
À 2:01:00 PM, la machine est inactive (conformément au dernier point de données à 2:00:30 PM).
-
À 2:01:15 PM, la machine est toujours inactive.
-
Idle
ne change plus non plus avant la fin de l'intervalle à 2:02:00 PM,Idle Time
est donc égal à 60 secondes.
-
-
À 2:03 PM (pour 2:02 PM à 2:03 PM)
-
À 2:02:00 PM, la machine est inactive (conformément au dernier point de données à 2:01:15 PM).
-
À 2:02:45 PM, la machine est active.
-
Idle
ne change plus non plus avant la fin de l'intervalle à 2:03:00 PM,Idle Time
est donc égal à 45 secondes.
-
-
À 2:04 PM (pour 2:03 PM à 2:04 PM)
-
À 2:03:00 PM, la machine est active (conformément au dernier point de données à 2:02:45 PM).
-
Idle
ne change plus non plus avant la fin de l'intervalle à 2:04:00 PM,Idle Time
est donc égal à 0 seconde.
-
Exemple TimeWeightedAvg et TimeWeightedStDev scénario
Les tableaux suivants fournissent des exemples d'entrées et de sorties pour ces métriques de fenêtre d'une minute :Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x),
timeWeightedStDev(x, 'p')
.
Exemple de saisie pour une fenêtre agrégée d'une minute :
Note
Ces points de données sont tous GOOD
de qualité.
03:00:00 | 4.0 |
03:01:00 | 2.0 |
03:01:10 | 8.0 |
03:01:50 | 20.0 |
03:02:00 | 14,0 |
03:02:05 | 10,0 |
03:02:10 | 3.0 |
03:02:30 | 20.0 |
03:03:30 | 0.0 |
Résultats agrégés en sortie :
Note
Aucun — Résultat non produit pour cette fenêtre.
Heure | Avg(x) |
TimeWeightedAvg(x) |
TimeWeightedAvg(X, "linear") |
stDev(X) |
timeWeightedStDev(x) |
timeWeightedStDev(x, 'p') |
---|---|---|---|---|---|---|
3:00:00 | 4 | Aucun | Aucun | 0 | Aucun | Aucun |
3:01:00 | 2 | 4 | 3 | 0 | 0 | 0 |
3:02:00 | 14 | 9 | 13 | 6 | 5,430610041581775 | 5,385164807134504 |
3:03:00 | 11 | 13 | 12,875 | 8,54400374531753 | 7,724054437220943 | 7,659416862050705 |
3:04:00 | 0 USD | 10 | 2,5 | 0 | 10,084389681792215 | 10 |
3:05:00 | Aucun | 0 | 0 | Aucun | 0 | 0 |
Utiliser des fonctions temporelles dans les transformations
Dans les transformations uniquement, vous pouvez utiliser la pretrigger()
fonction pour récupérer la valeur de GOOD
qualité d'une variable avant la mise à jour de propriété qui a lancé le calcul de transformation en cours.
Prenons l'exemple d'un fabricant AWS IoT SiteWise qui surveille l'état d'une machine. Le fabricant utilise les mesures et transformations suivantes pour représenter le processus :
-
Une mesure
current_state
, qui peut être 0 ou 1.-
Si la machine est en état de nettoyage,
current_state
égal à 1. -
Si la machine est en cours de fabrication,
current_state
est égal à 0.
-
-
Une transformation
cleaning_state_duration
, c'est égal à çaif(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)
. Cette transformation renvoie la durée pendant laquelle la machine est restée en état de nettoyage en secondes, au format Unix Epoch. Pour plus d'informations, consultez Utiliser des fonctions conditionnelles dans les expressions de formule et la fonction timestamp ().
Si la machine reste en état de nettoyage plus longtemps que prévu, le fabricant peut examiner la machine.
Vous pouvez également utiliser la pretrigger()
fonction dans des transformations multivariées. Par exemple, vous avez deux mesures nommées x
ety
, et une transformationz
, égale àx + y +
pretrigger(y)
. Le tableau suivant indique les valeurs pour x
y
, et z
entre 9 h 00 et 9 h 15.
Note
-
Cet exemple suppose que les valeurs des mesures arrivent par ordre chronologique. Par exemple, la valeur de
x
pour 9 h 00 arrive avant la valeur dex
pour 9 h 05. -
Si les points de données de 9 h 05 arrivent avant les points de données de 9 h 00, cela
z
n'est pas calculé à 9 h 05. -
Si la valeur de
x
pour 9 h 05 arrive avant la valeur dex
pour 9 h 00 et que les valeurs dey
arrivent chronologiquement,z
est égale22 = 20 + 1 + 1
à 9 h 05.
9 H 00 | 9 H 05 | 9 H 10 | 9 H 15 | |
---|---|---|---|---|
|
10 |
20 |
30 |
|
|
1 |
2 |
3 |
|
|
|
23 = 20 + 2 + 1
|
25 = 20 + 3 + 2
|
36 = 30 + 3 + 3
|