

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.

# 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"
                }
            }
        ]
    }
}
}
{{...}}
}
```