

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Definición de propiedades de datos
<a name="asset-properties"></a>

Las *propiedades de activo* son las estructuras dentro de cada activo que contienen datos del activo. Las propiedades de un activo pueden ser cualquiera de los siguientes tipos:
+ **Atributos**: las propiedades generalmente estáticas de un activo, como el fabricante del dispositivo o la región geográfica. Para obtener más información, consulte [Definición de datos estáticos (atributos)](attributes.md).
+ **Mediciones**: flujos de datos sin procesar de un activo procedentes del sensor de un dispositivo, como los valores de velocidad de rotación con marca temporal o los valores de temperatura en grados Celsius con marca temporal. Una medida se define mediante un alias de flujo de datos. Para obtener más información, consulte [Definición de flujos de datos procedentes del equipo (mediciones)](measurements.md).
+ **Transformaciones**: valores de serie temporal de un activo transformados, como los valores de temperatura en grados Fahrenheit con marca temporal. Una transformación se define por una expresión y las variables que se consumen con esa expresión. Para obtener más información, consulte [Datos de transformación (transformaciones)](transforms.md).
+ **Métricas**: los datos de un activo agregados durante un intervalo de tiempo específico, como la temperatura media por hora. Una métrica se define mediante un intervalo de tiempo, una expresión y las variables que se consumen con esa expresión. Las expresiones métricas pueden introducir las propiedades métricas de los activos asociados, para que pueda calcular las métricas que representan su operación o un subconjunto de la misma. Para obtener más información, consulte [Agregación de datos desde propiedades y otros activos (métricas)](metrics.md).

Para obtener más información, consulte [Cree modelos de activos en AWS IoT SiteWise](create-asset-models.md).

Para obtener un ejemplo de cómo utilizar mediciones, transformaciones y métricas para calcular la efectividad global del equipo (OEE), consulte [Calcule el OEE en AWS IoT SiteWise](calculate-oee.md).

**Topics**
+ [Definición de datos estáticos (atributos)](attributes.md)
+ [Definición de flujos de datos procedentes del equipo (mediciones)](measurements.md)
+ [Datos de transformación (transformaciones)](transforms.md)
+ [Agregación de datos desde propiedades y otros activos (métricas)](metrics.md)
+ [Uso de expresiones de fórmula](formula-expressions.md)

# Definición de datos estáticos (atributos)
<a name="attributes"></a>

Los *atributos de activos* representan información que generalmente es estática, como el fabricante del dispositivo o la ubicación geográfica. Cada activo creado a partir de un modelo de activos contiene los atributos de dicho modelo.

**Topics**
+ [Definición de atributos (consola)](#define-attributes-console)
+ [Definición de atributos (AWS CLI)](#define-attributes-cli)

## Definición de atributos (consola)
<a name="define-attributes-console"></a>

Al definir un atributo para un modelo de activos en la AWS IoT SiteWise consola, se especifican los siguientes parámetros:
+ <a name="asset-property-name-console"></a>**Nombre**: el nombre de la propiedad.
+ **Valor predeterminado** – (Opcional) El valor predeterminado de este atributo. Los activos creados a partir del modelo tienen este valor para el atributo. Para obtener más información acerca de cómo reemplazar el valor por defecto en un activo creado a partir de un modelo, consulte [Actualización de valores de atributos](update-attribute-values.md).
+ <a name="asset-property-data-type-console"></a>**Tipo de datos**: el tipo de datos de la propiedad, que es uno de los siguientes:
  + **Cadena** – Una cadena con hasta 1024 bytes.
  + **Entero** – Un entero de 32 bits con signo con rango [-2.147.483.648, 2.147.483.647].
  + **Doble** – Un número de punto flotante con rango [-10^100, 10^100] e IEEE 754 doble precisión.
  + **Booleano**: `true` o `false`.
+ **ID externo**: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.

Para obtener más información, consulte [Creación de un modelo de activos (consola)](create-asset-models.md#create-asset-model-console).

## Definición de atributos (AWS CLI)
<a name="define-attributes-cli"></a>

Al definir un atributo para un modelo de activos con la AWS IoT SiteWise API, se especifican los siguientes parámetros:
+ <a name="asset-property-name-cli"></a>`name`: el nombre de la propiedad.
+ `defaultValue` – (Opcional) El valor predeterminado de este atributo. Los activos creados a partir del modelo tienen este valor para el atributo. Para obtener más información acerca de cómo reemplazar el valor por defecto en un activo creado a partir de un modelo, consulte [Actualización de valores de atributos](update-attribute-values.md).
+ <a name="asset-property-data-type-cli"></a>`dataType`: el tipo de datos de la propiedad, que es uno de los siguientes:
  + `STRING` – Una cadena con hasta 1024 bytes.
  + `INTEGER`: un entero de 32 bits con signo con rango [-2.147.483.648, 2.147.483.647].
  + `DOUBLE`: un número de punto flotante con rango [-10^100, 10^100] e IEEE 754 doble precisión.
  + `BOOLEAN` – `true` o `false`.
+ `externalId`: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.

**Example Definición de atributo de ejemplo**  
En el ejemplo siguiente se muestra un atributo que representa el número de modelo de un activo con un valor predeterminado. Este objeto es un ejemplo de un objeto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contiene un [atributo](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Attribute.html). Puede especificar este objeto como parte de la carga de solicitud de [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para crear una propiedad de atributo. Para obtener más información, consulte [Creación de un modelo de activos (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
...
"assetModelProperties": [
{
  "name": "Model number",
  "dataType": "STRING",
  "type": {
    "attribute": {
      "defaultValue": "BLT123"
    }
  }
}
],
...
}
```

# Definición de flujos de datos procedentes del equipo (mediciones)
<a name="measurements"></a>

Una *medición* representa el flujo de datos sin formato del sensor de un dispositivo, como los valores de temperatura con marca de tiempo o los valores de revoluciones por minuto (RPM) con marca de tiempo.

**Topics**
+ [Definición de mediciones (consola)](#define-measurements-console)
+ [Definición de mediciones (AWS CLI)](#define-measurements-cli)

## Definición de mediciones (consola)
<a name="define-measurements-console"></a>

Al definir una medida para un modelo de activos en la AWS IoT SiteWise consola, se especifican los siguientes parámetros:
+ <a name="asset-property-name-console"></a>**Nombre**: el nombre de la propiedad.
+ <a name="asset-property-unit-console"></a>**Unidad**: (opcional) la unidad científica de la propiedad, como mm o Celsius.
+ <a name="asset-property-data-type-console"></a>**Tipo de datos**: el tipo de datos de la propiedad, que es uno de los siguientes:
  + **Cadena** – Una cadena con hasta 1024 bytes.
  + **Entero** – Un entero de 32 bits con signo con rango [-2.147.483.648, 2.147.483.647].
  + **Doble** – Un número de punto flotante con rango [-10^100, 10^100] e IEEE 754 doble precisión.
  + **Booleano**: `true` o `false`.
+ **ID externo**: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.

Para obtener más información, consulte [Creación de un modelo de activos (consola)](create-asset-models.md#create-asset-model-console).

## Definición de mediciones (AWS CLI)
<a name="define-measurements-cli"></a>

Al definir una medición para un modelo de activos con la AWS IoT SiteWise API, se especifican los siguientes parámetros:
+ <a name="asset-property-name-cli"></a>`name`: el nombre de la propiedad.
+ <a name="asset-property-data-type-cli"></a>`dataType`: el tipo de datos de la propiedad, que es uno de los siguientes:
  + `STRING` – Una cadena con hasta 1024 bytes.
  + `INTEGER`: un entero de 32 bits con signo con rango [-2.147.483.648, 2.147.483.647].
  + `DOUBLE`: un número de punto flotante con rango [-10^100, 10^100] e IEEE 754 doble precisión.
  + `BOOLEAN` – `true` o `false`.
+ <a name="asset-property-unit-cli"></a>`unit`: (opcional) la unidad científica de la propiedad, como mm o Celsius.
+ `externalId`: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.

**Example Definición de medida de ejemplo**  
En el ejemplo siguiente se muestra una medición que representa las lecturas del sensor de temperatura de un activo. Este objeto es un ejemplo de un objeto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contiene una [medición](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html). Puede especificar este objeto como parte de la carga de la solicitud de [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para crear una propiedad de medición. Para obtener más información, consulte [Creación de un modelo de activos (AWS CLI)](create-asset-models.md#create-asset-model-cli).  
La estructura [Medida](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html) es una estructura vacía cuando define un modelo de activos, ya que más adelante configurará cada activo para que utilice flujos de datos de dispositivos únicos. Para obtener más información acerca de cómo conectar la propiedad de medición de un activo al flujo de datos del sensor de un dispositivo, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).  

```
{
      ...
      "assetModelProperties": [
      {
          "name": "Temperature C",
          "dataType": "DOUBLE",
          "type": {
              "measurement": {}
          },
          "unit": "Celsius"
      }
  ],
      ...
}
```

# Datos de transformación (transformaciones)
<a name="transforms"></a>

Las *transformaciones* son expresiones matemáticas que asignan puntos de datos de la propiedad de un activo de un formulario a otro. Una expresión de transformación consta de variables de propiedad de activos, literales, operadores y funciones comunes. Los puntos de datos transformados mantienen una one-to-one relación con los puntos de datos de entrada. AWS IoT SiteWise calcula un nuevo punto de datos transformado cada vez que alguna de las propiedades de entrada recibe un nuevo punto de datos.

**nota**  
En el caso de las actualizaciones de propiedades con la misma marca de tiempo, es posible que las actualizaciones de otras propiedades entrantes sobrescriban los valores de salida.

Por ejemplo, si su activo tiene un flujo de medición de temperatura denominado `Temperature_C` con unidades en Celsius, puede convertir cada punto de datos a Fahrenheit con la fórmula `Temperature_F = 9/5 * Temperature_C + 32`. Cada vez que AWS IoT SiteWise recibe un punto de datos en el flujo de `Temperature_C` medición, el `Temperature_F` valor correspondiente se calcula en unos segundos y está disponible como `Temperature_F` propiedad.

Si la transformación contiene más de una variable, el punto de datos que llegue antes inicia el cálculo inmediatamente. Considere un ejemplo en el que un fabricante de piezas utiliza una transformación para monitorear la calidad del producto. Aplicando estándares diferentes según el tipo de pieza, el fabricante utiliza las siguientes mediciones para representar el proceso:
+ `Part_Number`: cadena que identifica el tipo de pieza.
+ `Good_Count`: número entero que aumenta en uno si la pieza cumple el estándar.
+ `Bad_Count`: número entero que aumenta en uno si la pieza no cumple el estándar.

El fabricante crea además una transformación `Quality_Monitor`, que equivale a ` if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")`.

Esta transformación monitorea el porcentaje de piezas defectuosas producidas para un tipo de pieza específico. Si el número de pieza es BLT123 y el porcentaje de piezas defectuosas supera el 10 por ciento (0,1), la transformación vuelve`"Caution"`. De lo contrario, la transformación devuelve el mensaje `"Normal"`.

**nota**  
Si `Part_Number` recibe un nuevo punto de datos antes que otras mediciones, la transformación de `Quality_Monitor` utiliza el nuevo valor de `Part_Number` y los valores de `Good_Count` y `Bad_Count` más recientes. Para evitar errores, reinicie `Good_Count` y `Bad_Count` antes de la siguiente ronda de fabricación.
Utilice [las métricas](metrics.md) si quiere evaluar las expresiones solo después de que todas las variables hayan recibido nuevos puntos de datos.

**Topics**
+ [Definición de transformaciones (consola)](#define-transforms-console)
+ [Definición de transformaciones (AWS CLI)](#define-transform-cli)

## Definición de transformaciones (consola)
<a name="define-transforms-console"></a>

Al definir una transformación para un modelo de activos en la AWS IoT SiteWise consola, se especifican los siguientes parámetros:
+ <a name="asset-property-name-console"></a>**Nombre**: el nombre de la propiedad.
+ <a name="asset-property-unit-console"></a>**Unidad**: (opcional) la unidad científica de la propiedad, como mm o Celsius.
+ **Tipo de datos**: el tipo de datos de la transformación, que puede ser **Doble** o **Cadena**.
+ **ID externo**: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.
+ **Fórmula**: la expresión de transformación. Las expresiones de transformación no pueden usar funciones de agregación ni funciones temporales. Para abrir la característica de autocompletar empiece a escribir o presione la tecla abajo. Para obtener más información, consulte [Uso de expresiones de fórmula](formula-expressions.md).
**importante**  <a name="transform-input-rules"></a>
Las transformaciones pueden agregar propiedades de tipo entero, doble, booleano o cadena. Los valores booleanos se convierten en `0` (falso) y `1` (verdadero).  
Las transformaciones deben especificar una o más propiedades que no sean atributos y cualquier número de propiedades de atributo. AWS IoT SiteWise calcula un nuevo punto de datos transformado cada vez que la propiedad de entrada de no atributo recibe un nuevo punto de datos. Los nuevos valores de atributo no inician actualizaciones de transformación. La misma tasa de solicitudes para las operaciones de la API de datos de propiedades de activos se aplica a los resultados del cálculo de transformaciones.  
<a name="formula-output-rules"></a>Las expresiones de fórmula solo pueden generar valores dobles o de cadena. Las expresiones anidadas pueden generar otros tipos de datos, como cadenas, pero la fórmula en su conjunto debe evaluarse como un número o una cadena. Puede usar la [función jp](expression-string-functions.md#jp-definition) para convertir una cadena en un número. El valor booleano debe ser 1 (verdadero) o 0 (falso). Para obtener más información, consulte [Valores indefinidos, infinitos y de desbordamiento](expression-tutorials.md#undefined-values).

Para obtener más información, consulte [Creación de un modelo de activos (consola)](create-asset-models.md#create-asset-model-console).

## Definición de transformaciones (AWS CLI)
<a name="define-transform-cli"></a>

Al definir una transformación para un modelo de activos con la AWS IoT SiteWise API, se especifican los siguientes parámetros:
+ <a name="asset-property-name-cli"></a>`name`: el nombre de la propiedad.
+ <a name="asset-property-unit-cli"></a>`unit`: (opcional) la unidad científica de la propiedad, como mm o Celsius.
+ `dataType`: el tipo de datos de la transformación, que debe ser `DOUBLE` o `STRING`.
+ `externalId`: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.
+ `expression` – Una expresión de transformación. Las expresiones de transformación no pueden usar funciones de agregación ni funciones temporales. Para obtener más información, consulte [Uso de expresiones de fórmula](formula-expressions.md).
+ `variables` – Una lista de variables que define las otras propiedades del activo que se van a utilizar en la expresión. Cada estructura de variable contiene un nombre sencillo para utilizar en la expresión y una estructura de `value` que identifica qué propiedad vincular a esa variable. La estructura `value` contiene la siguiente información:
  + `propertyId`: el ID de la propiedad desde la que se van a introducir los valores. Puede usar el nombre de la propiedad en lugar de su ID.
**importante**  <a name="transform-input-rules"></a>
Las transformaciones pueden agregar propiedades de tipo entero, doble, booleano o cadena. Los valores booleanos se convierten en `0` (falso) y `1` (verdadero).  
Las transformaciones deben especificar una o más propiedades que no sean atributos y cualquier número de propiedades de atributo. AWS IoT SiteWise calcula un nuevo punto de datos transformado cada vez que la propiedad de entrada de no atributo recibe un nuevo punto de datos. Los nuevos valores de atributo no inician actualizaciones de transformación. La misma tasa de solicitudes para las operaciones de la API de datos de propiedades de activos se aplica a los resultados del cálculo de transformaciones.  
<a name="formula-output-rules"></a>Las expresiones de fórmula solo pueden generar valores dobles o de cadena. Las expresiones anidadas pueden generar otros tipos de datos, como cadenas, pero la fórmula en su conjunto debe evaluarse como un número o una cadena. Puede usar la [función jp](expression-string-functions.md#jp-definition) para convertir una cadena en un número. El valor booleano debe ser 1 (verdadero) o 0 (falso). Para obtener más información, consulte [Valores indefinidos, infinitos y de desbordamiento](expression-tutorials.md#undefined-values).

**Example definición de transformación**  
El siguiente ejemplo muestra una propiedad de transformación que convierte los datos de medición de temperatura de un activo de Celsius a Fahrenheit. Este objeto es un ejemplo de un objeto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contiene una [transformación](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Transform.html). Puede especificar este objeto como parte de la carga de la solicitud de [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para crear una propiedad de transformación. Para obtener más información, consulte [Creación de un modelo de activos (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
...
"assetModelProperties": [
...
{
  "name": "Temperature F",
  "dataType": "DOUBLE",
  "type": {
    "transform": {
      "expression": "9/5 * temp_c + 32",
      "variables": [
        {
          "name": "temp_c",
          "value": {
            "propertyId": "Temperature C"
          }
        }
      ]
    }
  },
  "unit": "Fahrenheit"
}
],
...
}
```

**Example definición de transformación que contiene tres variables**  
El siguiente ejemplo muestra una propiedad de transformación que devuelve un mensaje de advertencia (`"Caution"`) si más del 10 por ciento de las BLT123 piezas no cumplen el estándar. De lo contrario, devuelve un mensaje informativo (`"Normal"`).  

```
{
...
"assetModelProperties": [
...
{
"name": "Quality_Monitor",
"dataType": "STRING",
"type": {
    "transform": {
        "expression": "if(eq(Part_Number,"BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")",
        "variables": [
            {
                "name": "Part_Number",
                "value": {
                    "propertyId": "Part Number"
                }
            },
            {
                "name": "Good_Count",
                "value": {
                    "propertyId": "Good Count"
                }
            },
            {
                "name": "Bad_Count",
                "value": {
                    "propertyId": "Bad Count"
                }
            }
        ]
    }
}
}
...
}
```

# Agregación de datos desde propiedades y otros activos (métricas)
<a name="metrics"></a>

Las métricas son expresiones matemáticas que utilizan funciones agregadas para procesar todos los puntos de datos de entrada y generar un único punto de datos por intervalo de tiempo especificado. Por ejemplo, una métrica puede calcular la temperatura media por hora a partir de un flujo de datos de temperatura.

Las métricas pueden agregar datos de métricas de activos asociados, de modo que puede calcular estadísticas que proporcionan información sobre la operación o un subconjunto de la operación. Por ejemplo, una métrica puede calcular la temperatura media por hora en todas las turbinas eólicas de un parque eólico. Para obtener más información acerca de cómo definir asociaciones entre activos, consulte [Definición de jerarquías de modelos de activos](define-asset-hierarchies.md).

Las métricas también pueden introducir datos de otras propiedades sin agregar datos en cada intervalo de tiempo. Si se especifica un [atributo](attributes.md) en una fórmula, AWS IoT SiteWise utiliza el valor [más reciente](expression-temporal-functions.md#latest-definition) de ese atributo al calcular la fórmula. Si especifica una métrica en una fórmula, AWS IoT SiteWise utiliza el [último](expression-temporal-functions.md#last-definition) valor del intervalo de tiempo durante el que calcula la fórmula. Esto significa que se pueden definir métricas como `OEE = Availability * Quality * Performance`, donde `Availability`, `Quality` y `Performance` son todas las demás métricas en el mismo modelo de activos.

AWS IoT SiteWise también calcula automáticamente un conjunto de métricas de agregación básicas para todas las propiedades de los activos. Para reducir los costos de cálculo, puede utilizar estos agregados en lugar de definir métricas personalizadas para cálculos básicos. Para obtener más información, consulte [La propiedad del activo de consulta se agrega en AWS IoT SiteWise](aggregates.md).

**Topics**
+ [Definición de métricas (consola)](#define-metrics-console)
+ [Definición de métricas (AWS CLI)](#define-metrics-cli)

## Definición de métricas (consola)
<a name="define-metrics-console"></a>

Al definir una métrica para un modelo de activos en la AWS IoT SiteWise consola, se especifican los siguientes parámetros:
+ <a name="asset-property-name-console"></a>**Nombre**: el nombre de la propiedad.
+ **Tipo de datos**: el tipo de datos de la transformación, que puede ser **Doble** o **Cadena**.
+ **ID externo**: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.
+ **Fórmula**: la expresión métrica. Las expresiones métricas pueden utilizar [funciones de agregación](expression-aggregation-functions.md) para introducir datos de una propiedad para todos los activos asociados en una jerarquía. Comience a escribir o presione la tecla de flecha hacia abajo para abrir la característica de autocompletar. Para obtener más información, consulte [Uso de expresiones de fórmula](formula-expressions.md).
**importante**  <a name="metric-input-rules"></a>
Las métricas solo pueden agregar propiedades de tipo entero, doble, booleano o cadena. Los valores booleanos se convierten en `0` (falso) y `1` (verdadero).  
Si define variables de entrada de métrica en la expresión de una métrica, esas entradas deben tener el mismo intervalo de tiempo que la métrica de salida.  
<a name="formula-output-rules"></a>Las expresiones de fórmula solo pueden generar valores dobles o de cadena. Las expresiones anidadas pueden generar otros tipos de datos, como cadenas, pero la fórmula en su conjunto debe evaluarse como un número o una cadena. Puede usar la [función jp](expression-string-functions.md#jp-definition) para convertir una cadena en un número. El valor booleano debe ser 1 (verdadero) o 0 (falso). Para obtener más información, consulte [Valores indefinidos, infinitos y de desbordamiento](expression-tutorials.md#undefined-values).
+ **Intervalo de tiempo** – Un intervalo de tiempo de métrica. <a name="metric-window-info"></a>AWS IoT SiteWise admite los siguientes intervalos de tiempo con periodos de saltos, donde cada intervalo comienza cuando termina el anterior:
  + **1 minuto**: <a name="metric-window-1m"></a>1 minuto, calculado al final de cada minuto (00:00:00 h, 00:01:00 h, 00:02:00 h, etc.).
  + **5 minutos**: <a name="metric-window-5m"></a>5 minutos, calculados al final de cada cinco minutos a partir de la hora en punto (00:00:00 h., 00:05:00 h., 00:10:00 h, etc.).
  + **15 minutos** – <a name="metric-window-15m"></a>15 minutos, calculados al final de cada quince minutos a partir de la hora en punto (00:00:00 h., 00:15:00 h., 00:30:00 h, etc.).
  + **1 hora**: <a name="metric-window-1h"></a>1 hora (60 minutos), calculados al final de cada hora en UTC (00:00:00 h, 01:00:00 h, 02:00:00 h, etc.).
  + **1 día**: <a name="metric-window-1d"></a>1 día (24 horas), calculado al final de cada día en UTC (00:00:00 h del lunes, 00:00:00 h del martes, etc.).
  + **1 semana**: <a name="metric-window-1w"></a>1 semana (7 días), calculada al final de cada domingo en UTC (todos los lunes a las 00:00:00 h).
  + **Intervalo personalizado**: puede escribir cualquier intervalo de tiempo entre un minuto y una semana.
+ **Desplazamiento de la fecha**: (opcional) la fecha de referencia a partir de la cual se agregan los datos.
+ **Desplazamiento de la hora** – (Opcional) la hora de referencia a partir de la cual se agregan los datos. El desplazamiento de la hora debe estar comprendido entre las 00:00:00 y las 23:59:59.
+ **Desplazamiento de la zona horaria**: (opcional) la zona horaria de referencia. Si no se especifica, el desplazamiento predeteminado de la zona horaria es la hora universal coordinada (UTC). Consulte las siguientes zonas horarias compatibles.

### Zonas horarias admitidas
<a name="supported-time-zones"></a>
+ (UTC\$100:00) Hora universal coordinada
+ (UTC\$101:00) Hora central europea
+ (UTC\$102:00) Europa del Este
+ (UTC03\$1:00) Hora de África Oriental
+ (UTC\$104:00) Hora de Oriente Próximo
+ (UTC\$105:00) Hora de Lahore (Pakistán)
+ (UTC\$105:30) Hora estándar de India
+ (UTC\$106:00) Hora estándar de Bangladesh
+ (UTC\$107:00) Hora estándar de Vietnam
+ (UTC\$108:00) Hora de China Taiwán
+ (UTC\$109:00) Hora estándar de Japón
+ (UTC\$109:30) Hora central de Australia
+ (UTC\$110:00) Hora del Este de Australia
+ (UTC\$111:00) Hora estándar de Salomón
+ (UTC\$112:00) Hora estándar de Nueva Zelanda
+ (UTC-11:00) Hora de las Islas Midway
+ (UTC-10:00) Hora estándar de Hawái
+ (UTC-09:00) Hora estándar de Alaska
+ (UTC-08:00) Hora estándar del Pacífico
+ (UTC-07:00) Hora estándar de Phoenix
+ (UTC-06:00) Hora estándar central
+ (UTC-05:00) Hora Estándar del Este
+ (UTC-04:00) Hora de Puerto Rico y las Islas Vírgenes de los Estados Unidos
+ (UTC-03:00) Hora estándar de Argentina
+ (UTC-02:00) Hora de Georgia del Sur
+ (UTC-01:00) Hora de África Central

**Example intervalo de tiempo personalizado con un desplazamiento (consola)**  
El siguiente ejemplo muestra cómo definir un intervalo de tiempo de 12 horas con un desplazamiento el 20 de febrero de 2021 a las 18:30:30 h (Hora del Pacífico).  

**Para definir un intervalo personalizado con un desplazamiento**

1. En **Intervalo de tiempo**, elija **Intervalo personalizado**.

1. Para **Intervalo de tiempo**, realice una de las siguientes acciones:
   + Escriba **12** y, a continuación, elija **horas**.
   + Escriba **720** y, a continuación, elija **minutos**.
   + Escriba **43200** y, a continuación, elija **segundos**.
**importante**  
El **Intervalo de tiempo** debe ser un número entero, independientemente de cuál sea la unidad.

1. En **Desplazamiento de la fecha**, elija **20/02/2021**.

1. En **Desplazamiento de la hora**, escriba **18:30:30**.

1. Para el **Desplazamiento de la zona horaria**, elija **(UTC-08:00), hora estándar del Pacífico**.
Si crea la métrica el 1 de julio de 2021, a las 18:30:30 (Hora del Pacífico) o antes, obtendrá el primer resultado de agregación el 1 de julio de 2021 a las 18:30:30 (Hora del Pacífico). El segundo resultado de la agregación se produce el 2 de julio de 2021 a las 06:30:30 (Hora del Pacífico) y así sucesivamente.

## Definición de métricas (AWS CLI)
<a name="define-metrics-cli"></a>

Al definir una métrica para un modelo de activos con la AWS IoT SiteWise API, se especifican los siguientes parámetros:
+ <a name="asset-property-name-cli"></a>`name`: el nombre de la propiedad.
+ `dataType`: el tipo de datos de la métrica, que puede ser `DOUBLE` o `STRING`.
+ `externalId`: (opcional) es un ID definido por el usuario. Para obtener más información, consulte [Objetos de referencia con objetos externos IDs](object-ids.md#external-id-references) en la *Guía del usuario de AWS IoT SiteWise *.
+ `expression`: la expresión métrica. Las expresiones métricas pueden utilizar [funciones de agregación](expression-aggregation-functions.md) para introducir datos de una propiedad para todos los activos asociados en una jerarquía. Para obtener más información, consulte [Uso de expresiones de fórmula](formula-expressions.md).
+ `window`: el intervalo de tiempo y el desplazamiento de la ventana de saltos de la métrica, donde cada intervalo comienza cuando termina el anterior:
  + `interval`: el intervalo de tiempo para la ventana de caída. El intervalo de tiempo debe estar comprendido entre un minuto y una semana.
  + `offsets`: el desvío de la ventana de caída. 

  Para obtener más información, consulta [TumblingWindow](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TumblingWindow.html) en la *AWS IoT SiteWise Referencia de la API de *.  
**Example intervalo de tiempo personalizado con un desplazamiento (AWS CLI)**  

  El siguiente ejemplo muestra cómo definir un intervalo de tiempo de 12 horas con un desplazamiento el 20 de febrero de 2021 a las 18:30:30 h (Hora del Pacífico).

  ```
  {
      "window": {
          "tumbling": {
              "interval": "12h",
              "offset": " 2021-07-23T18:30:30-08"
          }
      }
  }
  ```

  Si crea la métrica el 1 de julio de 2021, a las 18:30:30 (Hora del Pacífico) o antes, obtendrá el primer resultado de agregación el 1 de julio de 2021 a las 18:30:30 (Hora del Pacífico). El segundo resultado de la agregación se produce el 2 de julio de 2021 a las 06:30:30 (Hora del Pacífico) y así sucesivamente.
+ `variables`: una lista de variables que define las otras propiedades del activo o los activos secundarios que se van a utilizar en la expresión. Cada estructura de variable contiene un nombre sencillo para su uso en la expresión y una estructura `value` que identifica qué propiedad vincular a esa variable. La estructura `value` contiene la siguiente información:
  + `propertyId`: el ID de la propiedad desde la cual se extraen los valores. Puede utilizar el nombre de la propiedad en lugar de su identificador si la propiedad está definida en el modelo actual (en lugar de definirse en un modelo de una jerarquía).
  + `hierarchyId`: (opcional) el ID de la jerarquía desde la que se consultan las entidades secundarias de la propiedad. Puede utilizar el nombre de la definición de jerarquía en lugar de su ID. Si omite este valor, AWS IoT SiteWise busca la propiedad en el modelo actual.
**importante**  <a name="metric-input-rules"></a>
Las métricas solo pueden agregar propiedades de tipo entero, doble, booleano o cadena. Los valores booleanos se convierten en `0` (falso) y `1` (verdadero).  
Si define variables de entrada de métrica en la expresión de una métrica, esas entradas deben tener el mismo intervalo de tiempo que la métrica de salida.  
<a name="formula-output-rules"></a>Las expresiones de fórmula solo pueden generar valores dobles o de cadena. Las expresiones anidadas pueden generar otros tipos de datos, como cadenas, pero la fórmula en su conjunto debe evaluarse como un número o una cadena. Puede usar la [función jp](expression-string-functions.md#jp-definition) para convertir una cadena en un número. El valor booleano debe ser 1 (verdadero) o 0 (falso). Para obtener más información, consulte [Valores indefinidos, infinitos y de desbordamiento](expression-tutorials.md#undefined-values).
+ <a name="asset-property-unit-cli"></a>`unit`: (opcional) la unidad científica de la propiedad, como mm o Celsius.

**Example Definición de métrica de ejemplo**  
En el ejemplo siguiente se muestra una propiedad de métrica que agrega los datos de medición de temperatura de un activo para calcular la temperatura máxima por hora en Fahrenheit. Este objeto es un ejemplo de un objeto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contiene una [métrica](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html). Puede especificar este objeto como parte de la carga de la solicitud de [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para crear una propiedad de métrica. Para obtener más información, consulte [Creación de un modelo de activos (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
      ...
      "assetModelProperties": [
      ...
      {
        "name": "Max temperature",
        "dataType": "DOUBLE",
        "type": {
          "metric": {
            "expression": "max(temp_f)",
            "variables": [
              {
                "name": "temp_f",
                "value": {
                  "propertyId": "Temperature F"
                }
              }
            ],
            "window": {
              "tumbling": {
                "interval": "1h"
              }
            }
          }
        },
        "unit": "Fahrenheit"
      }
    ],
    ...
}
```

**Example Ejemplo de definición de métrica que introduce datos procedentes de los activos asociados**  
El siguiente ejemplo muestra una propiedad métrica que agrega los datos de potencia media de varias turbinas eólicas para calcular la potencia media total de un parque eólico. Este objeto es un ejemplo de un objeto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contiene una [métrica](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html). Puede especificar este objeto como parte de la carga de la solicitud de [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para crear una propiedad de métrica.   

```
{
      ...
      "assetModelProperties": [
      ...
      {
          "name": "Total Average Power",
          "dataType": "DOUBLE",
          "type": {
            "metric": {
              "expression": "avg(power)",
              "variables": [
                {
                  "name": "power",
                  "value": {
                    "propertyId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
                    "hierarchyId": "Turbine Asset Model"
                  }
                }
              ],
              "window": {
                "tumbling": {
                  "interval": "5m"
                }
              }
            }
        },
        "unit": "kWh"
      }
    ],
    ...
}
```

# Uso de expresiones de fórmula
<a name="formula-expressions"></a>

Con las expresiones de fórmula, puede definir las funciones matemáticas para transformar y agregar los datos industriales sin procesar para obtener información sobre su operación. Las expresiones de fórmula combinan literales, operadores, funciones y variables para procesar datos. Para obtener más información acerca de cómo definir propiedades de activos que utilizan expresiones de fórmula, consulte [Datos de transformación (transformaciones)](transforms.md) y [Agregación de datos desde propiedades y otros activos (métricas)](metrics.md). Las transformaciones y las métricas son propiedades de la fórmula.

**Topics**
+ [Uso de variables en expresiones de fórmula](expression-variables.md)
+ [Uso de literales en expresiones de fórmula](expression-literals.md)
+ [Uso de operadores en expresiones de fórmula](expression-operators.md)
+ [Uso de constantes en expresiones de fórmula](expression-constants.md)
+ [Uso de funciones en expresiones de fórmula](expression-functions.md)
+ [Tutoriales de expresiones de fórmula](expression-tutorials.md)

# Uso de variables en expresiones de fórmula
<a name="expression-variables"></a>

Las variables representan las propiedades AWS IoT SiteWise de los activos en las expresiones de fórmula. Utilice variables para introducir valores de otras propiedades de activos en sus expresiones, de modo que pueda procesar datos de propiedades constantes ([atributos](attributes.md)), flujos de datos sin procesar ([mediciones](measurements.md)) y otras propiedades de la fórmula.

Las variables pueden representar propiedades de activos del mismo modelo de activo o de modelos de entidades secundarias asociadas. Solo las fórmulas métricas pueden introducir variables procedentes de modelos de entidades secundarias.

Las variables se identifican con nombres diferentes en la consola y en la API.
+ **AWS IoT SiteWise consola**: utilice los nombres de las propiedades de los activos como variables en sus expresiones.
+ **AWS IoT SiteWise API (AWS CLI, AWS SDKs)**: defina las variables con la [ExpressionVariable](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExpressionVariable.html)estructura, que requiere un nombre de variable y una referencia a una propiedad de activo. El nombre puede contener letras en mayúsculas y minúsculas, números y guiones bajos. A continuación, utilice nombres de variables para hacer referencia a las propiedades de los activos en sus expresiones.

Los nombres de las variables distinguen mayúsculas de minúsculas.

Para obtener más información, consulte [Definición de transformaciones](transforms.md) y [Definición de métricas](metrics.md).

## Uso de variables para hacer referencia a propiedades
<a name="variable-values"></a>

El *valor* de una variable define la propiedad a la que hace referencia. AWS IoT SiteWise proporciona diferentes formas de hacer esto.
+ **Por ID de propiedad:** puede especificar el ID único (UUID) de la propiedad para identificarla.
+ **Por nombre:** si la propiedad está en el mismo modelo de activos, puede especificar su nombre en el campo de ID de propiedad.
+ **Por ruta:** un valor de variable puede hacer referencia a una propiedad por su *ruta.* Para obtener más información, consulte [Uso de rutas para hacer referencia a propiedades de modelos compuestos personalizados](custom-composite-models.md#property-paths).

**nota**  
 La AWS IoT SiteWise consola no admite variables. Las utiliza la AWS IoT SiteWise API, incluidas las AWS Command Line Interface AWS CLI) y AWS SDKs. 

 Una variable de la que reciba una respuesta AWS IoT SiteWise incluye información completa sobre el valor, incluidos el ID y la ruta.

 Sin embargo, cuando pasas una variable a AWS IoT SiteWise (por ejemplo, en una llamada de «creación» o «actualización»), solo necesitas especificar una de estas variables. Por ejemplo, si especifica la ruta, no necesita proporcionar el ID. 

# Uso de literales en expresiones de fórmula
<a name="expression-literals"></a>

AWS IoT SiteWise admite el uso de literales en expresiones y fórmulas. Los literales son valores fijos que representan un tipo de datos específico. En AWS IoT SiteWise, puede definir literales numéricos y de cadena en las expresiones de fórmula. Los literales se pueden usar en diversos contextos, como transformaciones de datos, condiciones de alarma y cálculos de visualización.


+ <a name="number-literal-definition"></a>**Números**

  Utilice números y notación científica para definir números enteros y dobles. Puede usar la [notación E](https://en.wikipedia.org/wiki/Scientific_notation#E_notation) para expresar números con notación científica.

  Ejemplos: `1`, `2.0`, `.9`, `-23.1`, `7.89e3`, `3.4E-5`
+ <a name="string-literal-definition"></a>**Strings**

  Utilice los caracteres `'` (comillas) y `"` (comillas dobles) para definir las cadenas. El tipo de comilla para el inicio y el final deben coincidir. Para evitar que una comilla coincida con la que utiliza para declarar una cadena, incluya el carácter de esa comilla dos veces. Es el único carácter de escape de las AWS IoT SiteWise cadenas.

  Ejemplos: `'active'`, `"inactive"`, `'{"temp": 52}'`, `"{""temp"": ""high""}"`

# Uso de operadores en expresiones de fórmula
<a name="expression-operators"></a>

Puede utilizar los siguientes operadores comunes en sus expresiones de fórmulas.


| Operador | Description (Descripción) | 
| --- | --- | 
|  `+`  |  Si ambos operandos son números, este operador suma los operandos izquierdo y derecho. Si alguno de los operandos es una cadena, este operador concatena los operandos izquierdo y derecho como cadenas. Por ejemplo, la expresión `1 + 2 + " is three"` se evalúa como `"3 is three"`. La cadena concatenada puede contener hasta 1024 caracteres. Si la cadena supera los 1024 caracteres, AWS IoT SiteWise no genera ningún punto de datos para ese cálculo.  | 
|  `-`  |  Resta el operando derecho del operando izquierdo. <a name="operator-numbers-only"></a>Este operador solo se puede utilizar con operandos numéricos.  | 
|  `/`  |  Divide el operando izquierdo por el operando derecho. <a name="operator-numbers-only"></a>Este operador solo se puede utilizar con operandos numéricos.  | 
|  `*`  |  Multiplica los operandos izquierdo y derecho. <a name="operator-numbers-only"></a>Este operador solo se puede utilizar con operandos numéricos.  | 
|  `^`  |  Eleva el operando izquierdo a la potencia del operando derecho (exponenciación). <a name="operator-numbers-only"></a>Este operador solo se puede utilizar con operandos numéricos.  | 
|  `%`  |  Devuelve el resto de la división del operando izquierdo por el operando derecho. El resultado tiene el mismo signo que el operando izquierdo. Este comportamiento difiere de la operación del módulo. <a name="operator-numbers-only"></a>Este operador solo se puede utilizar con operandos numéricos.  | 
|  `x < y`  |  Devuelve `1` si `x` es menor que `y`, de lo contrario `0`.  | 
|  `x > y`  |  Devuelve `1` si `x` es mayor que `y`, de lo contrario `0`.  | 
|  `x <= y`  |  Devuelve `1` si `x` es menor o igual que `y`, de lo contrario `0`.  | 
|  `x >= y`  |  Devuelve `1` si `x` es mayor o igual que `y`, de lo contrario `0`.  | 
|  `x == y`  |  Devuelve `1` si `x` es igual a `y`, de lo contrario `0`.  | 
|  `x != y`  |  Devuelve `1` si `x` no es igual a `y`, de lo contrario `0`.  | 
|  `!x`  |  Devuelve `1` si `x` se evalúa como `0` (falso); en caso contrario `0`. `x` se evalúa como falso si:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x and y`  |  Devuelve `0` si `x` se evalúa como `0` (falso). De lo contrario, devuelve el resultado evaluado de `y`. `x` o `y` se evalúa como falso si:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x or y`  |  Devuelve `1` si `x` se evalúa como `1` (verdadero). De lo contrario, devuelve el resultado evaluado de `y`. `x` o `y` se evalúa como falso si:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `not x`  |  Devuelve `1` si `x` se evalúa como `0` (falso); en caso contrario `0`. `x` se evalúa como falso si:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-operators.html)  | 
|   `[]` `s[index]`  |  Devuelve el carácter situado en un índice `index` de la cadena `s`. Esto equivale a la sintaxis de índices en Python. 

**Example Ejemplos**  
+ `"Hello!"[1]` devuelve `e`.
+ `"Hello!"[-2]` devuelve `o`.  | 
|   `[]` `s[start:end:step]`  |  Devuelve un sector de la cadena `s`. Esto equivale a la sintaxis de sectores en Python. Este operador tiene los siguientes argumentos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-operators.html) Puede omitir el argumento `step` para usar su valor predeterminado. Por ejemplo, `s[1:4:1]` equivale a `s[1:4]`. Los argumentos deben ser enteros o la constante [none](expression-constants.md#none-definition). Si lo especifica`none`, AWS IoT SiteWise utiliza el valor por defecto para ese argumento. 

**Example Ejemplos**  
+ `"Hello!"[1:4]` devuelve `"ell"`.
+ `"Hello!"[:2]` devuelve `"He"`.
+ `"Hello!"[3:]` devuelve `"lo!"`.
+ `"Hello!"[:-4]` devuelve `"He"`.
+ `"Hello!"[::2]` devuelve `"Hlo"`.
+ `"Hello!"[::-1]` devuelve `"!olleH"`.  | 

# Uso de constantes en expresiones de fórmula
<a name="expression-constants"></a>

En AWS IoT SiteWise, puede utilizar constantes en sus expresiones y fórmulas para representar valores fijos o parámetros predefinidos. Las constantes se pueden usar en diversos contextos, como transformaciones de datos, condiciones de alarma o cálculos de visualización. Al usar constantes, puede simplificar las expresiones y hacerlas más legibles y fáciles de mantener.

Puede utilizar las siguientes constantes matemáticas comunes en sus expresiones. Todas las constantes son incapaces de distinguir mayúsculas y minúsculas.

**nota**  
Si define una variable con el mismo nombre que una constante, la variable anula a la constante.


| Constant | Description (Descripción) | 
| --- | --- | 
|  `pi`  |  El número pi (`π`): `3.141592653589793`  | 
|  `e`  |  El número e: `2.718281828459045`  | 
|  `true`  |  Equivale al número 1. En AWS IoT SiteWise, los valores booleanos se convierten en sus equivalentes numéricos.  | 
|  `false`  |  Equivale al número 0. En AWS IoT SiteWise, los valores booleanos se convierten a sus equivalentes numéricos.  | 
|   `none`  |  Equivale a no tener ningún valor. Puede usar esta constante para no generar nada como resultado de una [expresión condicional](expression-conditional-functions.md).  | 

# Uso de funciones en expresiones de fórmula
<a name="expression-functions"></a>

Puede utilizar las siguientes funciones para operar con datos de las expresiones de fórmula.

Las transformaciones y las métricas son compatibles con funciones diferentes. La siguiente tabla indica qué tipos de funciones son compatibles con cada tipo de propiedad de una fórmula.

**nota**  
Se puede incluir un máximo de 10 funciones en una expresión formulaica.


| Tipo de función | Transformaciones | Métricas | 
| --- | --- | --- | 
|  [Uso de funciones comunes en expresiones de fórmula](expression-common-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  | 
|  [Uso de funciones de comparación en expresiones de fórmula](expression-comparison-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  | 
|  [Uso de funciones condicionales en expresiones de fórmula](expression-conditional-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  | 
|  [Uso de funciones de cadena en expresiones de fórmula](expression-string-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  | 
|  [Uso de funciones de agregación en expresiones de fórmula](expression-aggregation-functions.md)  |  <a name="polaris-no-para"></a>![\[A red circle with the letter x for no.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-no.png) No  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  | 
|  [Uso de funciones temporales en expresiones de fórmula](expression-temporal-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  | 
|  [Uso de funciones de fecha y hora en expresiones de fórmula](expression-date-and-time-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/icon-yes.png) Sí  | 

## Sintaxis de las funciones
<a name="expression-function-syntax"></a>

Puede usar la siguiente sintaxis para crear funciones:

Sintaxis normal  
Con la sintaxis normal, el nombre de la función va seguido de paréntesis con cero o más argumentos.  
`function_name(argument1, argument2, argument3, ...)`. Por ejemplo, las funciones con sintaxis normal podrían ser similares a `log(x)` y `contains(s, substring)`.

Sintaxis uniforme de llamada a funciones (UFCS)  
La UFCS permite llamar a funciones mediante la sintaxis de las llamadas a métodos en la programación orientada a objetos. Con UFCS, el primer argumento va seguido de un punto (`.`) y del nombre de la función, seguidos del resto de los argumentos (si los hay) entre paréntesis.  
`argument1.function_name(argument2, argument3, ...)`. Por ejemplo, las funciones con UFCS podrían ser similares a `x.log()` y `s.contains(substring)`.  
También puede utilizar el UFCS para encadenar funciones posteriores. AWS IoT SiteWise utiliza el resultado de la evaluación de la función actual como primer argumento de la siguiente función.  
Por ejemplo, en lugar de utilizar `message.jp('$.status').lower().contains('fail')`, puede utilizar `contains(lower(jp(message, '$.status')),'fail')`.  
Para obtener más información, consulte el sitio web[Lenguaje de programación D](https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs).

**nota**  
Puede utilizar el UFCS para todas las AWS IoT SiteWise funciones.  
AWS IoT SiteWise las funciones no distinguen entre mayúsculas y minúsculas. Por ejemplo, puede usar `lower(s)` y `Lower(s)` indistintamente.

# Uso de funciones comunes en expresiones de fórmula
<a name="expression-common-functions"></a>

En las [transformaciones](transforms.md) y [las métricas](metrics.md), puede usar las siguientes funciones para calcular las funciones matemáticas comunes de las transformaciones y las métricas.


| Función | Description (Descripción) | 
| --- | --- | 
|  `abs(x)`  |  Devuelve el valor absoluto de `x`.  | 
|  `acos(x)`  |  Devuelve el arco coseno de `x`.  | 
|  `asin(x)`  |  Devuelve el arcoseno de `x`.  | 
|  `atan(x)`  |  Devuelve el arco tangente de `x`.  | 
|  `cbrt(x)`  |  Devuelve la raíz cúbica de `x`.  | 
|  `ceil(x)`  |  Devuelve el entero más cercano mayor que `x`.  | 
|  `cos(x)`  |  Devuelve el coseno de `x`.  | 
|  `cosh(x)`  |  Devuelve el coseno hiperbólico de `x`.  | 
|  `cot(x)`  |  Devuelve la tangente de `x`.  | 
|  `exp(x)`  |  Devuelve `e` a la potencia de `x`.  | 
|  `expm1(x)`  |  Devuelve `exp(x) - 1`. Utilice esta función para calcular con mayor precisión `exp(x) - 1` para los valores pequeños de `x`.  | 
|  `floor(x)`  |  Devuelve el entero más cercano menor que `x`.  | 
|  `log(x)`  |  Devuelve el `loge` (base `e`) de `x`.  | 
|  `log10(x)`  |  Devuelve el `log10` (base `10`) de `x`.  | 
|  `log1p(x)`  |  Devuelve `log(1 + x)`. Utilice esta función para calcular con mayor precisión `log(1 + x)` para los valores pequeños de `x`.  | 
|  `log2(x)`  |  Devuelve el `log2` (base `2`) de `x`.  | 
|  `pow(x, y)`  |  Devuelve `x` a la potencia de `y`. Esto equivale a `x ^ y`.  | 
|  `signum(x)`  |  Devuelve el signo de `x` (`-1` para entradas negativas, `0` para entradas cero, `+1` para entradas positivas).  | 
|  `sin(x)`  |  Devuelve el seno de `x`.  | 
|  `sinh(x)`  |  Devuelve el seno hiperbólico de `x`.  | 
|  `sqrt(x)`  |  Devuelve la raíz cuadrada de `x`.  | 
|  `tan(x)`  |  Devuelve la tangente de `x`.  | 
|  `tanh(x)`  |  Devuelve la tangente hiperbólica de `x`.  | 

# Uso de funciones de comparación en expresiones de fórmula
<a name="expression-comparison-functions"></a>

En las [transformaciones](transforms.md) y [las métricas](metrics.md), puede utilizar las siguientes funciones de comparación para comparar dos valores y obtener resultados `1` (verdadero) o `0` (falso). AWS IoT SiteWise compara las cadenas por orden [lexicográfico](https://en.wikipedia.org/wiki/Lexicographic_order).


| Función | Description (Descripción) | 
| --- | --- | 
|  `gt(x, y)`  |  Devuelve `1` si `x` es mayor que `y`, de lo contrario `0` (`x > y`). <a name="comparison-function-incompatible-types"></a>Esta función no devuelve un valor si `x` y `y` son tipos incompatibles, como un número y una cadena.  | 
|  `gte(x, y)`  |  Devuelve `1` si `x` es mayor o igual que `y`, de lo contrario `0` (`x ≥ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera que los argumentos son iguales si están dentro de una tolerancia relativa de. `1E-9` Esto se comporta de forma similar a la función [isclose](https://docs.python.org/3/library/math.html#math.isclose) de Python. <a name="comparison-function-incompatible-types"></a>Esta función no devuelve un valor si `x` y `y` son tipos incompatibles, como un número y una cadena.  | 
|  `eq(x, y)`  |  Devuelve `1` si `x` es igual a `y`, de lo contrario `0` (`x == y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera que los argumentos son iguales si están dentro de una tolerancia relativa de`1E-9`. Esto se comporta de forma similar a la función [isclose](https://docs.python.org/3/library/math.html#math.isclose) de Python. <a name="comparison-function-incompatible-types"></a>Esta función no devuelve un valor si `x` y `y` son tipos incompatibles, como un número y una cadena.  | 
|  `lt(x, y)`  |  Devuelve `1` si `x` es menor que `y`, de lo contrario `0` (`x < y`). <a name="comparison-function-incompatible-types"></a>Esta función no devuelve un valor si `x` y `y` son tipos incompatibles, como un número y una cadena.  | 
|  `lte(x, y)`  |  Devuelve `1` si `x` es menor o igual que `y`, de lo contrario `0` (`x ≤ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera que los argumentos son iguales si están dentro de una tolerancia relativa de`1E-9`. Esto se comporta de forma similar a la función [isclose](https://docs.python.org/3/library/math.html#math.isclose) de Python. <a name="comparison-function-incompatible-types"></a>Esta función no devuelve un valor si `x` y `y` son tipos incompatibles, como un número y una cadena.  | 
|  `isnan(x)`  |  Devuelve `1` si `x` es igual a `NaN`, de lo contrario `0`. Esta función no devuelve un valor si `x` es una cadena.  | 

# Uso de funciones condicionales en expresiones de fórmula
<a name="expression-conditional-functions"></a>

En las [transformaciones](transforms.md) y las [métricas](metrics.md), puede usar la siguiente función para comprobar una condición y obtener resultados diferentes si la condición se evalúa como verdadera o falsa.


| Función | Description (Descripción) | 
| --- | --- | 
|   `if(condition, result_if_true, result_if_false)`  |  Evalúa la `condition` y devuelve `result_if_true` si la condición se evalúa como verdadera o `result_if_false` si la condición se evalúa como `false`. `condition` debe ser un número. Esta función considera `0` una cadena vacía como `false` y todo lo demás (incluido `NaN`) como `true`. Los valores booleanos se convierten en `0` (falso) y `1` (verdadero). Se puede devolver la [constante none](expression-constants.md#none-definition) de esta función para descartar el resultado de una condición concreta. Esto significa que puede filtrar los puntos de datos que no cumplan una condición. Para obtener más información, consulte [Filtrado de puntos de datos](expression-tutorials.md#filter-data). 

**Example Ejemplos**  
+ `if(0, x, y)` devuelve la variable `y`.
+ `if(5, x, y)` devuelve la variable `x`.
+ `if(gt(temp, 300), x, y)` devuelve la variable `x` si la variable `temp` es mayor que `300`.
+ `if(gt(temp, 300), temp, none)` devuelve la variable `temp` si es mayor o igual que `300`, o `none` (sin valor) si `temp` es menor que `300`. Se recomienda utilizar UFCS para las funciones condicionales anidadas en las que uno o más argumentos son funciones condicionales. Se puede utilizar `if(condition, result_if_true)` para evaluar una condición y `elif(condition, result_if_true, result_if_false)` para evaluar condiciones adicionales. Por ejemplo, en lugar de utilizar `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)`, puede utilizar `if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))`. También puede encadenar funciones condicionales intermedias adicionales. Por ejemplo, puede utilizar `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)` en lugar de anidar varias instrucciones `if`, como `if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`.  Es necesario usar `elif(condition, result_if_true, result_if_false)` con UFCS.   | 

# Uso de funciones de cadena en expresiones de fórmula
<a name="expression-string-functions"></a>

En las [transformaciones](transforms.md) y [las métricas](metrics.md), puede utilizar las siguientes funciones para operar con cadenas. Para obtener más información, consulte [Uso de cadenas en fórmulas](expression-tutorials.md#use-strings-in-formulas).

**importante**  
<a name="formula-output-rules"></a>Las expresiones de fórmula solo pueden generar valores dobles o de cadena. Las expresiones anidadas pueden generar otros tipos de datos, como cadenas, pero la fórmula en su conjunto debe evaluarse como un número o una cadena. Puede usar la [función jp](#jp-definition) para convertir una cadena en un número. El valor booleano debe ser 1 (verdadero) o 0 (falso). Para obtener más información, consulte [Valores indefinidos, infinitos y de desbordamiento](expression-tutorials.md#undefined-values).


| Función | Description (Descripción) | 
| --- | --- | 
|  `len(s)`  |  Devuelve la longitud de la cadena `s`.  | 
|  `find(s, substring)`  |  Devuelve el índice de la cadena `substring` en la cadena `s`.  | 
|  `contains(s, substring)`  |  Devuelve `1` si la cadena `s` contiene la cadena `substring`, en caso contrario `0`.  | 
|  `upper(s)`  |  Devuelve la cadena `s` en mayúsculas.  | 
|  `lower(s)`  |  Devuelve la cadena `s` en minúsculas.  | 
|   `jp(s, json_path)`  |  Evalúa la cadena `s` con la [JsonPath](https://github.com/json-path/JsonPath)expresión `json_path` y devuelve el resultado. Utilice esta función para hacer lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-string-functions.html) Para extraer un valor de cadena de una estructura JSON y devolverlo como un número, debe utilizar varias funciones anidadas `jp`. La función externa `jp` extrae la cadena de la estructura JSON y la función interna `jp` convierte la cadena en un número. La cadena `json_path` debe contener un literal de cadena. Esto significa que `json_path` no puede ser una expresión que se evalúe como cadena. 

**Example Ejemplos**  
+ `jp('{"status":"active","value":15}', '$.value')` devuelve `15`.
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')` devuelve `25`.
+ `jp('[2,8,23]', '$[2]')` devuelve `23`.
+ `jp('{"values":[3,6,7]}', '$.values[1]')` devuelve `6`.
+ `jp('111', '$')` devuelve `111`.
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')` devuelve `0.95`.  | 
|  `join(s0, s1, s2, s3, ...)`  |  Devuelve una cadena concatenada con un delimitador. Esta función usa la primera cadena de entrada como delimitador y une las cadenas de entrada restantes. Esto se comporta de forma similar a la función [join (CharSequence delimiter, CharSequence... elements)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-) de Java. 

**Example Ejemplos**  
+ `join("-", "aa", "bb", "cc")` devuelve `aa-bb-cc`  | 
|  `format(expression: "format")` o `format("format", expression)`  |  Devuelve una cadena en el formato especificado. Esta función evalúa `expression` como un valor y, a continuación, devuelve el valor en el formato especificado. Esto se comporta de forma similar a la función [format(String format, Object... args)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-) de Java. Para obtener más información sobre los formatos compatibles, consulte el apartado Conversions en la sección [Class Formatter](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html) de la *plataforma Java, edición estándar 7, especificación de API*. 

**Example Ejemplos**  
+ `format(100+1: "d")` devuelve una cadena, `101`.
+ `format("The result is %d", 100+1)` devuelve una cadena, `The result is 101`.  | 
|  `f'expression'`  |  Devuelve una cadena concatenada. Con esta función formateada, puede utilizar una expresión sencilla para concatenar y formatear cadenas. Estas funciones pueden contener expresiones anidadas. Puede utilizar `{}` (corchetes) para interpolar expresiones. Esto se comporta de forma similar a los [literales de cadena formateados](https://docs.python.org/3/reference/lexical_analysis.html#f-strings) de Python. 

**Example Ejemplos**  
+ `f'abc{1+2: "f"}d'` devuelve `abc3.000000d`. Para evaluar esta expresión de ejemplo, haga lo siguiente:

  1. `format(1+2: "f")` devuelve un número de punto flotante, `3.000000`.

  1. `join('', "abc", 1+2, 'd')` devuelve una cadena, `abc3.000000d`.

  También puede escribir la expresión de la siguiente manera: `join('', "abc", format(1+2: "f"), 'd')`.  | 

# Uso de funciones de agregación en expresiones de fórmula
<a name="expression-aggregation-functions"></a>

Solo en [las métricas](metrics.md), puede utilizar las siguientes funciones que agregan valores de entrada en cada intervalo de tiempo y calculan un único valor de salida. Las funciones de agregación pueden agregar datos de activos asociados.

Los argumentos de las funciones de agregación pueden ser [variables](expression-variables.md), [literales numéricos](expression-literals.md#number-literal-definition), [funciones temporales](expression-temporal-functions.md), expresiones anidadas o funciones de agregación. La fórmula `max(latest(x), latest(y), latest(z))` utiliza una función de agregación como argumento y devuelve el valor actual más grande de las propiedades `x`, `y` y `z`.

Puede utilizar expresiones anidadas en las funciones de agregación. Cuando se utilizan expresiones anidadas, se aplican las reglas siguientes: 
+ Cada argumento solo puede tener una variable.  
**Example**  

  Por ejemplo, `avg(x*(x-1))` y `sum(x/2 )/avg(y^2 )` son compatibles.

  Por ejemplo, `min(x/y)` no es compatible.
+ Cada argumento puede tener expresiones anidadas de varios niveles.  
**Example**  

  Por ejemplo, `sum(avg(x^2 )/2)` no se admite.
+ Cada argumento puede tener variables diferentes.  
**Example**  

  Por ejemplo, `sum(x/2, y*2)` no se admite.

**nota**  
Si las expresiones contienen medidas, AWS IoT SiteWise utiliza los últimos valores del intervalo de tiempo actual para que las mediciones calculen los agregados.
Si las expresiones contienen atributos, AWS IoT SiteWise utiliza los valores más recientes de los atributos para calcular los agregados.


| Función | Description (Descripción) | 
| --- | --- | 
|  `avg(x0, ..., xn)`  |  Devuelve la media de los valores de las variables dadas durante el intervalo de tiempo actual. <a name="aggregation-function-no-output"></a>Esta función genera un punto de datos solo si las variables dadas tienen al menos un punto de datos durante el intervalo de tiempo actual.  | 
|   `sum(x0, ..., xn)`  |  Devuelve la suma de los valores de las variables dadas durante el intervalo de tiempo actual. <a name="aggregation-function-no-output"></a>Esta función genera un punto de datos solo si las variables dadas tienen al menos un punto de datos durante el intervalo de tiempo actual.  | 
|  `min(x0, ..., xn)`  |  Devuelve el mínimo de los valores de las variables dadas durante el intervalo de tiempo actual. <a name="aggregation-function-no-output"></a>Esta función genera un punto de datos solo si las variables dadas tienen al menos un punto de datos durante el intervalo de tiempo actual.  | 
|  `max(x0, ..., xn)`  |  Devuelve el máximo de los valores de las variables dadas durante el intervalo de tiempo actual. <a name="aggregation-function-no-output"></a>Esta función genera un punto de datos solo si las variables dadas tienen al menos un punto de datos durante el intervalo de tiempo actual.  | 
|  `count(x0, ..., xn)`  |  Devuelve el número total de puntos de datos para las variables dadas durante el intervalo de tiempo actual. Para obtener más información acerca de cómo contar el número de puntos de datos que cumplen una condición, consulte [Recuento de puntos de datos que coinciden con una condición](expression-tutorials.md#count-filtered-data). <a name="aggregation-function-always-output"></a>Esta función calcula un punto de datos para cada intervalo de tiempo.  | 
| `stdev(x0, ..., xn)` | Devuelve la desviación estándar de los valores de las variables dadas durante el intervalo de tiempo actual. Esta función genera un punto de datos solo si las variables dadas tienen al menos un punto de datos durante el intervalo de tiempo actual.  | 

# Uso de funciones temporales en expresiones de fórmula
<a name="expression-temporal-functions"></a>

Use funciones temporales para devolver valores basados en marcas de tiempo de puntos de datos.

## Uso de funciones temporales en las métricas
<a name="temporal-functions-in-metrics"></a>

Solo en las [métricas](metrics.md), puede utilizar las siguientes funciones que devuelven valores basados en marcas temporales de puntos de datos.

Los argumentos de las funciones temporales deben ser propiedades del modelo de activo local o expresiones anidadas. Esto significa que no se pueden usar propiedades de modelos de entidades secundarias en las funciones temporales.

Puede usar expresiones anidadas en las funciones temporales. Cuando se utilizan expresiones anidadas, se aplican las reglas siguientes: 
+ Cada argumento solo puede tener una variable.

  Por ejemplo, `latest( t*9/5 + 32 )` no se admite.
+ Los argumentos no pueden ser funciones de agregación.

  Por ejemplo, `first( sum(x) )` no es compatible.


| Función | Description (Descripción) | 
| --- | --- | 
|  `first(x)`  |  Devuelve el valor de la variable dada con la marca temporal más temprana durante el intervalo de tiempo especificado.  | 
|   `last(x)` |  Devuelve el valor de la variable dada con la última marca temporal durante el intervalo de tiempo especificado.  | 
|  `earliest(x)`  |  Devuelve el último valor de la variable dada antes del inicio del intervalo de tiempo actual. Esta función calcula un punto de datos para cada intervalo de tiempo, si la propiedad de entrada tiene al menos un punto de datos en su historial. Para obtener más información, consulte [time-range-defintion](#time-range-def).   | 
|   `latest(x)` |  Devuelve el último valor de la variable dada con la última marca de tiempo antes del fin del intervalo de tiempo especificado. Esta función calcula un punto de datos para cada intervalo de tiempo, si la propiedad de entrada tiene al menos un punto de datos en su historial. Para obtener más información, consulte [time-range-defintion](#time-range-def).  | 
|   `statetime(x)`  |  Devuelve la cantidad de tiempo en segundos que las variables dadas son positivas durante el intervalo de tiempo especificado. Puede usar las[funciones de comparación](expression-comparison-functions.md) para crear una propiedad de transformación para que la función `statetime` la consuma.  Por ejemplo, si tiene una propiedad `Idle` que es `0` o `1`, puede calcular el tiempo de inactividad por intervalo de tiempo con esta expresión: `IdleTime = statetime(Idle)`. Para obtener más información, consulte el [escenario de statetime de ejemplo](#statetime-example). La función no admite propiedades de métricas como variables de entrada. Esta función calcula un punto de datos para cada intervalo de tiempo, si la propiedad de entrada tiene al menos un punto de datos en su historial.  | 
|   `TimeWeightedAvg(x, [interpolation])`  | Devuelve el promedio de los datos de entrada ponderados con los intervalos de tiempo entre puntos.Consulte los [Parámetros de las funciones ponderadas por tiempo](#timeweighted-parameter) para obtener detalles sobre el cálculo y los intervalos.El argumento opcional `interpolaton` debe ser una constante de cadena:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-temporal-functions.html) | 
|   `TimeWeightedStDev(x, [algo])`  |  Devuelve la desviación estándar de los datos de entrada ponderada con los intervalos de tiempo entre puntos.  Consulte los [Parámetros de las funciones ponderadas por tiempo](#timeweighted-parameter) para obtener detalles sobre el cálculo y los intervalos.  El cálculo utiliza el algoritmo de cálculo de última observación realizada para los intervalos entre puntos de datos. En este enfoque, el punto de datos se calcula como el último valor observado hasta la siguiente entrada de punto de datos con marca temporal. El peso se calcula como el intervalo de tiempo en segundos entre los puntos de datos o los límites de las ventanas.  El argumento opcional `algo` debe ser una constante de cadena: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-temporal-functions.html) Para el cálculo se utilizan las siguientes fórmulas, donde: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-temporal-functions.html) Ecuación para la desviación estándar de la población: ![\[Ecuación para la desviación estándar de la población.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/timeweightedstdev1.png) Ecuación para la desviación estándar de la frecuencia: ![\[Ecuación para la desviación estándar de la frecuencia.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/timeweighted-frequency-stdev.png)  | 

El siguiente diagrama muestra cómo se AWS IoT SiteWise calculan las funciones temporales`first`,, y `last` `earliest``latest`, en relación con el intervalo de tiempo actual.

![\[AWS IoT SiteWise las funciones temporales devuelven puntos de datos en función de su marca de tiempo.\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/images/sitewise-temporal-functions.png)
<a name="time-range-def"></a>

**nota**  
El intervalo de tiempo para `first(x)`, `last(x)` es (inicio de la ventana actual, fin de la ventana actual].
El intervalo de tiempo para `latest(x)` es (inicio del tiempo, fin de la ventana actual].
El intervalo de tiempo para `earliest(x)` es (inicio del tiempo, fin de la ventana anterior].

**Parámetros de funciones con ponderación de tiempo**

Las funciones con ponderación temporal calculadas para la ventana de agregación tienen en cuenta lo siguiente:
+ Puntos de datos dentro de la ventana
+ Intervalos de tiempo entre puntos de datos
+ Último punto de datos antes de la ventana
+ Primer punto de datos después de la ventana (para algunos algoritmos)

**Términos:**
+ **Punto de datos nulo**: cualquier punto de datos con una calidad no buena o un valor que no sea numérico. Estos no se tienen en cuenta para el cálculo de los resultados de una ventana.
+ **Intervalo nulo**: el intervalo que sigue a un punto de datos nulo. El intervalo anterior al primer punto de datos conocido también se considera un intervalo nulo.
+ **Punto de datos válido**: cualquier punto de datos con buena calidad y valor numérico.

**nota**  
AWS IoT SiteWise solo consume datos `GOOD` de calidad cuando calcula las transformaciones y las métricas. Ignora los puntos de datos `UNCERTAIN` y `BAD`.
El intervalo anterior al primer punto de datos conocido se considera un **intervalo nulo**. Para obtener más información, consulte [Tutoriales de expresiones de fórmula](expression-tutorials.md).

El intervalo posterior al último punto de datos conocido continúa indefinidamente y afecta a todas las ventanas siguientes. Cuando llega un nuevo punto de datos, la función vuelve a calcular el intervalo.

Siguiendo las reglas anteriores, se calcula el resultado agregado de la ventana y se limita a los límites de la ventana. De forma predeterminada, la función solo envía el resultado de la ventana si toda la ventana es un **intervalo válido**.

Si el **intervalo válido** de la ventana es inferior a la longitud de la ventana, la función no envía la ventana. 

Cuando cambian los puntos de datos que afectan al resultado de la ventana, la función vuelve a calcular la ventana, incluso si los puntos de datos están fuera de la ventana. 

Si la propiedad de entrada tiene al menos un punto de datos en su historial y se ha iniciado un cálculo, la función calcula las funciones agregadas con ponderación temporal para cada intervalo de tiempo.

**Example Escenario de statetime de ejemplo**  
Considere un ejemplo en el que tiene un activo con las siguientes propiedades:  
+ `Idle`: una medición que es `0` o `1`. Cuando el valor es `1`, la máquina está inactiva.
+ `Idle Time`: una métrica que utiliza la fórmula `statetime(Idle)` para calcular la cantidad de tiempo en segundos en que la máquina está inactiva, por cada intervalo de 1 minuto.
La propiedad `Idle` tiene los siguientes puntos de datos.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Timestamp | 14:00:00 h | 14:00:30 h | 14:01:15 h | 14:02:45 h | 14:04:00 h | 
| Idle | 0 | 1 | 1 | 0 | 0 | 
AWS IoT SiteWise calcula la `Idle Time` propiedad cada minuto a partir de los valores de`Idle`. Una vez realizado este cálculo, la propiedad `Idle Time` tiene los siguientes puntos de datos.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Timestamp | 14:00:00 h | 14:01:00 h | 14:02:00 h | 14:03:00 h | 14:04:00 h | 
| Idle Time | N/A | 30 | 60 | 45 | 0 | 
AWS IoT SiteWise realiza los siguientes cálculos `Idle Time` al final de cada minuto.  
+ A las 14:00 h (de las 13:59 h a las 14:00 h)
  + No hay datos para `Idle` antes de las 14:00 h, por lo que no se calcula ningún punto de datos.
+ A las 14:01 h (de las 14:00 h a las 14:01 h)
  + A las 14:00:00 h, la máquina está activa (`Idle` es `0`).
  + A las 14:00:30 h, la máquina está inactiva (`Idle` es `1`).
  + `Idle` no vuelve a cambiar antes del final del intervalo de las 14:01:00 h, por lo que el valor de `Idle Time` es de 30 segundos.
+ A las 14:02 h (de las 14:01 h a las 14:02 h)
  + A las 14:01:00 h, el equipo está inactivo (según el último punto de datos de las 14:00:30 h).
  + A las 14:01:15 h, la máquina sigue inactiva.
  + `Idle` no vuelve a cambiar antes del final del intervalo de las 14:02:00 h, por lo que el valor de `Idle Time` es de 60 segundos.
+ A las 14:03 h (de las 14:02 h a las 14:03 h)
  + A las 14:02:00 h, el equipo está inactivo (según el último punto de datos de las 14:01:15 h).
  + A las 14:02:45 h, la máquina está activa.
  + `Idle` no vuelve a cambiar antes del final del intervalo de las 14:03:00 h, por lo que el valor de `Idle Time` es de 45 segundos.
+ A las 14:04 h (de las 14:03 h a las 14:04 h)
  + A las 14:03:00 h, el equipo está activo (según el último punto de datos de las 14:02:45 h).
  + `Idle` no vuelve a cambiar antes del final del intervalo de las 14:04:00 h, por lo que el valor de `Idle Time` es de 0 segundos.

**Example Ejemplo TimeWeightedAvg y TimeWeightedStDev escenario**  
Las siguientes tablas proporcionan ejemplos de entradas y salidas para estas métricas de ventana de un minuto: `Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')`.  
Ejemplo de entrada para una ventana agregada de un minuto:  
Todos estos puntos de datos tienen calidad `GOOD`.


|  |  | 
| --- |--- |
| 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 | 
Salida de resultados agregados:  
Ninguno: no se produjo un resultado para esta ventana.


| Time | `Avg(x)` | `TimeWeightedAvg(x)` | `TimeWeightedAvg(X, "linear")` | `stDev(X)` | `timeWeightedStDev(x)` | `timeWeightedStDev(x, 'p')` | 
| --- | --- | --- | --- | --- | --- | --- | 
| 3:00:00 | 4 | Ninguno | Ninguno | 0 | Ninguno | Ninguno | 
| 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,5400374531753 | 7,724054437220943 | 7,659416862050705 | 
| 3:04:00 | 0 | 10 | 2,5 | 0 | 10,084389681792215 | 10 | 
| 3:05:00 | Ninguno | 0 | 0 | Ninguno | 0 | 0 | 

## Uso de funciones temporales en las transformaciones
<a name="temporal-functions-in-transforms"></a>

Solo en las [transformaciones](transforms.md), puede utilizar la función `pretrigger()` para recuperar el valor de calidad `GOOD` de una variable antes de actualizar la propiedad que inició el cálculo de la transformación actual.

Considere un ejemplo en el que un fabricante utiliza AWS IoT SiteWise para monitorizar el estado de una máquina. El fabricante utiliza las siguientes medidas y transformaciones para representar el proceso:
+ Una medición, `current_state`, que puede ser 0 o 1.
  + Si la máquina está en estado de limpieza, `current_state` equivale a 1.
  + Si la máquina está en estado de fabricación, `current_state` equivale a 0.
+ Una transformación, `cleaning_state_duration`, que equivale a `if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)`. Esta transformación devuelve el tiempo que la máquina ha estado en estado de limpieza en segundos, en formato de tiempo Unix. Para obtener más información, consulte [Uso de funciones condicionales en expresiones de fórmula](expression-conditional-functions.md) y la función [marca temporal()](expression-date-and-time-functions.md).

Si la máquina permanece en estado de limpieza más tiempo del esperado, el fabricante podría investigar la máquina.

También puede utilizar la función `pretrigger()` en transformaciones multivariantes. Por ejemplo, dispone de dos mediciones denominadas `x` y `y`, y una transformación `z`, que equivale a `x + y + pretrigger(y)`. En la siguiente tabla se muestran los valores de `x`, `y` y `z` desde las 9:00 h hasta las 9:15 h.

**nota**  
En este ejemplo se presupone que los valores de las mediciones llegan en orden cronológico. Por ejemplo, el valor de `x` para las 09:00 h llega antes que el valor de `x` para las 09:05 h.
Si los puntos de datos de las 9:05 h llegan antes que los puntos de datos de las 9:00 h, no se calcula `z` a las 9:05 h.
Si el valor de `x` para las 9:05 h llega antes que el valor de `x` para las 09:00 h y los valores de `y` llegan en orden cronológico, `z` equivale a `22 = 20 + 1 + 1` a las las 9:05 h.


|  | 09:00 h | 09:05 h | 09:10 h | 09:15 h | 
| --- | --- | --- | --- | --- | 
|  `x`  |  10  |  20  |    |  30  | 
|  `y`  |  1  |  2  |  3  |    | 
|  `z = x + y + pretrigger(y)`  |  `y` no recibe ningún punto de datos antes de las 09:00 h. Por lo tanto, `z` no se calcula a las 09:00 h.  |  23 = 20 \$1 2 \$1 1 `pretrigger(y)` equivale a 1.  |  25 = 20 \$1 3 \$1 2 `x` no recibe un nuevo punto de datos. `pretrigger(y)` equivale a 2.  |  36 = 30 \$1 3 \$1 3 `y` no recibe un nuevo punto de datos. Por lo tanto, `pretrigger(y)` equivale a 3 a las 09:15 h.  | 

# Uso de funciones de fecha y hora en expresiones de fórmula
<a name="expression-date-and-time-functions"></a>

En las [transformaciones](transforms.md) y las [métricas](metrics.md), puede utilizar las funciones de fecha y hora de las siguientes maneras:
+ Para recuperar la marca temporal actual de un punto de datos en UTC o en la zona horaria local.
+ Para construir marcas temporales con argumentos, como `year`, `month` y `day_of_month`.
+ Para extraer un período de tiempo, como un año o un mes, con el argumento `unix_time`.


| Función | Description (Descripción) | 
| --- | --- | 
|  `now()`  |  Devuelve la fecha y hora actuales, en segundos, en formato de tiempo Unix.  | 
|  `timestamp()`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `mktime(time_zone, year, month, day_of_month, hour, minute, second)`  |  Devuelve el tiempo de entrada, en segundos, en formato de tiempo Unix. Los siguientes requisitos se aplican al uso de esta función: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Los siguientes límites se aplican al uso de esta función: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Ejemplos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `localtime(unix_time, time_zone)`  |  Devuelve el año, el día del mes, el día de la semana, el día del año, la hora, el minuto o el segundo de la zona horaria especificada a partir del tiempo Unix. Los siguientes requisitos se aplican al uso de esta función: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Respuesta de ejemplo: `2007-12-03T10:15:30+01:00[Europe/Paris]` `localtime(unix_time, time_zone)` no es una función independiente. Las funciones `year()`, `mon()`, `mday`, `wday()`, `yday()`, `hour()`, `minute()` y `sec()` toman `localtime(unix_time, time_zone)` como argumento. Ejemplos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `year(localtime(unix_time, time_zone)`  |  Devuelve el año desde `localtime(unix_time, time_zone)`.  | 
|  `mon(localtime(unix_time, time_zone))`  |  Devuelve el mes desde `localtime(unix_time, time_zone)`.  | 
|  `mday(localtime(unix_time, time_zone))`  |  Devuelve el día del mes desde `localtime(unix_time, time_zone)`.  | 
|  `wday(localtime(unix_time, time_zone))`  |  Devuelve el día de la semana desde `localtime(unix_time, time_zone)`.  | 
|  `yday(localtime(unix_time, time_zone))`  |  Devuelve el día del año desde `localtime(unix_time, time_zone)`.  | 
|  `hour(localtime(unix_time, time_zone))`  |  Devuelve la hora desde `localtime(unix_time, time_zone)`.  | 
|  `minute(localtime(unix_time, time_zone))`  |  Devuelve el minuto desde `localtime(unix_time, time_zone)`.  | 
|  `sec(localtime(unix_time, time_zone))`  |  Devuelve el segundo desde `localtime(unix_time, time_zone)`.  | 

## Formatos de zona horaria admitidos
<a name="time-zone-expressions"></a>

Puede especificar el argumento de zona horaria de las siguientes maneras:
+ Desplazamiento de la zona horaria: especifique `'Z'` si es UTC o un desplazamiento (`'+2'` o `'-5'`).
+ Desfase IDs : combina una abreviatura de zona horaria y un desfase. Por ejemplo, `'GMT+2'` y `'UTC-01:00'`. La abreviatura de la zona horaria debe contener solo tres letras.
+ Basado en regiones IDs : por ejemplo, `'Etc/GMT+12'` y`'Pacific/Pago_Pago'`.

### Se admiten abreviaturas de zona horaria
<a name="spported-time-zones"></a>

Las funciones de fecha y hora admiten las siguientes abreviaturas de zona horaria de tres letras: 
+ WEST: -05:00
+ HOST: -10:00
+ HST: -07:00
+ ACT: Australia/Darwin
+ AET: Australia/Sídney
+ AGT - America/Argentina/Buenos \$1Aires
+ ARTE: África/El Cairo
+ AST: América/Anchorage
+ BET: América/Sao\$1Paulo
+ BST: Asia/Daca
+ CAT: África/Harare
+ CET: Europa/París
+ CNT: América/St\$1Johns
+ CST: América/Chicago
+ CTT - Asia/Shanghai 
+ EAT: África/Adís\$1Abeba
+ IET - America/Indiana/Indianapolis
+ IST: Asia/Calcuta
+ JST: Asia/Tokio
+ MIT: Pacífico/Apia
+ NET: Asia/Ereván
+ NST: Pacífico/Auckland
+ PLT: Asia/Karachi
+ PRT: América/Puerto\$1Rico
+ PST: America/Los\$1Ángeles
+ SST: Pacífico/Guadalcanal
+ VST: Asia/Ho\$1Chi\$1Minh

### Compatible según la región IDs
<a name="supported-region-based-ids"></a>

Las funciones de fecha y hora son compatibles con las siguientes regiones IDs, organizadas según su relación con UTC\$1 00:00:
+ Etc/GMT\$112 (UTC-12:00)
+ Pacífico/Pago\$1Pago (UTC-11:00)
+ Pacífico/Samoa (UTC-11:00)
+ Pacífico/Niue (UTC-11:00)
+ EE. UU./Samoa (UTC-11:00)
+ Etc/GMT\$111 (UTC-11:00)
+ Pacífico/Midway (UTC-11:00)
+ Pacífico/Honolulú (UTC-10:00)
+ Pacífico/Rarotonga (UTC-10:00)
+ Pacífico/Tahití (UTC-10:00)
+ Pacífico/Johnston (UTC-10:00)
+ EE. UU./Hawái (UTC-10:00)
+ Sistema V/ HST10 (UTC- 10:00)
+ Etc/GMT\$110 (UTC-10:00)
+ Pacífico/Marquesas (UTC-09:30)
+ Etc/GMT\$19 (UTC-09:00)
+ Pacífico/Gambier (UTC-09:00)
+ América/Atka (UTC-09:00)
+ Sistema V/ YST9 (UTC- 09:00)
+ América/Adak (UTC-09:00)
+ EE. UU./Aleutianas (UTC-09:00)
+ Etc/GMT\$18 (UTC-08:00)
+ EE. UU./Alaska (UTC-08:00)
+ América/Juneau (UTC-08:00)
+ América/Metlakatla (UTC-08:00)
+ América/Yakutat (UTC-08:00)
+ Pacífico/Pitcairn (UTC-08:00)
+ América/Sitka (UTC-08:00)
+ América/Anchorage (UTC-08:00)
+ Sistema V/ PST8 (UTC - 08:00)
+ América/Nome (UTC-08:00)
+ Sistema V/ YST9 YDT (UTC- 08:00)
+ Canadá/Yukon (UTC-07:00)
+ EE. UU./Pacífico-Nuevo (UTC-07:00)
+ Etc/GMT\$17 (UTC-07:00)
+ EE. UU./Arizona (UTC-07:00)
+ América/Dawson\$1Creek (UTC-07:00)
+ Canadá/Pacífico (UTC-07:00)
+ PST8PDT (UTC- 07:00)
+ Sistema V/ MST7 (UTC- 07:00)
+ América/Dawson (UTC-07:00)
+ México/ BajaNorte (UTC- 07:00)
+ América/Tijuana (UTC-07:00)
+ América/Creston (UTC-07:00)
+ América/Hermosillo (UTC-07:00)
+ América/Santa\$1Isabel (UTC-07:00)
+ América/Vancouver (UTC-07:00)
+ América/Ensenada (UTC-07:00)
+ América/Phoenix (UTC-07:00)
+ América/Whitehorse (UTC-07:00)
+ América/Fort\$1Nelson (UTC-07:00)
+ Sistema V/ PST8 PDT (UTC- 07:00)
+ América/Los\$1Ángeles (UTC-07:00)
+ EE. UU./Pacífico (UTC-07:00)
+ América/El\$1Salvador (UTC-06:00)
+ América/Guatemala (UTC-06:00)
+ América/Belice (UTC-06:00)
+ América/Managua (UTC-06:00)
+ América/Tegucigalpa (UTC-06:00)
+ Etc/GMT\$16 (UTC-06:00)
+ Pacífico/Pascua (UTC-06:00)
+ México/ BajaSur (UTC- 06:00)
+ América/Regina (UTC-06:00)
+ América/Denver (UTC-06:00)
+ Pacífico/Galápagos (UTC-06:00)
+ América/Yellowknife (UTC-06:00)
+ América/Swift\$1Current (UTC-06:00)
+ América/Inuvik (UTC-06:00)
+ América/Mazatlán (UTC-06:00)
+ América/Boise (UTC-06:00)
+ América/Costa\$1Rica (UTC-06:00)
+ MST7MDT (UTC- 06:00)
+ Sistema V/ CST6 (UTC- 06:00)
+ América/Chihuahua (UTC-06:00)
+ América/Ojinaga (UTC-06:00)
+ Chile/ EasterIsland (UTC- 06:00)
+ EE. UU./Montaña (UTC-06:00)
+ América/Edmonton (UTC-06:00)
+ Canadá/Montaña (UTC-06:00)
+ América/Cambridge\$1Bay (UTC-06:00)
+ Navajo (UTC-06:00)
+ Sistema V/ MST7 MDT (UTC- 06:00)
+ Canadá/Saskatchewan (UTC-06:00)
+ América/Shiprock (UTC-06:00)
+ América/Panamá (UTC-05:00)
+ América/Chicago (UTC-05:00)
+ América/Eirunepe (UTC-05:00)
+ Etc/GMT\$15 (UTC-05:00)
+ México/General (UTC-05:00)
+ América/Porto\$1Acre (UTC-05:00)
+ América/Guayaquil (UTC-05:00)
+ América/Rankin\$1Inlet (UTC-05:00)
+ EE. UU./Central (UTC-05:00)
+ América/Rainy\$1River (UTC-05:00)
+ America/Indiana/Knox(UTC- 05:00)
+ America/North\$1Dakota/Beulah(UTC- 05:00)
+ América/Monterrey (UTC-05:00)
+ América/Jamaica (UTC-05:00)
+ América/Atikokan (UTC-05:00)
+ América/Coral\$1Harbour (UTC-05:00)
+ America/North\$1Dakota/Center(UTC- 05:00)
+ América/Caimán (UTC-05:00)
+ America/Indiana/Tell\$1Ciudad (UTC- 05:00)
+ América/Ciudad\$1de\$1México (UTC-05:00)
+ América/Matamoros (UTC-05:00)
+ CST6CDT (UTC- 05:00)
+ América/Knox\$1IN (UTC-05:00)
+ América/Bogotá (UTC-05:00)
+ América/Menominee (UTC-05:00)
+ América/Resolute (UTC-05:00)
+ Sistema V/ EST5 (UTC- 05:00)
+ Canadá/Central (UTC-05:00)
+ Brasil/Acre (UTC-05:00)
+ América/Cancún (UTC-05:00)
+ América/Lima (UTC-05:00)
+ América/Bahía\$1Banderas (UTC-05:00)
+ EE. UU./Indiana-Starke (UTC-05:00)
+ América/Rio\$1Branco (UTC-05:00)
+ Sistema V/ CST6 CDT (UTC- 05:00)
+ Jamaica (UTC-05:00)
+ América/Mérida (UTC-05:00)
+ America/North\$1Dakota/New\$1Salem (UTC- 05:00)
+ América/Winnipeg (UTC-05:00)
+ América/Cuiabá (UTC-04:00)
+ América/Marigot (UTC-04:00)
+ America/Indiana/Petersburg(UTC- 04:00)
+ Chile/Continental (UTC-04:00)
+ América/Grand\$1Turk (UTC-04:00)
+ Cuba (UTC-04:00)
+ Etc/GMT\$14 (UTC-04:00)
+ América/Manaos (UTC-04:00)
+ América/Fort\$1Wayne (UTC-04:00)
+ América/St\$1Thomas (UTC-04:00)
+ América/Anguila (UTC-04:00)
+ América/Habana (UTC-04:00)
+ EE. UU./Michigan (UTC-04:00)
+ América/Barbados (UTC-04:00)
+ América/Louisville (UTC-04:00)
+ América/Curazao (UTC-04:00)
+ América/Guyana (UTC-04:00)
+ América/Martinica (UTC-04:00)
+ América/Puerto\$1Rico (UTC-04:00)
+ América/Puerto\$1España (UTC-04:00)
+ Sistema V/ AST4 (UTC- 04:00)
+ America/Indiana/Vevay(UTC- 04:00)
+ America/Indiana/Vincennes(UTC- 04:00)
+ América/Kralendijk (UTC-04:00)
+ América/Antigua (UTC-04:00)
+ América/Indianápolis (UTC-04:00)
+ América/Iqaluit (UTC-04:00)
+ América/St\$1Vincent (UTC-04:00)
+ America/Kentucky/Louisville(UTC- 04:00)
+ América/Dominica (UTC-04:00)
+ América/Asunción (UTC-04:00)
+ EST5EDT (UTC- 04:00)
+ América/Nassau (UTC-04:00)
+ America/Kentucky/Monticello(UTC- 04:00)
+ Brasil/Oeste (UTC-04:00)
+ América/Aruba (UTC-04:00)
+ America/Indiana/Indianapolis(UTC- 04:00)
+ América/Santiago (UTC-04:00)
+ América/La\$1Paz (UTC-04:00)
+ América/Thunder\$1Bay (UTC-04:00)
+ America/Indiana/Marengo(UTC- 04:00)
+ América/Blanc-Sablon (UTC-04:00)
+ América/Santo\$1Domingo (UTC-04:00)
+ EE. UU./Este (UTC-04:00)
+ Canadá/Este (UTC-04:00)
+ América/ Port-au-Prince (UTC- 04:00)
+ América/San\$1Bartolomé (UTC-04:00)
+ América/Nipigon (UTC-04:00)
+ EE. UU./Indiana del Este (UTC-04:00)
+ América/Santa\$1Lucía (UTC-04:00)
+ América/Montserrat (UTC-04:00)
+ América/Lower\$1Princes (UTC-04:00)
+ América/Detroit (UTC-04:00)
+ América/Tórtola (UTC-04:00)
+ América/Porto\$1Velho (UTC-04:00)
+ América/Campo\$1Grande (UTC-04:00)
+ América/Virgin (UTC-04:00)
+ América/Pangnirtung (UTC-04:00)
+ América/Montreal (UTC-04:00)
+ America/Indiana/Winamac(UTC- 04:00)
+ América/Boa\$1Vista (UTC-04:00)
+ América/Granada (UTC-04:00)
+ América/Nueva\$1York (UTC-04:00)
+ América/St\$1Kitts (UTC-04:00)
+ América/Caracas (UTC-04:00)
+ América/Guadalupe (UTC-04:00)
+ América/Toronto (UTC-04:00)
+ Sistema V/ EST5 EDT (UTC- 04:00)
+ America/Argentina/Catamarca(UTC- 03:00)
+ Canadá/Atlántico (UTC-03:00)
+ America/Argentina/Cordoba(UTC- 03:00)
+ América/Araguaina (UTC-03:00)
+ America/Argentina/Salta(UTC- 03:00)
+ Etc/GMT\$13 (UTC-03:00)
+ América/Montevideo (UTC-03:00)
+ Brasil/Este (UTC-03:00)
+ America/Argentina/Mendoza(UTC- 03:00)
+ America/Argentina/Rio\$1Gallegos (UTC- 03:00)
+ América/Catamarca (UTC-03:00)
+ América/Córdoba (UTC-03:00)
+ América/Sao\$1Paulo (UTC-03:00)
+ America/Argentina/Jujuy(UTC- 03:00)
+ América/Cayenne (UTC-03:00)
+ América/Recife (UTC-03:00)
+ América/Buenos\$1Aires (UTC-03:00)
+ América/Paramaribo (UTC-03:00)
+ América/Moncton (UTC-03:00)
+ América/Mendoza (UTC-03:00)
+ América/Santarén (UTC-03:00)
+ Atlántico/Bermudas (UTC-03:00)
+ América/Maceió (UTC-03:00)
+ Atlántico/Stanley (UTC-03:00)
+ América/Halifax (UTC-03:00)
+ Antártica/Rothera (UTC-03:00)
+ America/Argentina/San\$1Luis (UTC- 03:00)
+ America/Argentina/Ushuaia(UTC- 03:00)
+ Antártica/Palmer (UTC-03:00)
+ América/Punta\$1Arenas (UTC-03:00)
+ América/Glace\$1Bay (UTC-03:00)
+ América/Fortaleza (UTC-03:00)
+ América/Thule (UTC-03:00)
+ America/Argentina/La\$1Rioja (UTC- 03:00)
+ América/Belén (UTC-03:00)
+ América/Jujuy (UTC-03:00)
+ América/Bahía (UTC-03:00)
+ América/Goose\$1Bay (UTC-03:00)
+ America/Argentina/San\$1Juan (UTC- 03:00)
+ America/Argentina/ComodRivadavia(UTC- 03:00)
+ America/Argentina/Tucuman(UTC- 03:00)
+ América/Rosario (UTC-03:00)
+ Sistema V/ AST4 ADT (UTC- 03:00)
+ America/Argentina/Buenos\$1Aires (UTC- 03:00)
+ América/St\$1Johns (UTC-02:30)
+ Canadá/Terranova (UTC-02:30)
+ América/Miquelón (UTC-02:00)
+ Etc/GMT\$12 (UTC-02:00)
+ América/Godthab (UTC-02:00)
+ América/Noronha (UTC-02:00)
+ Brasil/ DeNoronha (UTC- 02:00)
+ Atlántico/Georgia\$1del\$1Sur (UTC-02:00)
+ Etc/GMT\$11 (UTC-01:00)
+ Atlántico/Cabo\$1Verde (UTC-01:00)
+ Pacífico/Kiritimati (UTC\$114:00)
+ Etc/GMT-14 (UTC\$114:00)
+ Pacífico/Fakaofo (UTC\$113:00)
+ Pacífico/Enderbury (UTC\$113:00)
+ Pacífico/Apia (UTC\$113:00)
+ Pacífico/Tongatapu (UTC\$113:00)
+ Etc/GMT-13 (UTC\$113:00)
+ NZ-CHAT (UTC\$112:45)
+ Pacífico/Chatham (UTC\$112:45)
+ Pacífico/Kwajalein (UTC\$112:00)
+ Antártida/ (UTC\$1 12:00McMurdo )
+ Pacífico/Wallis (UTC\$112:00)
+ Pacífico/Fiyi (UTC\$112:00)
+ Pacífico/Funafuti (UTC\$112:00)
+ Pacífico/Nauru (UTC\$112:00)
+ Kwajalein (UTC\$112:00)
+ NZ (UTC\$112:00)
+ Pacífico/Wake (UTC\$112:00)
+ Antártica/Polo\$1Sur (UTC\$112:00)
+ Pacífico/Tarawa (UTC\$112:00)
+ Pacífico/Auckland (UTC\$112:00)
+ Asia/Kamchatka (UTC\$112:00)
+ Etc/GMT-12 (UTC\$112:00)
+ Asia/Anádyr (UTC\$112:00)
+ Pacífico/Majuro (UTC\$112:00)
+ Pacífico/Ponapé (UTC\$111:00)
+ Pacífico/Bougainville (UTC\$111:00)
+ Antártica/Macquarie (UTC\$111:00)
+ Pacífico/Pohnpei (UTC\$111:00)
+ Pacífico/Efaté (UTC\$111:00)
+ Pacífico/Norfolk (UTC\$111:00)
+ Asia/Magadán (UTC\$111:00)
+ Pacífico/Kosrae (UTC\$111:00)
+ Asia/Sajalín (UTC\$111:00)
+ Pacífico/Numea (UTC\$111:00)
+ Etc/GMT-11 (UTC\$111:00)
+ Asia/Srednekolymsk (UTC\$111:00)
+ Pacífico/Guadalcanal (UTC\$111:00)
+ Australia/Lord\$1Howe (UTC\$110:30)
+ Australia/LHI (UTC\$110:30)
+ Australia/Hobart (UTC\$110:00)
+ Pacífico/Yap (UTC\$110:00)
+ Australia/Tasmania (UTC\$110:00)
+ Pacífico/Puerto\$1Moresby (UTC\$110:00)
+ Australia/ACT (UTC\$110:00)
+ Australia/Victoria (UTC\$110:00)
+ Pacífico/Chuuk (UTC\$110:00)
+ Australia/Queensland (UTC\$110:00)
+ Australia/Canberra (UTC\$110:00)
+ Australia/Currie (UTC\$110:00)
+ Pacífico/Guam (UTC\$110:00)
+ Pacífico/Truk (UTC\$110:00)
+ Australia/Nueva\$1Gales\$1del\$1Sur (UTC\$110:00)
+ Asia/Vladivostok (UTC\$110:00)
+ Pacífico/Saipán (UTC\$110:00)
+ DUrville Antártica/Dumont (UTC\$1 10:00)
+ Australia/Sídney (UTC\$110:00)
+ Australia/Brisbane (UTC\$110:00)
+ Etc/GMT-10 (UTC\$110:00)
+ Asia/Ust-Nera (UTC\$110:00)
+ Australia/Melbourne (UTC\$110:00)
+ Australia/Lindeman (UTC\$110:00)
+ Australia/Norte (UTC\$109:30)
+ Australia/Yancowinna (UTC\$109:30)
+ Australia/Adelaida (UTC\$109:30)
+ Australia/Broken\$1Hill (UTC\$109:30)
+ Australia/Sur (UTC\$109:30)
+ Australia/Darwin (UTC\$109:30)
+ Etc/GMT-9 (UTC\$109:00)
+ Pacífico/Palaos (UTC\$109:00)
+ Asia/Chita (UTC\$109:00)
+ Asia/Dili (UTC\$109:00)
+ Asia/Jayapura (UTC\$109:00)
+ Asia/Yakutsk (UTC\$109:00)
+ Asia/Pyongyang (UTC\$109:00)
+ ROK (UTC\$109:00)
+ Asia/Seúl (UTC\$109:00)
+ Asia/Khandyga (UTC\$109:00)
+ Japón (UTC\$109:00)
+ Asia/Tokio (UTC\$109:00)
+ Australia/Eucla (UTC\$108:45)
+ Asia/Kuching (UTC\$108:00)
+ Asia/Chungking (UTC\$108:00)
+ Etc/GMT-8 (UTC\$108:00)
+ Australia/Perth (UTC\$108:00)
+ Asia/Macao (UTC\$108:00)
+ Asia/Macao (UTC\$108:00)
+ Asia/Choybalsan (UTC\$108:00)
+ Asia/Shanghái (UTC\$108:00)
+ Antártica/Casey (UTC\$108:00)
+ Asia/Ulán\$1Bator (UTC\$108:00)
+ Asia/Chongqing (UTC\$108:00)
+ Asia/Ulaanbaatar (UTC\$108:00)
+ Asia/Taipéi (UTC\$108:00)
+ Asia/Manila (UTC\$108:00)
+ RPC (UTC\$108:00)
+ Asia/Ujung\$1Pandang (UTC\$108:00)
+ Asia/Harbin (UTC\$108:00)
+ Singapur (UTC\$108:00)
+ Asia/Brunéi (UTC\$108:00)
+ Australia/Oeste (UTC\$108:00)
+ Asia/Hong\$1Kong (UTC\$108:00)
+ Asia/Macasar (UTC\$108:00)
+ HongKong (UTC\$108:00)
+ Asia/Kuala\$1Lumpur (UTC\$108:00)
+ Asia/Irkutsk (UTC\$108:00)
+ Asia/Singapur (UTC\$108:00)
+ Asia/Pontianak (UTC\$107:00)
+ Etc/GMT-7 (UTC\$107:00)
+ Asia/Phnom\$1Penh (UTC\$107:00)
+ Asia/Novosibirsk (UTC\$107:00)
+ Antártica/Davis (UTC\$107:00)
+ Asia/Tomsk (UTC\$107:00)
+ Asia/Yakarta (UTC\$107:00)
+ Asia/Barnaul (UTC\$107:00)
+ India/Navidad (UTC\$107:00)
+ Asia/Ho\$1Chi\$1Minh (UTC\$107:00)
+ Asia/Hovd (UTC\$107:00)
+ Asia/Bangkok (UTC\$107:00)
+ Asia/Vientián (UTC\$107:00)
+ Asia/Novokuznetsk (UTC\$107:00)
+ Asia/Krasnoyarsk (UTC\$107:00)
+ Asia/Saigón (UTC\$107:00)
+ Asia/Yangon (UTC\$106:30)
+ Asia/Rangún (UTC\$106:30)
+ India/Cocos (UTC\$106:30)
+ Asia/Kasgar (UTC\$106:00)
+ Etc/GMT-6 (UTC\$106:00)
+ Asia/Almatý (UTC\$106:00)
+ Asia/Dacca (UTC\$106:00)
+ Asia/Omsk (UTC\$106:00)
+ Asia/Dhaka (UTC\$106:00)
+ India/Chagos (UTC\$106:00)
+ Asia/Kyzylorda (UTC\$106:00)
+ Asia/Bishkek (UTC\$106:00)
+ Antártica/Vostok (UTC\$106:00)
+ Asia/Urumqi (UTC\$106:00)
+ Asia/Timbu (UTC\$106:00)
+ Asia/Thimphu (UTC\$106:00)
+ Asia/Katmandú (UTC\$105:45)
+ Asia/Katmandu (UTC\$105:45)
+ Asia/Calcuta (UTC\$105:30)
+ Asia/Colombo (UTC\$105:30)
+ Asia/Calcutta (UTC\$105:30)
+ Asia/Aktau (UTC\$105:00)
+ Etc/GMT-5 (UTC\$105:00)
+ Asia/Samarcanda (UTC\$105:00)
+ Asia/Karachi (UTC\$105:00)
+ Asia/Ekaterimburgo (UTC\$105:00)
+ Asia/Dusambé (UTC\$105:00)
+ India/Maldivas (UTC\$105:00)
+ Asia/Oral (UTC\$105:00)
+ Asia/Taskent (UTC\$105:00)
+ Antártica/Mawson (UTC\$105:00)
+ Asia/Aktobé (UTC\$105:00)
+ Asia/Asjabad (UTC\$105:00)
+ Asia/Ashgabat (UTC\$105:00)
+ Asia/Atirau (UTC\$105:00)
+ India/Kerguelen (UTC\$105:00)
+ Irán (UTC\$104:30)
+ Asia/Teherán (UTC\$104:30)
+ Asia/Kabul (UTC\$104:30)
+ Asia/Ereván (UTC\$104:00)
+ Etc/GMT-4 (UTC\$104:00)
+ Etc/GMT-4 (UTC\$104:00)
+ Asia/Dubái (UTC\$104:00)
+ India/Reunión (UTC\$104:00)
+ Europa/Sarátov (UTC\$104:00)
+ Europa/Samara (UTC\$104:00)
+ India/Mahé (UTC\$104:00)
+ Asia/Bakú (UTC\$104:00)
+ Asia/Mascate (UTC\$104:00)
+ Europa/Volgogrado (UTC\$104:00)
+ Europa/Astracán (UTC\$104:00)
+ Asia/Tiflis (UTC\$104:00)
+ Europa/Uliánovsk (UTC\$104:00)
+ Asia/Adén (UTC\$103:00)
+ África/Nairobi (UTC\$103:00)
+ Europa/Estambul (UTC\$103:00)
+ Etc/GMT-3 (UTC\$103:00)
+ Europa/Zaporiyia (UTC\$103:00)
+ Israel (UTC\$103:00)
+ India/Comoro (UTC\$103:00)
+ Antártica/Syowa (UTC\$103:00)
+ África/Mogadiscio (UTC\$103:00)
+ Europa/Bucarest (UTC\$103:00)
+ África/Asmera (UTC\$103:00)
+ Europa/Mariehamn (UTC\$103:00)
+ Asia/Estambul (UTC\$103:00)
+ Europa/Tiráspol (UTC\$103:00)
+ Europa/Moscú (UTC\$103:00)
+ Europa/Chisináu (UTC\$103:00)
+ Europa/Helsinki (UTC\$103:00)
+ Asia/Beirut (UTC\$103:00)
+ Asia/Tel\$1Aviv (UTC\$103:00)
+ África/Yibuti (UTC\$103:00)
+ Europa/Simferópol (UTC\$103:00)
+ Europa/Sofía (UTC\$103:00)
+ Asia/Gaza (UTC\$103:00)
+ África/Asmara (UTC\$103:00)
+ Europa/Riga (UTC\$103:00)
+ Asia/Bagdad (UTC\$103:00)
+ Asia/Damasco (UTC\$103:00)
+ África/Dar\$1es\$1Salaam (UTC\$103:00)
+ África/Addis\$1Ababa (UTC\$103:00)
+ Europa/Úzhgorod (UTC\$103:00)
+ Asia/Jerusalén (UTC\$103:00)
+ Asia/Riad (UTC\$103:00)
+ Asia/Kuwait (UTC\$103:00)
+ Europa/Kirov (UTC\$103:00)
+ África/Kampala (UTC\$103:00)
+ Europa/Minsk (UTC\$103:00)
+ Asia/Catar (UTC\$103:00)
+ Europa/Kiev (UTC\$103:00)
+ Asia/Bahréin (UTC\$103:00)
+ Europa/Vilna (UTC\$103:00)
+ India/Antananarivo (UTC\$103:00)
+ India/Mayotte (UTC\$103:00)
+ Europa/Tallin (UTC\$103:00)
+ Turquía (UTC\$103:00)
+ África/Juba (UTC\$103:00)
+ Asia/Nicosia (UTC\$103:00)
+ Asia/Famagusta (UTC\$103:00)
+ W-SU (UTC\$103:00)
+ EET (UTC\$103:00)
+ Asia/Hebrón (UTC\$103:00)
+ Asia/Ammán (UTC\$103:00)
+ Europa/Nicosia (UTC\$103:00)
+ Europa/Atenas (UTC\$103:00)
+ África/El\$1Cairo (UTC\$102:00)
+ África/Babane (UTC\$102:00)
+ Europa/Bruselas (UTC\$102:00)
+ Europa/Varsovia (UTC\$102:00)
+ CET (UTC\$102:00)
+ Europa/Luxemburgo (UTC\$102:00)
+ Etc/GMT-2 (UTC\$102:00)
+ Libia (UTC\$102:00)
+ África/Kigali (UTC\$102:00)
+ África/Trípoli (UTC\$102:00)
+ Europa/Kaliningrado (UTC\$102:00)
+ África/Windhoek (UTC\$102:00)
+ Europa/Malta (UTC\$102:00)
+ Europa/Bosingen (UTC\$102:00)
+ 
+ Europa/Skopie (UTC\$102:00)
+ Europa/Sarajevo (UTC\$102:00)
+ Europa/Roma (UTC\$102:00)
+ Europa/Zúrich (UTC\$102:00)
+ Europa/Gibraltar (UTC\$102:00)
+ África/Lubumbashi (UTC\$102:00)
+ Europa/Vaduz (UTC\$102:00)
+ Europa/Liubliana (UTC\$102:00)
+ Europa/Berlín (UTC\$102:00)
+ Europa/Estocolmo (UTC\$102:00)
+ Europa/Budapest (UTC\$102:00)
+ Europa/Zagreb (UTC\$102:00)
+ Europa/París (UTC\$102:00)
+ África/Ceuta (UTC\$102:00)
+ Europa/Praga (UTC\$102:00)
+ Antártica/Troll (UTC\$102:00)
+ África/Gaborone (UTC\$102:00)
+ Europa/Copenhague (UTC\$102:00)
+ Europa/Viena (UTC\$102:00)
+ Europa/Tirana (UTC\$102:00)
+ MET (UTC\$102:00)
+ Europa/Ámsterdam (UTC\$102:00)
+ África/Maputo (UTC\$102:00)
+ Europa/San\$1Marino (UTC\$102:00)
+ Polonia (UTC\$102:00)
+ Europa/Andorra (UTC\$102:00)
+ Europa/Oslo (UTC\$102:00)
+ Europa/Podgorica (UTC\$102:00)
+ África/Buyumbura (UTC\$102:00)
+ Atlántico/Jan\$1Mayen (UTC\$102:00)
+ África/Maseru (UTC\$102:00)
+ Europa/Madrid (UTC\$102:00)
+ África/Blantire (UTC\$102:00)
+ África/Lusaka (UTC\$102:00)
+ África/Harare (UTC\$102:00)
+ África/Jartum (UTC\$102:00)
+ África/Johannesburgo (UTC\$102:00)
+ Europa/Belgrado (UTC\$102:00)
+ Europa/Bratislava (UTC\$102:00)
+ Ártico/Longyearbyen (UTC\$102:00)
+ Egipto (UTC\$102:00)
+ Europa/Vaticano (UTC\$102:00)
+ Europa/Mónaco (UTC\$102:00)
+ Europa/Londres (UTC\$101:00)
+ Etc/GMT-1 (UTC\$101:00)
+ Europa/Jersey (UTC\$101:00)
+ Europa/Guernsey (UTC\$101:00)
+ Europa/Isle\$1of\$1Man (UTC\$101:00)
+ África/Túnez (UTC\$101:00)
+ África/Malabo (UTC\$101:00)
+ GB-Eire (UTC\$101:00)
+ África/Lagos (UTC\$101:00)
+ África/Argel (UTC\$101:00)
+ GB (UTC\$101:00)
+ Portugal (UTC\$101:00)
+ África/Sao\$1Tome (UTC\$101:00)
+ África/Yamena (UTC\$101:00)
+ Atlántico/Islas Faeroe (UTC\$101:00)
+ Eire (UTC\$101:00)
+ Atlántico/Islas Feroe (UTC\$101:00)
+ Europa/Dublín (UTC\$101:00)
+ África/Libreville (UTC\$101:00)
+ África/El\$1Aaiún (UTC\$101:00)
+ África/El\$1Aaiún (UTC\$101:00)
+ África/Duala (UTC\$101:00)
+ África/Brazzaville (UTC\$101:00)
+ África/Porto-Novo (UTC\$101:00)
+ Atlántico/Madeira (UTC\$101:00)
+ Europa/Lisboa (UTC\$101:00)
+ Atlántico/Canarias (UTC\$101:00)
+ África/Casablanca (UTC\$101:00)
+ Europa/Belfast (UTC\$101:00)
+ África/Luanda (UTC\$101:00)
+ África/Kinsasa (UTC\$101:00)
+ África/Bangui (UTC\$101:00)
+ WET (UTC\$101:00)
+ África/Niamey (UTC\$101:00)
+ GMT (UTC\$100:00)
+ Etc/GMT-0 (UTC\$100:00)
+ Atlántico/St\$1Helena (UTC\$100:00)
+ Etc/GMT\$10 (UTC\$100:00)
+ África/Banjul (UTC\$100:00)
+ Etc/GMT (UTC\$100:00)
+ África/Freetown (UTC\$100:00)
+ África/Bamako (UTC\$100:00)
+ África/Conakri (UTC\$100:00)
+ Universal (UTC\$100:00)
+ África/Nuakchot (UTC\$100:00)
+ UTC (UTC\$100:00)
+ Etc/Universal (UTC\$100:00)
+ Atlántico/Azores (UTC\$100:00)
+ África/Abiyán (UTC\$100:00)
+ África/Acra (UTC\$100:00)
+ Etc/UCT (UTC\$100:00)
+ GMT0 (UTC\$1 00:00)
+ Zulú (UTC\$100:00) Zulú (UTC\$100:00)
+ África/Uagadugú (UTC\$100:00)
+ Atlántico/Reikiavik (UTC\$100:00)
+ Etc/Zulú (UTC\$100:00)
+ Islandia (UTC\$100:00)
+ África/Lomé (UTC\$100:00)
+ Greenwich (UTC\$100:00)
+ Etc/ (UTC\$1 00:00) GMT0 
+ América/Danmarkshavn (UTC\$100:00)
+ África/Dakar (UTC\$100:00)
+ África/Bisáu (UTC\$100:00)
+ Etc/Greenwich (UTC\$100:00)
+ África/Tombuctú (UTC\$100:00)
+ UTC (UTC\$100:00)
+ África/Monrovia (UTC\$100:00)
+ Etc/UTC (UTC\$100:00)

# Tutoriales de expresiones de fórmula
<a name="expression-tutorials"></a>

Puede seguir estos tutoriales para utilizar expresiones de fórmula en AWS IoT SiteWise.

**Topics**
+ [Uso de cadenas en fórmulas](#use-strings-in-formulas)
+ [Filtrado de puntos de datos](#filter-data)
+ [Recuento de puntos de datos que coinciden con una condición](#count-filtered-data)
+ [Datos antiguos en las fórmulas](#late-data)
+ [Calidad de los datos en las fórmulas](#data-quality)
+ [Valores indefinidos, infinitos y de desbordamiento](#undefined-values)

## Uso de cadenas en fórmulas
<a name="use-strings-in-formulas"></a>

Puede operar con cadenas en sus expresiones de fórmula. También puede introducir cadenas a partir de variables que hacen referencia a propiedades de atributos y medidas.

**importante**  
<a name="formula-output-rules"></a>Las expresiones de fórmula solo pueden generar valores dobles o de cadena. Las expresiones anidadas pueden generar otros tipos de datos, como cadenas, pero la fórmula en su conjunto debe evaluarse como un número o una cadena. Puede usar la [función jp](expression-string-functions.md#jp-definition) para convertir una cadena en un número. El valor booleano debe ser 1 (verdadero) o 0 (falso). Para obtener más información, consulte [Valores indefinidos, infinitos y de desbordamiento](#undefined-values).

AWS IoT SiteWise proporciona las siguientes funciones de expresión de fórmulas que puede utilizar para operar con cadenas:
+ [Literales de cadena](expression-literals.md#string-literal-definition)
+ El [operador de índice](expression-operators.md#index-operator-definition) (`s[index]`)
+ El [operador de sector](expression-operators.md#slice-operator-definition) (`s[start:end:step]`)
+ [Funciones de comparación](expression-comparison-functions.md), que puede utilizar para comparar cadenas en [orden lexicográfico](https://en.wikipedia.org/wiki/Lexicographic_order)
+ [Funciones de cadena](expression-string-functions.md), que incluyen la función `jp` que puede analizar objetos JSON serializados y convertir cadenas en números

## Filtrado de puntos de datos
<a name="filter-data"></a>

Puede utilizar la [función if](expression-conditional-functions.md#if-definition) para filtrar los puntos de datos que no cumplan una condición. La función `if` evalúa una condición y devuelve valores diferentes para los resultados `true` y `false`. Puede utilizar la [constante none](expression-constants.md#none-definition) como resultado para un caso de una función `if`, para descartar el punto de datos de ese caso.

**Para filtrar los puntos de datos que coinciden con una condición**
+ Cree una transformación que utilice la función `if` para definir una condición que compruebe si se cumple una condición y que devuelva `none` como el valor `result_if_true` o `result_if_false`.

**Example Ejemplo: filtrar los puntos de datos en los que el agua no esté hirviendo**  
Considere un escenario en el que usted tiene una medición, `temp_c`, que proporciona la temperatura (en Celsius) del agua de una máquina. Puede definir la siguiente transformación para filtrar los puntos de datos en los que el agua no esté hirviendo:  
+ Transformación `boiling_temps = if(gte(temp_c, 100), temp_c, none)`: devuelve la temperatura si es mayor o igual a 100 grados Celsius; de lo contrario, no devuelve ningún punto de datos.

## Recuento de puntos de datos que coinciden con una condición
<a name="count-filtered-data"></a>

Puede utilizar [funciones de comparación](expression-comparison-functions.md) y [sum()](expression-aggregation-functions.md#sum-definition) para contar el número de puntos de datos para los que se cumple una condición.

**Para contar los puntos de datos que coinciden con una condición**

1. Cree una transformación que utilice una función de comparación para definir una condición de filtro en otra propiedad.

1. Cree una métrica que sume los puntos de datos donde se cumple esa condición.

**Example Ejemplo: Contar el número de puntos de datos en los que el agua está hirviendo**  
Considere un escenario en el que usted tiene una medición, `temp_c`, que proporciona la temperatura (en Celsius) del agua de una máquina. Puede definir las siguientes propiedades de transformación y métrica para contar el número de puntos de datos en los que hierve el agua:  
+ Transformación `is_boiling = gte(temp_c, 100)`: devuelve `1` si la temperatura es mayor o igual a 100 grados Celsius; de lo contrario, devuelve `0`.
+ Métrica `boiling_count = sum(is_boiling)`: devuelve el número de puntos de datos en los que el agua está hirviendo.

## Datos antiguos en las fórmulas
<a name="late-data"></a>

AWS IoT SiteWise admite la ingesta tardía de datos con una antigüedad de hasta 7 días. Cuando AWS IoT SiteWise recibe datos atrasados, recalcula los valores existentes para cualquier métrica que introduzca los datos atrasados en una ventana anterior. Estos nuevos cálculos dan lugar a cargos de procesamiento de datos.

**nota**  
Cuando AWS IoT SiteWise calcula las propiedades que introducen datos atrasados, utiliza la expresión de fórmula actual de cada propiedad.

Después de AWS IoT SiteWise volver a calcular una ventana anterior para una métrica, reemplaza el valor anterior de esa ventana. Si ha activado las notificaciones para esa métrica, AWS IoT SiteWise también emite una notificación del valor de la propiedad. Esto significa que puede recibir una nueva notificación de actualización de valor de propiedad para la misma propiedad y marca temporal para la que recibió previamente una notificación. Si las aplicaciones o lagos de datos consumen notificaciones de valor de propiedad, debe actualizar el valor anterior con el nuevo valor para que sus datos sean precisos.

## Calidad de los datos en las fórmulas
<a name="data-quality"></a>

En AWS IoT SiteWise, cada punto de datos tiene un código de calidad, que puede ser uno de los siguientes:
+ `GOOD`: los datos no se ven afectados por ningún problema.
+ `BAD`: los datos se ven afectados por un problema, como un fallo del sensor.
+ `UNCERTAIN`: los datos se ven afectados por un problema, como la falta de precisión de un sensor.

AWS IoT SiteWise consume solo datos `GOOD` de calidad cuando calcula las transformaciones y las métricas. AWS IoT SiteWise genera solo datos `GOOD` de calidad para que los cálculos se realicen correctamente. Si un cálculo no tiene éxito, AWS IoT SiteWise no genera un punto de datos para ese cálculo. Esto puede ocurrir si un cálculo da como resultado un valor indefinido, infinito o de desbordamiento.

Para obtener más información acerca de cómo consultar datos y filtrar por calidad de datos, consulte [Consulta datos de AWS IoT SiteWise](query-industrial-data.md).

## Valores indefinidos, infinitos y de desbordamiento
<a name="undefined-values"></a>

Algunas expresiones de fórmula (como `x / 0``sqrt(-1)`, o`log(0)`) calculan valores indefinidos en un sistema de números reales, infinitos o que están fuera del rango admitido por él. AWS IoT SiteWise Cuando la expresión de una propiedad de un activo calcula un valor indefinido, infinito o desbordante, AWS IoT SiteWise no genera ningún punto de datos para ese cálculo.

AWS IoT SiteWise tampoco genera un punto de datos si calcula un valor no numérico como resultado de una expresión de fórmula. Esto significa que si se define una fórmula que calcula una cadena, una matriz o la [constante none](expression-constants.md#none-definition), AWS IoT SiteWise no generará ningún punto de datos para ese cálculo.

**Example Ejemplos**  
Cada una de las siguientes expresiones de fórmula da como resultado un valor que no AWS IoT SiteWise se puede representar como un número. AWS IoT SiteWise no genera un punto de datos cuando calcula estas expresiones de fórmula.  
+ `x / 0` es indefinido.
+ `log(0)` es indefinido.
+ `sqrt(-1)` es indefinido en un sistema numérico real.
+ `"hello" + " world"` es una cadena.
+ `jp('{"values":[3,6,7]}', '$.values')` es una matriz.
+ `if(gte(temp, 300), temp, none)` es `none` cuando `temp` es menos de `300`.