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 earliestlatest, 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 de bonne qualité et de bonne valeur numérique.
Note
-
AWS IoT SiteWise ne consomme des données
GOODde qualité que lorsqu'il calcule les transformations et les métriques. Il ignore les pointsUNCERTAINdeBADdonné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 est0ou1. 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
Idleavant 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 (
Idleest égal à0). -
À 2:00:30 PM, la machine es inactive (
Idleest égal à1). -
Idlene change plus avant la fin de l'intervalle à 2:01:00 PM,Idle Timeest 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.
-
Idlene change plus non plus avant la fin de l'intervalle à 2:02:00 PM,Idle Timeest 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.
-
Idlene change plus non plus avant la fin de l'intervalle à 2:03:00 PM,Idle Timeest 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).
-
Idlene change plus non plus avant la fin de l'intervalle à 2:04:00 PM,Idle Timeest 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 | Aucune | Aucune | 0 | Aucune | Aucune |
| 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 | Aucune | 0 | 0 | Aucune | 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_stateest égal à 0.
-
-
Une transformation
cleaning_state_duration, ça équivaut àif(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 xy, 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
xpour 9 h 00 arrive avant la valeur dexpour 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
zn'est pas calculé à 9 h 05. -
Si la valeur de
xpour 9 h 05 arrive avant la valeur dexpour 9 h 00 et que les valeurs deyarrivent chronologiquement,zest é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
|