

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Definir propriedades de dados
<a name="asset-properties"></a>

As *propriedades do ativo* são as estruturas em cada ativo que contêm dados do mesmo. As propriedades do ativo podem ser qualquer de um dos seguintes tipos:
+ **Atributos** – propriedades geralmente estáticas de um ativo, como fabricante do dispositivo ou região geográfica. Para obter mais informações, consulte [Definir dados estáticos (atributos)](attributes.md).
+ **Medições** – fluxos de dados brutos do sensor de um dispositivo de um ativo, como valores de velocidade de rotação com time stamp ou valores de temperatura com time stamp em Celsius. Uma medição é definida por um apelido de fluxo de dados. Para obter mais informações, consulte [Definir fluxos de dados de equipamentos (medições)](measurements.md).
+ **Transformações** – valores transformados de séries temporais de um ativo, como valores de temperatura com time stamp em Fahrenheit. Uma transformação é definida por uma expressão e as variáveis a serem consumidas com essa expressão. Para obter mais informações, consulte [Transformar dados (transformações)](transforms.md).
+ **Métricas** – dados de um ativo agregados em um intervalo de tempo especificado, como a temperatura média por hora. Uma métrica é definida por um intervalo de tempo, uma expressão e as variáveis a serem consumidas com essa expressão. As expressões métricas podem inserir as propriedades métricas dos ativos associados, para que você possa calcular métricas que representem sua operação ou um subconjunto de sua operação. Para obter mais informações, consulte [Agregar dados de propriedades e outros ativos (métricas)](metrics.md).

Para obter mais informações, consulte [Crie modelos de ativos em AWS IoT SiteWise](create-asset-models.md).

Para obter um exemplo de como usar medições, transformações e métricas para calcular a Eficácia Geral do Equipamento (OEE), consulte [Calcule o OEE em AWS IoT SiteWise](calculate-oee.md).

**Topics**
+ [Definir dados estáticos (atributos)](attributes.md)
+ [Definir fluxos de dados de equipamentos (medições)](measurements.md)
+ [Transformar dados (transformações)](transforms.md)
+ [Agregar dados de propriedades e outros ativos (métricas)](metrics.md)
+ [Usar expressões de fórmula](formula-expressions.md)

# Definir dados estáticos (atributos)
<a name="attributes"></a>

Os *Ativos dos atributos* representam informações geralmente estáticas, como o fabricante do dispositivo ou a localização geográfica. Cada ativo criado a partir de um modelo de ativo contém os atributos desse modelo.

**Topics**
+ [Definir atributos (console)](#define-attributes-console)
+ [Definir atributos (AWS CLI)](#define-attributes-cli)

## Definir atributos (console)
<a name="define-attributes-console"></a>

Ao definir um atributo para um modelo de ativo no AWS IoT SiteWise console, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-console"></a>**Nome** — o nome da propriedade.
+ **Valor padrão** – (opcional) o valor predefinido para este atributo. Os ativos criados a partir do modelo têm esse valor para o atributo. Para obter mais informações sobre como substituir o valor predefinido em um ativo criado a partir de um modelo, consulte [Atualizar valores de atributo](update-attribute-values.md).
+ <a name="asset-property-data-type-console"></a>**Tipo de dado** — o tipo de dado da propriedade, que é um dos seguintes:
  + **String** – uma string com até 1024 bytes.
  + **Número inteiro** – um número inteiro assinado de 32 bits com intervalo [-2.147.483.648, 2.147.483.647].
  + **Duplo** – um número de ponto flutuante com intervalo [-10^100, 10^100] e precisão dupla IEEE 754.
  + **Booleano** — `true` ou `false`.
+ **ID externo**: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.

Para obter mais informações, consulte [Criar um modelo de ativo (console)](create-asset-models.md#create-asset-model-console).

## Definir atributos (AWS CLI)
<a name="define-attributes-cli"></a>

Ao definir um atributo para um modelo de ativo com a AWS IoT SiteWise API, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-cli"></a>`name` – o nome da propriedade.
+ `defaultValue` – (opcional) o valor padrão para este atributo. Os ativos criados a partir do modelo têm esse valor para o atributo. Para obter mais informações sobre como substituir o valor predefinido em um ativo criado a partir de um modelo, consulte [Atualizar valores de atributo](update-attribute-values.md).
+ <a name="asset-property-data-type-cli"></a>`dataType`— o tipo de dado da propriedade, que é um dos seguintes:
  + `STRING` – uma string com até 1024 bytes.
  + `INTEGER` – um número inteiro assinado de 32 bits com intervalo [-2.147.483.648, 2.147.483.647].
  + `DOUBLE` – um número de ponto flutuante com intervalo [-10^100, 10^100] e precisão dupla IEEE 754.
  + `BOOLEAN` – `true` ou `false`.
+ `externalId`: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.

**Example Exemplo de definição de atributo**  
O exemplo a seguir demonstra um atributo que representa o número de um modelo de ativo com um valor padrão. Esse objeto é um exemplo de um [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contém um [Atributo](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Attribute.html). Você pode especificar esse objeto como parte da carga útil da solicitação [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para criar uma propriedade de atributo. Para obter mais informações, consulte [Criar um modelo de ativo (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

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

# Definir fluxos de dados de equipamentos (medições)
<a name="measurements"></a>

Uma *medição* representa o fluxo de dados brutos do sensor de um dispositivo, como valores de temperatura com time stamp ou valores de rotação com time stamp por minuto (RPM).

**Topics**
+ [Definir medições (console)](#define-measurements-console)
+ [Definir medições (AWS CLI)](#define-measurements-cli)

## Definir medições (console)
<a name="define-measurements-console"></a>

Ao definir uma medida para um modelo de ativo no AWS IoT SiteWise console, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-console"></a>**Nome** — o nome da propriedade.
+ <a name="asset-property-unit-console"></a>**Unidade** – (opcional) unidade científica da propriedade, como mm ou Celsius.
+ <a name="asset-property-data-type-console"></a>**Tipo de dado** — o tipo de dado da propriedade, que é um dos seguintes:
  + **String** – uma string com até 1024 bytes.
  + **Número inteiro** – um número inteiro assinado de 32 bits com intervalo [-2.147.483.648, 2.147.483.647].
  + **Duplo** – um número de ponto flutuante com intervalo [-10^100, 10^100] e precisão dupla IEEE 754.
  + **Booleano** — `true` ou `false`.
+ **ID externo**: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.

Para obter mais informações, consulte [Criar um modelo de ativo (console)](create-asset-models.md#create-asset-model-console).

## Definir medições (AWS CLI)
<a name="define-measurements-cli"></a>

Ao definir uma medida para um modelo de ativo com a AWS IoT SiteWise API, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-cli"></a>`name` – o nome da propriedade.
+ <a name="asset-property-data-type-cli"></a>`dataType`— o tipo de dado da propriedade, que é um dos seguintes:
  + `STRING` – uma string com até 1024 bytes.
  + `INTEGER` – um número inteiro assinado de 32 bits com intervalo [-2.147.483.648, 2.147.483.647].
  + `DOUBLE` – um número de ponto flutuante com intervalo [-10^100, 10^100] e precisão dupla IEEE 754.
  + `BOOLEAN` – `true` ou `false`.
+ <a name="asset-property-unit-cli"></a>`unit` – (opcional) unidade científica da propriedade, como mm ou Celsius.
+ `externalId`: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.

**Example Exemplo de definição de medição**  
O exemplo a seguir demonstra uma medição que representa as leituras do sensor de temperatura de um ativo. Esse objeto é um exemplo de um [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contém uma [medida](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html). Você pode especificar esse objeto como parte da carga útil da solicitação [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para criar uma propriedade de medição. Para obter mais informações, consulte [Criar um modelo de ativo (AWS CLI)](create-asset-models.md#create-asset-model-cli).  
A [Medição](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html) é uma estrutura vazia ao definir um modelo de ativo, já que, posteriormente, você irá configurar cada ativo para uso de fluxos de dados de dispositivo exclusivos. Para obter mais informações sobre como conectar a propriedade de medição de um ativo ao fluxo de dados do sensor de um dispositivo, consulte o [Gerencie fluxos de dados para AWS IoT SiteWise](manage-data-streams.md).  

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

# Transformar dados (transformações)
<a name="transforms"></a>

As *Transformações* são expressões matemáticas que mapeiam pontos de dados de propriedades de um ativo de um formulário a outro. Uma expressão de transformação consiste em variáveis de propriedade de ativos, literais, operadores e funções. Os pontos de dados transformados mantêm uma one-to-one relação com os pontos de dados de entrada. AWS IoT SiteWise calcula um novo ponto de dados transformado sempre que qualquer uma das propriedades de entrada recebe um novo ponto de dados.

**nota**  
Para atualizações de propriedades com o mesmo carimbo de data/hora, os valores de saída podem ser substituídos por atualizações de outras propriedades de entrada.

Por exemplo, se o seu ativo tiver um fluxo de medição de temperatura chamado `Temperature_C` com unidades em Celsius, você poderá converter cada ponto de dados em Fahrenheit com a fórmula `Temperature_F = 9/5 * Temperature_C + 32`. Cada vez que AWS IoT SiteWise recebe um ponto de dados no fluxo de `Temperature_C` medição, o `Temperature_F` valor correspondente é calculado em alguns segundos e está disponível como `Temperature_F` propriedade.

Caso sua transformação contiver mais de uma variável, o ponto de dados que chegar primeiro iniciará o cálculo imediatamente. Considere um exemplo onde um fabricante de peças usa uma transformação para monitorar a qualidade do produto. Usando um padrão diferente com base no tipo de peça, o fabricante usa as seguintes medidas para representar o processo:
+ `Part_Number`: uma string que identifica o tipo de peça.
+ `Good_Count`: um inteiro que aumenta em uma unidade caso a peça atenda ao padrão.
+ `Bad_Count`: um inteiro que aumenta em uma unidade caso a peça não atenda ao padrão.

O fabricante também cria uma transformação, `Quality_Monitor`, igual a ` if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")`.

Essa transformação monitora a porcentagem de peças defeituosas produzidas para um tipo específico de peça. Se o número da peça for BLT123 e a porcentagem de peças defeituosas exceder 10 por cento (0,1), a transformação será retornada`"Caution"`. Caso contrário, a transformação retornará `"Normal"`.

**nota**  
Se `Part_Number` receber um novo ponto de dados antes de outras medições, a `Quality_Monitor` transformação usa o novo valor `Part_Number` e os valores `Bad_Count` e `Good_Count` mais recentes. Para evitar erros, reinicie `Good_Count` e `Bad_Count` antes da próxima execução de fabricação.
Use [métricas](metrics.md) se quiser avaliar expressões somente depois que todas as variáveis receberem novos pontos de dados.

**Topics**
+ [Definir transformações (console)](#define-transforms-console)
+ [Definir transformações (AWS CLI)](#define-transform-cli)

## Definir transformações (console)
<a name="define-transforms-console"></a>

Ao definir uma transformação para um modelo de ativo no AWS IoT SiteWise console, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-console"></a>**Nome** — o nome da propriedade.
+ <a name="asset-property-unit-console"></a>**Unidade** – (opcional) unidade científica da propriedade, como mm ou Celsius.
+ **Tipo de dado** — tipo de dado da transformação, que pode ser **Duplo** ou **String**.
+ **ID externo**: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.
+ **Fórmula** — a expressão de transformação. As expressões de transformação não podem usar funções de agregação ou funções temporais. Para abrir o recurso de preenchimento automático, comece a digitar ou pressione a tecla de seta para baixo. Para obter mais informações, consulte [Usar expressões de fórmula](formula-expressions.md).
**Importante**  <a name="transform-input-rules"></a>
As transformações só podem inserir propriedades de número inteiro, duplo, Booleano, ou tipo string. Os Booleanos são convertidos em `0` (falso) e `1` (verdadeiro).  
As transformações devem inserir uma ou mais propriedades que não sejam atributo e qualquer número de propriedades de atributo. O AWS IoT SiteWise calcula um novo ponto de dados transformado cada vez que a propriedade de entrada que não for de atributo receber um novo ponto de dados. Novos valores de atributo não inicializam atualizações de transformação. A mesma taxa de solicitação para operações de API de dados de propriedades de ativos se aplica aos resultados de computação de transformação.  
<a name="formula-output-rules"></a>As expressões de fórmula só podem produzir valores duplos ou de string. Expressões aninhadas podem gerar outros tipos de dados, como strings, mas a fórmula como um todo deve ser avaliada como um número ou string. Você pode usar a [função jp](expression-string-functions.md#jp-definition) para converter uma string em um número. O valor Booleano deve ser 1 (verdadeiro) ou 0 (falso). Para obter mais informações, consulte [Valores indefinidos, infinitos e excedidos](expression-tutorials.md#undefined-values).

Para obter mais informações, consulte [Criar um modelo de ativo (console)](create-asset-models.md#create-asset-model-console).

## Definir transformações (AWS CLI)
<a name="define-transform-cli"></a>

Ao definir uma transformação para um modelo de ativo com a AWS IoT SiteWise API, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-cli"></a>`name` – o nome da propriedade.
+ <a name="asset-property-unit-cli"></a>`unit` – (opcional) unidade científica da propriedade, como mm ou Celsius.
+ `dataType` – tipo de dados da transformação, que deve ser `DOUBLE` ou`STRING`.
+ `externalId`: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.
+ `expression` – expressão de transformação. As expressões de transformação não podem usar funções de agregação ou funções temporais. Para obter mais informações, consulte [Usar expressões de fórmula](formula-expressions.md).
+ `variables` – lista de variáveis que define as outras propriedades do seu ativo a serem usadas na expressão. Cada estrutura variável contém um nome simples para uso na expressão e uma estrutura de `value` que identifica qual propriedade deve ser vinculada a essa variável. A estrutura `value` contém as seguintes informações:
  + `propertyId` – a ID da propriedade da qual deseja extrair valores. Você pode usar o nome da propriedade em vez de seu ID.
**Importante**  <a name="transform-input-rules"></a>
As transformações só podem inserir propriedades de número inteiro, duplo, Booleano, ou tipo string. Os Booleanos são convertidos em `0` (falso) e `1` (verdadeiro).  
As transformações devem inserir uma ou mais propriedades que não sejam atributo e qualquer número de propriedades de atributo. O AWS IoT SiteWise calcula um novo ponto de dados transformado cada vez que a propriedade de entrada que não for de atributo receber um novo ponto de dados. Novos valores de atributo não inicializam atualizações de transformação. A mesma taxa de solicitação para operações de API de dados de propriedades de ativos se aplica aos resultados de computação de transformação.  
<a name="formula-output-rules"></a>As expressões de fórmula só podem produzir valores duplos ou de string. Expressões aninhadas podem gerar outros tipos de dados, como strings, mas a fórmula como um todo deve ser avaliada como um número ou string. Você pode usar a [função jp](expression-string-functions.md#jp-definition) para converter uma string em um número. O valor Booleano deve ser 1 (verdadeiro) ou 0 (falso). Para obter mais informações, consulte [Valores indefinidos, infinitos e excedidos](expression-tutorials.md#undefined-values).

**Example definição de transformação**  
O exemplo a seguir demonstra uma propriedade de transformação que converte dados de medição de temperatura de um ativo de Celsius para Fahrenheit. Esse objeto é um exemplo de um [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contém uma [transformação](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Transform.html). Você pode especificar esse objeto como parte da carga útil da solicitação [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para criar uma propriedade de transformação. Para obter mais informações, consulte [Criar um modelo de ativo (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 definição de transformação que contém três variáveis**  
O exemplo a seguir demonstra uma propriedade de transformação que retorna uma mensagem de aviso (`"Caution"`) se mais de 10% das BLT123 peças não atenderem ao padrão. Caso contrário, ela retornará uma mensagem de informação (`"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"
                }
            }
        ]
    }
}
}
...
}
```

# Agregar dados de propriedades e outros ativos (métricas)
<a name="metrics"></a>

As métricas são expressões matemáticas que usam funções agregadas para processar todos os pontos de dados de entrada e produzir um único ponto de dados por intervalo de tempo especificado. Por exemplo, uma métrica pode calcular a temperatura média por hora a partir de um fluxo de dados de temperatura.

As métricas podem inserir dados de entrada de ativos associados, para que você possa calcular estatísticas que forneçam informações sobre sua operação ou sobre um subconjunto da sua operação. Por exemplo, uma métrica pode calcular a temperatura média horária em todas as turbinas eólicas em um parque eólico. Para obter mais informações sobre como definir associações entre ativos, consulte [Definir hierarquias de modelos de ativo](define-asset-hierarchies.md).

As métricas também podem inserir dados de entrada de outras propriedades sem agregar dados a cada intervalo de tempo. Se você especificar um [atributo](attributes.md) em uma fórmula, AWS IoT SiteWise usa o valor [mais recente](expression-temporal-functions.md#latest-definition) desse atributo ao computar a fórmula. Se você especificar uma métrica em uma fórmula, AWS IoT SiteWise usa o [último](expression-temporal-functions.md#last-definition) valor para o intervalo de tempo durante o qual ela calcula a fórmula. Isso significa que você pode definir métricas como `OEE = Availability * Quality * Performance`, onde `Availability`, `Quality` e `Performance` são todas as outras métricas no mesmo modelo de ativos.

AWS IoT SiteWise também calcula automaticamente um conjunto de métricas básicas de agregação para todas as propriedades do ativo. Para reduzir os custos de computação, você pode usar esses agregados em vez de definir métricas personalizadas para cálculos básicos. Para obter mais informações, consulte [Consulte agregados de propriedades de ativos em AWS IoT SiteWise](aggregates.md).

**Topics**
+ [Definir métricas (console)](#define-metrics-console)
+ [Definir métricas (AWS CLI)](#define-metrics-cli)

## Definir métricas (console)
<a name="define-metrics-console"></a>

Ao definir uma métrica para um modelo de ativo no AWS IoT SiteWise console, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-console"></a>**Nome** — o nome da propriedade.
+ **Tipo de dado** — tipo de dado da transformação, que pode ser **Duplo** ou **String**.
+ **ID externo**: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.
+ **Fórmula** — a expressão métrica. As expressões métricas podem usar [funções de agregação](expression-aggregation-functions.md) para inserir dados de entrada de uma propriedade para todos os ativos associados em uma hierarquia. Comece digitando ou pressionando a seta para baixo para abrir o recurso de preenchimento automático. Para obter mais informações, consulte [Usar expressões de fórmula](formula-expressions.md).
**Importante**  <a name="metric-input-rules"></a>
Métricas só podem inserir propriedades do tipo inteiro, duplo, Booleano ou string. Os Booleanos são convertidos em `0` (falso) e `1` (verdadeiro).  
Se você definir quaisquer variáveis de entrada de métrica na expressão de uma métrica, essas entradas deverão ter o mesmo intervalo de tempo que a métrica de saída.  
<a name="formula-output-rules"></a>As expressões de fórmula só podem produzir valores duplos ou de string. Expressões aninhadas podem gerar outros tipos de dados, como strings, mas a fórmula como um todo deve ser avaliada como um número ou string. Você pode usar a [função jp](expression-string-functions.md#jp-definition) para converter uma string em um número. O valor Booleano deve ser 1 (verdadeiro) ou 0 (falso). Para obter mais informações, consulte [Valores indefinidos, infinitos e excedidos](expression-tutorials.md#undefined-values).
+ **Intervalo de tempo** – tempo de intervalo métrico. <a name="metric-window-info"></a>AWS IoT SiteWise é compatível com a seguinte janela em cascata de intervalos de tempo, onde cada intervalo começa quando o anterior termina:
  + **1 minuto** – <a name="metric-window-1m"></a> 1 minuto, calculado no final de cada minuto (00:00:00, 00:01:00, 00:02:00 e assim por diante).
  + **5 minutos** – <a name="metric-window-5m"></a>5 minutos, calculados no final de cada cinco minutos a partir da hora (00:00:00, 00:05:00, 00:10:00 e assim por diante).
  + **15 minutos** – <a name="metric-window-15m"></a>15 minutos, calculados no final de cada quinze minutos a partir da hora (00:00:00, 00:15:00, 00:30:00 e assim por diante).
  + **1 hora** – <a name="metric-window-1h"></a>1 hora (60 minutos), calculada no final de cada hora em UTC (00:00:00, 01:00:00, 02:00:00 e assim por diante).
  + **1 dia** – <a name="metric-window-1d"></a>1 dia (24 horas), calculado no final de cada dia em UTC (00:00:00 segunda-feira, 00:00:00 terça-feira e assim por diante).
  + **1 semana** – <a name="metric-window-1w"></a>1 semana (7 dias), calculada no final de cada domingo em UTC (a cada 00:00:00 segunda-feira).
  + **Intervalo personalizado** — você pode inserir qualquer intervalo de tempo entre um minuto e uma semana.
+ **Data de deslocamento** — (opcional) data de referência a partir da qual agregar dados.
+ **Tempo de deslocamento** — (opcional) horário de referência a partir do qual agregar dados. O horário de deslocamento deve ser entre 00:00:00 e 23:59:59.
+ **Fuso horário de deslocamento** — (opcional) fuso horário do deslocamento. Se não for especificado, o fuso horário de compensação padrão é Horário Universal Coordenado (UTC). Veja os seguintes fusos horários compatíveis.

### Fusos horários suportados:
<a name="supported-time-zones"></a>
+ (UTC\$1 00:00) Tempo Universal Coordenado
+ (UTC\$1 01:00) Hora Central Europeia
+ (UTC\$1 02:00) Leste Europeu
+ (UTC03\$1:00) Horário da África Oriental
+ (UTC\$1 04:00) Hora do Oriente Próximo
+ (UTC\$1 05:00) Horário de Lahore, no Paquistão
+ (UTC\$1 05:30) Horário padrão da Índia
+ (UTC\$1 06:00) Horário padrão de Bangladesh
+ (UTC\$1 07:00) Horário padrão do Vietnã
+ (UTC\$1 08:00) Hora China Taipei
+ (UTC\$1 09:00) Horário Padrão do Japão
+ (UTC\$1 09:30) Hora Central da Austrália
+ (UTC\$1 10:00) Horário do Leste da Austrália
+ (UTC\$1 11:00) Horário Padrão de Salomão
+ (UTC\$1 12:00) Horário Padrão da Nova Zelândia
+ (UTC- 11:00) Horário das Ilhas Midway
+ (UTC- 10:00) Horário padrão do Havaí
+ (UTC- 09:00) Horário padrão do Alasca
+ (UTC- 08:00) Hora padrão do Pacífico
+ (UTC- 07:00) Horário padrão de Phoenix
+ (UTC- 06:00) Horário Padrão Central
+ (UTC- 05:00) Horário Padrão do Leste
+ (UTC- 04:00) Horário de Porto Rico e Ilhas Virgens dos EUA
+ (UTC- 03:00) Horário Padrão da Argentina
+ (UTC- 02:00) Hora da Geórgia do Sul
+ (UTC- 01:00) Horário da África Central

**Example intervalo de tempo personalizado com um deslocamento (console)**  
O exemplo a seguir mostra como definir um intervalo de 12 horas com um deslocamento em 20 de fevereiro de 2021, às 18:30:30 (PST).  

**Para definir um intervalo personalizado com um deslocamento**

1. Em **Intervalo de tempo**, escolha **Intervalo personalizado**.

1. Para **Intervalo de tempo**, execute uma das opções a seguir:
   + Insira **12** e escolha **horas**.
   + Insira **720** e escolha **minutos**.
   + Insira **43200** e escolha **segundos**.
**Importante**  
O **intervalo de tempo** deve ser um número inteiro, independente da unidade.

1. Em **Data de deslocamento**, escolha **20/02/2021**.

1. Em **Tempo de deslocamento**, insira **18:30:30**.

1. Em **Fuso horário de deslocamento**, escolha **(UTC- 08:00) Horário Padrão do Pacífico**.
Se a métrica é criada em 1º de julho de 2021, até as 18h30min30s (PST), você recebe o primeiro resultado da agregação em 1º de julho de 2021, às 18h30min30s (PST). O segundo resultado da agregação chega em 2 de julho de 2021, às 6h30min30s (PST), e assim por diante.

## Definir métricas (AWS CLI)
<a name="define-metrics-cli"></a>

Ao definir uma métrica para um modelo de ativo com a AWS IoT SiteWise API, você especifica os seguintes parâmetros:
+ <a name="asset-property-name-cli"></a>`name` – o nome da propriedade.
+ `dataType` — tipo de dados da métrica, que pode ser `DOUBLE` ou `STRING`.
+ `externalId`: (opcional) é um ID definido pelo usuário. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.
+ `expression` — a expressão métrica. As expressões métricas podem usar [funções de agregação](expression-aggregation-functions.md) para inserir dados de entrada de uma propriedade para todos os ativos associados em uma hierarquia. Para obter mais informações, consulte [Usar expressões de fórmula](formula-expressions.md).
+ `window` — intervalo de tempo e deslocamento da janela de queda da métrica, onde cada intervalo começa quando o anterior termina:
  + `interval` – intervalo de tempo da janela em cascata. O intervalo de tempo deve estar entre um minuto e uma semana.
  + `offsets` – deslocamento da janela em cascata. 

  Para obter mais informações, consulte [TumblingWindow](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TumblingWindow.html) na *Referência de APIs do AWS IoT SiteWise *.  
**Example intervalo de tempo personalizado com um deslocamento (AWS CLI)**  

  O exemplo a seguir mostra como definir um intervalo de 12 horas com um deslocamento em 20 de fevereiro de 2021, às 18:30:30 (PST).

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

  Se a métrica é criada em 1º de julho de 2021, até as 18h30min30s (PST), você recebe o primeiro resultado da agregação em 1º de julho de 2021, às 18h30min30s (PST). O segundo resultado da agregação chega em 2 de julho de 2021, às 6h30min30s (PST), e assim por diante.
+ `variables` – uma lista de que define as outras propriedades de seu ativo ou ativos filho a serem usados na expressão. Cada estrutura variável contém um nome simples para uso na expressão e uma estrutura `value`, que identifica qual propriedade deve ser vinculada à variável. A estrutura `value` contém as seguintes informações:
  + `propertyId` – ID da propriedade da qual deseja extrair valores. Você pode usar o nome da propriedade em vez da ID se a propriedade for definida no modelo atual (em vez de definida em um modelo de uma hierarquia).
  + `hierarchyId` – (opcional) ID da hierarquia da qual consultar ativos filhos para a propriedade. Você pode usar o nome da definição de hierarquia em vez da ID. Se você omitir esse valor, AWS IoT SiteWise localizará a propriedade no modelo atual.
**Importante**  <a name="metric-input-rules"></a>
Métricas só podem inserir propriedades do tipo inteiro, duplo, Booleano ou string. Os Booleanos são convertidos em `0` (falso) e `1` (verdadeiro).  
Se você definir quaisquer variáveis de entrada de métrica na expressão de uma métrica, essas entradas deverão ter o mesmo intervalo de tempo que a métrica de saída.  
<a name="formula-output-rules"></a>As expressões de fórmula só podem produzir valores duplos ou de string. Expressões aninhadas podem gerar outros tipos de dados, como strings, mas a fórmula como um todo deve ser avaliada como um número ou string. Você pode usar a [função jp](expression-string-functions.md#jp-definition) para converter uma string em um número. O valor Booleano deve ser 1 (verdadeiro) ou 0 (falso). Para obter mais informações, consulte [Valores indefinidos, infinitos e excedidos](expression-tutorials.md#undefined-values).
+ <a name="asset-property-unit-cli"></a>`unit` – (opcional) unidade científica da propriedade, como mm ou Celsius.

**Example Exemplo de definição de métrica**  
O exemplo a seguir demonstra uma propriedade de métrica que agrega dados de medição de temperatura de um ativo para calcular a temperatura máxima por hora em Fahrenheit. Esse objeto é um exemplo de um [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contém uma [métrica](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html). Você pode especificar esse objeto como parte da carga útil da solicitação [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para criar uma propriedade de métrica. Para obter mais informações, consulte [Criar um modelo de ativo (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 Exemplo de definição de métrica que insere dados de entrada de ativos associados**  
O exemplo a seguir demonstra uma propriedade métrica que agrega múltiplos dados de potência média de turbinas eólicas para calcular a potência média total de um parque eólico. Esse objeto é um exemplo de um [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)que contém uma [métrica](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html). Você pode especificar esse objeto como parte da carga útil da solicitação [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) para criar uma propriedade 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"
      }
    ],
    ...
}
```

# Usar expressões de fórmula
<a name="formula-expressions"></a>

Com expressões de fórmula, você pode definir as funções matemáticas para transformar e agregar seus dados industriais brutos a fim de obter insights sobre sua operação. As expressões de fórmula combinam literais, operadores, funções e variáveis para processar dados. Para obter mais informações sobre como definir propriedades que usam expressões de fórmula, consulte [Transformar dados (transformações)](transforms.md) e [Agregar dados de propriedades e outros ativos (métricas)](metrics.md). Transformações e métricas são propriedades da fórmula.

**Topics**
+ [Usar variáveis em expressões de fórmula](expression-variables.md)
+ [Usar literais em expressões de fórmula](expression-literals.md)
+ [Usar operadores em expressões de fórmula](expression-operators.md)
+ [Usar constantes em expressões de fórmula](expression-constants.md)
+ [Usar funções em expressões de fórmula](expression-functions.md)
+ [Tutoriais de expressão de fórmulas](expression-tutorials.md)

# Usar variáveis em expressões de fórmula
<a name="expression-variables"></a>

As variáveis representam propriedades AWS IoT SiteWise de ativos em expressões de fórmulas. Use variáveis para inserir valores de outras propriedades do ativo em suas expressões, para que você possa processar dados de propriedades constantes ([atributos](attributes.md)), fluxos de dados brutos ([medidas](measurements.md)) e outras propriedades da fórmula.

As variáveis podem representar propriedades de ativos do mesmo modelo de ativo ou de modelos de ativos filho associados. Somente fórmulas métricas podem inserir variáveis de modelos de ativos filho.

Você identifica variáveis por nomes diferentes no console e na API.
+ **AWS IoT SiteWise console** — Use nomes de propriedades de ativos como variáveis em suas expressões.
+ **AWS IoT SiteWise API (AWS CLI, AWS SDKs)** — Defina variáveis com a [ExpressionVariable](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExpressionVariable.html)estrutura, o que requer um nome de variável e uma referência a uma propriedade do ativo. O nome da variável pode conter letras minúsculas, números e sublinhados (\$1). Em seguida, use nomes de variáveis para referenciar propriedades de ativos em suas expressões.

Os nomes de variáveis diferenciam minúsculas de maiúsculas.

Para obter mais informações, consulte [Definindo transformações](transforms.md) e [Definindo de métricas](metrics.md).

## Usar variáveis para fazer referência a propriedades
<a name="variable-values"></a>

O *valor* de uma variável define a propriedade que ela referencia. O AWS IoT SiteWise oferece maneiras diferentes de fazer isso.
+ **Por ID da propriedade**: você pode especificar o ID exclusivo da propriedade (UUID) para identificá-la.
+ **Por nome**: se a propriedade estiver no mesmo modelo de ativo, você poderá especificar o nome no campo de ID da propriedade.
+ **Por caminho**: o valor de uma variável pode fazer referência a uma propriedade pelo *caminho*. Para obter mais informações, consulte [Usar caminhos para fazer referência a propriedades do modelo composto personalizado](custom-composite-models.md#property-paths).

**nota**  
 As variáveis não são suportadas pelo AWS IoT SiteWise console. Eles são usados pela AWS IoT SiteWise API, incluindo o AWS Command Line Interface AWS CLI) AWS SDKs e. 

 Uma variável que você recebe em uma resposta AWS IoT SiteWise inclui informações completas sobre o valor, incluindo a ID e o caminho.

 No entanto, ao passar uma variável para AWS IoT SiteWise (por exemplo, em uma chamada de “criar” ou “atualizar”), você só precisa especificar uma delas. Por exemplo, se especificar o caminho, você não precisará fornecer o ID. 

# Usar literais em expressões de fórmula
<a name="expression-literals"></a>

AWS IoT SiteWise suporta o uso de literais em expressões e fórmulas. Literais são valores fixos que representam um tipo de dados específico. Em AWS IoT SiteWise, você pode definir literais numéricos e de seqüências de caracteres em expressões de fórmula. Os literais podem ser usados em vários contextos, inclusive transformações de dados, condições de alarme e cálculos de visualização.


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

  Use números e notação científica para definir números inteiros e duplos. Você pode usar a [notação E](https://en.wikipedia.org/wiki/Scientific_notation#E_notation) para expressar números com notação científica.

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

  Use os caracteres `'` (aspas) e `"` (aspas duplas) para definir strings de caracteres. O tipo de cotação para o início e fim deve corresponder. Para escapar de uma citação que corresponda a que você usa para declarar uma string, inclua o caractere de aspa duas vezes. Esse é o único caractere de escape em AWS IoT SiteWise strings.

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

# Usar operadores em expressões de fórmula
<a name="expression-operators"></a>

Você pode usar os seguintes operadores matemáticos comuns em suas expressões:


| Operador | Description | 
| --- | --- | 
|  `+`  |  Se ambos os operandos forem números, esse operador adiciona os operandos esquerdo e direito. Se um dos operandos for uma string, esse operador concatena os operandos esquerdo e direito como strings. Por exemplo, a expressão `1 + 2 + " is three"` é avaliada como `"3 is three"`. A string concatenada pode conter até 1024 caracteres. Se a string exceder 1024 caracteres, AWS IoT SiteWise não produzirá um ponto de dados para esse cálculo.  | 
|  `-`  |  Subtrai o operando direito do operando esquerdo. <a name="operator-numbers-only"></a>Você só pode usar esse operador com operandos numéricos.  | 
|  `/`  |  Divide o operando esquerdo pelo operando direito. <a name="operator-numbers-only"></a>Você só pode usar esse operador com operandos numéricos.  | 
|  `*`  |  Multiplica os operandos esquerdo e direito. <a name="operator-numbers-only"></a>Você só pode usar esse operador com operandos numéricos.  | 
|  `^`  |  Eleva o operando esquerdo à potência do operando direito (exponenciação). <a name="operator-numbers-only"></a>Você só pode usar esse operador com operandos numéricos.  | 
|  `%`  |  Gera o restante da divisão do operando esquerdo pelo operando direito. O resultado tem o mesmo sinal que o operando esquerdo. Esse comportamento é diferente do operador de módulo. <a name="operator-numbers-only"></a>Você só pode usar esse operador com operandos numéricos.  | 
|  `x < y`  |  Retorna `1` se `x` for menor que `y`, caso contrário, `0`.  | 
|  `x > y`  |  Retorna `1` se `x` for maior que `y`, caso contrário, `0`.  | 
|  `x <= y`  |  Retorna `1` se `x` for menor ou igual a `y`, caso contrário, `0`.  | 
|  `x >= y`  |  Retorna `1` se `x` for maior ou igual a `y`, caso contrário, `0`.  | 
|  `x == y`  |  Retorna `1` se `x` for igual a `y`, caso contrário, `0`.  | 
|  `x != y`  |  Retorna `1` se `x` não for igual a `y`, caso contrário, `0`.  | 
|  `!x`  |  Retorna `1` se `x` for avaliado como `0` (falso), caso contrário, `0`. `x` é avaliado como falso se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x and y`  |  Retorna `0` se `x` for avaliado como `0` (false). Caso contrário, retorna um resultado avaliado de `y`. `x` ou `y` são avaliados como falsos se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x or y`  |  Retorna `1` se `x` for avaliado como `1` (verdadeiro). Caso contrário, retorna um resultado avaliado de `y`. `x` ou `y` são avaliados como falsos se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `not x`  |  Retorna `1` se `x` for avaliado como `0` (falso), caso contrário, `0`. `x` é avaliado como falso se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-operators.html)  | 
|   `[]` `s[index]`  |  Retorna o caractere em um índice `index` da string `s`. Isso é equivalente à sintaxe do índice em Python. 

**Example Exemplos**  
+ `"Hello!"[1]` Retorna `e`.
+ `"Hello!"[-2]` Retorna `o`.  | 
|   `[]` `s[start:end:step]`  |  Retorna uma fatia da string `s`. Isso é equivalente à fatia da sintaxe do índice em Python. Esse operador tem os seguintes argumentos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-operators.html) Você pode omitir o argumento `step` para usar seu valor padrão. Por exemplo, `s[1:4:1]` equivale a `s[1:4]`. Os argumentos devem ser números inteiros ou a constante [nenhum](expression-constants.md#none-definition). Se você especificar`none`, AWS IoT SiteWise usa o valor padrão para esse argumento. 

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

# Usar constantes em expressões de fórmula
<a name="expression-constants"></a>

Em AWS IoT SiteWise, você pode usar constantes em suas expressões e fórmulas para representar valores fixos ou parâmetros predefinidos. As constantes podem ser usadas em vários contextos, como transformações de dados, condições de alarme ou cálculos de visualização. Ao usar constantes, você pode simplificar as expressões e deixá-las mais legíveis e fáceis de sustentáveis.

Você pode usar as seguintes constantes matemáticas comuns em suas expressões. Todas as constantes diferenciam letras maiúsculas de minúsculas.

**nota**  
Se você definir uma variável com o mesmo nome de uma constante, a variável substituirá a constante.


| Constante | Description | 
| --- | --- | 
|  `pi`  |  O número pi (`π`): `3.141592653589793`  | 
|  `e`  |  O número e: `2.718281828459045`  | 
|  `true`  |  Equivalente ao número 1. Em AWS IoT SiteWise, os booleanos se convertem em seus equivalentes numéricos.  | 
|  `false`  |  Equivalente ao número 0. Em AWS IoT SiteWise, os booleanos se convertem em seus equivalentes numéricos.  | 
|   `none`  |  Equivalente a nenhum valor. Você pode usar essa constante para não produzir nada como resultado de uma [expressão condicional](expression-conditional-functions.md).  | 

# Usar funções em expressões de fórmula
<a name="expression-functions"></a>

Você pode usar as seguintes funções para operar com dados em suas expressões de fórmula.

As transformações e métricas oferecem suporte a diferentes funções. A tabela a seguir indica quais tipos de funções suportam cada tipo de propriedade da fórmula.

**nota**  
Você pode incluir no máximo 10 funções em uma expressão de fórmula.


| Tipo de função | Transformações | Metrics | 
| --- | --- | --- | 
|  [Usar funções comuns em expressões 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/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  | 
|  [Usar funções de comparação em expressões 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/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  | 
|  [Usar funções condicionais em expressões 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/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  | 
|  [Usar funções de string em expressões 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/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  | 
|  [Usar funções de agregação em expressões 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/pt_br/iot-sitewise/latest/userguide/images/icon-no.png) Não  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  | 
|  [Usar funções temporais em expressões 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/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  | 
|  [Usar funções de data e hora em expressões 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/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Yes (Sim)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/icon-yes.png) Sim  | 

## Sintaxe de funções
<a name="expression-function-syntax"></a>

Você pode usar a seguinte sintaxe para criar funções:

Sintaxe regular  
Com a sintaxe regular, o nome da função é seguido por parênteses com zero ou mais argumentos.  
`function_name(argument1, argument2, argument3, ...)`. Por exemplo, funções com a sintaxe regular podem ser parecidas com `log(x)` e `contains(s, substring)`.

Sintaxe uniforme de chamada de função (UFCS)  
UFCS permite que você chame funções usando a sintaxe para chamadas de métodos na programação orientada a objetos. Com UFCS, o primeiro argumento é seguido por ponto (`.`), o nome da função e os argumentos restantes (caso haja algum) entre parênteses.  
`argument1.function_name(argument2, argument3, ...)`. Por exemplo, funções com UFCS podem ser parecidas com `x.log()` e `s.contains(substring)`.  
Você também pode usar o UFCS para encadear funções subsequentes. AWS IoT SiteWise usa o resultado da avaliação da função atual como o primeiro argumento para a próxima função.  
Por exemplo, você pode usar `message.jp('$.status').lower().contains('fail')`, em vez de `contains(lower(jp(message, '$.status')),'fail')`.  
Para obter mais informações, visite o website [D Programming Language](https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs).

**nota**  
Você pode usar o UFCS para todas as AWS IoT SiteWise funções.  
AWS IoT SiteWise as funções não diferenciam maiúsculas de minúsculas. Por exemplo, você pode usar `lower(s)` e `Lower(s)` de forma intercambiável.

# Usar funções comuns em expressões de fórmula
<a name="expression-common-functions"></a>

Em [transformações](transforms.md) e [métricas](metrics.md), você pode usar as seguintes funções para calcular funções matemáticas comuns em transformações e métricas:


| Função | Description | 
| --- | --- | 
|  `abs(x)`  |  Retorna o valor absoluto de `x`.  | 
|  `acos(x)`  |  Retorna o arco cosseno de `x`.  | 
|  `asin(x)`  |  Retorna o arco seno de `x`.  | 
|  `atan(x)`  |  Retorna o arco tangente de `x`.  | 
|  `cbrt(x)`  |  Retorna a raiz cúbica de `x`.  | 
|  `ceil(x)`  |  Retorna o inteiro mais próximo maior que `x`.  | 
|  `cos(x)`  |  Retorna o cosseno de `x`.  | 
|  `cosh(x)`  |  Retorna o cosseno hiperbólico de `x`.  | 
|  `cot(x)`  |  Retorna o co-tangente de `x`.  | 
|  `exp(x)`  |  Retorna `e` à potência de `x`.  | 
|  `expm1(x)`  |  Retorna `exp(x) - 1`. Use essa função para calcular com mais precisão `exp(x) - 1` para valores pequenos de `x`.  | 
|  `floor(x)`  |  Retorna o inteiro mais próximo menor que `x`.  | 
|  `log(x)`  |  Retorna o `loge` (base `e`) de `x`.  | 
|  `log10(x)`  |  Retorna o `log10` (base `10`) de `x`.  | 
|  `log1p(x)`  |  Retorna `log(1 + x)`. Use essa função para calcular com mais precisão `log(1 + x)` para valores pequenos de `x`.  | 
|  `log2(x)`  |  Retorna o `log2` (base `2`) de `x`.  | 
|  `pow(x, y)`  |  Retorna `x` à potência de `y`. Isso é equivalente a `x ^ y`.  | 
|  `signum(x)`  |  Retorna o sinal de `x` (`-1` para entradas negativas, `0` para entradas zero, `+1` para entradas positivas).  | 
|  `sin(x)`  |  Retorna o seno de `x`.  | 
|  `sinh(x)`  |  Retorna o seno hiperbólico de `x`.  | 
|  `sqrt(x)`  |  Retorna a raiz quadrada de `x`.  | 
|  `tan(x)`  |  Retorna a tangente de `x`.  | 
|  `tanh(x)`  |  Retorna a tangente hiperbólica de `x`.  | 

# Usar funções de comparação em expressões de fórmula
<a name="expression-comparison-functions"></a>

Em [transformações](transforms.md) e [métricas](metrics.md), você pode usar as seguintes funções de comparação para comparar dois valores e a saída `1` (verdadeiro) ou `0` (falso). AWS IoT SiteWise compara cadeias de caracteres por ordem [lexicográfica](https://en.wikipedia.org/wiki/Lexicographic_order).


| Função | Description | 
| --- | --- | 
|  `gt(x, y)`  |  Retorna `1` se `x` for maior que `y`, caso contrário `0` (`x > y`). <a name="comparison-function-incompatible-types"></a>Essa função não retorna um valor se `x` e `y` forem tipos incompatíveis, como um número e uma string.  | 
|  `gte(x, y)`  |  Retorna `1` se `x` for maior ou igual a `y`, caso contrário `0` (`x ≥ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera os argumentos iguais se estiverem dentro de uma tolerância relativa de`1E-9`. Isso se comporta de forma semelhante à função [isclose](https://docs.python.org/3/library/math.html#math.isclose) em Python. <a name="comparison-function-incompatible-types"></a>Essa função não retorna um valor se `x` e `y` forem tipos incompatíveis, como um número e uma string.  | 
|  `eq(x, y)`  |  Retorna `1` se `x` for igual a `y`, caso contrário `0` (`x == y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera os argumentos iguais se estiverem dentro de uma tolerância relativa de`1E-9`. Isso se comporta de forma semelhante à função [isclose](https://docs.python.org/3/library/math.html#math.isclose) em Python. <a name="comparison-function-incompatible-types"></a>Essa função não retorna um valor se `x` e `y` forem tipos incompatíveis, como um número e uma string.  | 
|  `lt(x, y)`  |  Retorna `1` se `x` for menor que `y`, caso contrário `0` (`x < y`). <a name="comparison-function-incompatible-types"></a>Essa função não retorna um valor se `x` e `y` forem tipos incompatíveis, como um número e uma string.  | 
|  `lte(x, y)`  |  Retorna `1` se `x` for menor ou igual a `y`, caso contrário `0` (`x ≤ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera os argumentos iguais se estiverem dentro de uma tolerância relativa de`1E-9`. Isso se comporta de forma semelhante à função [isclose](https://docs.python.org/3/library/math.html#math.isclose) em Python. <a name="comparison-function-incompatible-types"></a>Essa função não retorna um valor se `x` e `y` forem tipos incompatíveis, como um número e uma string.  | 
|  `isnan(x)`  |  Retorna `1` se `x` for igual a `NaN`, caso contrário, `0`. Essa função não retorna um valor se `x` for uma string.  | 

# Usar funções condicionais em expressões de fórmula
<a name="expression-conditional-functions"></a>

Em [transformações](transforms.md) e [métricas](metrics.md), você pode usar a função a seguir para verificar uma condição e retornar resultados diferentes de acordo com a avaliação da condição como verdadeira ou falsa.


| Função | Description | 
| --- | --- | 
|   `if(condition, result_if_true, result_if_false)`  |  Avalia `condition` e retorna `result_if_true` se a condição for avaliada como verdadeira ou `result_if_false` se a condição for avaliada como `false`. `condition` deve ser um número. Essa função considera `0` uma string vazia como `false` e todo o resto (inclusive `NaN`) como `true`. Os Booleanos são convertidos em `0` (falso) e `1` (verdadeiro). Você pode retornar a [constante nula](expression-constants.md#none-definition) dessa função para descartar a saída de uma condição específica. Isso significa que você pode filtrar pontos de dados que não atendam a uma condição. Para obter mais informações, consulte [Filtrar pontos de dados](expression-tutorials.md#filter-data). 

**Example Exemplos**  
+ `if(0, x, y)` retorna a variável `y`.
+ `if(5, x, y)` retorna a variável `x`.
+ `if(gt(temp, 300), x, y)` retorna a variável `x` se a variável `temp` for maior que `300`.
+ `if(gt(temp, 300), temp, none)` retorna a variável `temp` se for maior ou igual a `300`, ou `none` (sem valor), se `temp` for menor que `300`. Recomendamos que você use UFCS para funções condicionais aninhadas onde um ou mais argumentos forem funções condicionais. Você pode usar `if(condition, result_if_true)` para avaliar uma condição e `elif(condition, result_if_true, result_if_false)` para avaliar condições adicionais. Por exemplo, você pode usar `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)`, em vez de `if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))`. Você também pode encadear funções condicionais intermediárias adicionais. Por exemplo, você pode usar `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)` em vez de aninhar várias instruções `if`, como `if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`.  Você deve usar `elif(condition, result_if_true, result_if_false)` com UFCS.   | 

# Usar funções de string em expressões de fórmula
<a name="expression-string-functions"></a>

Em [transformações](transforms.md) e [métricas](metrics.md), você pode usar as seguintes funções para operar em cadeias de caracteres: Para obter mais informações, consulte [Usar strings em fórmulas](expression-tutorials.md#use-strings-in-formulas).

**Importante**  
<a name="formula-output-rules"></a>As expressões de fórmula só podem produzir valores duplos ou de string. Expressões aninhadas podem gerar outros tipos de dados, como strings, mas a fórmula como um todo deve ser avaliada como um número ou string. Você pode usar a [função jp](#jp-definition) para converter uma string em um número. O valor Booleano deve ser 1 (verdadeiro) ou 0 (falso). Para obter mais informações, consulte [Valores indefinidos, infinitos e excedidos](expression-tutorials.md#undefined-values).


| Função | Description | 
| --- | --- | 
|  `len(s)`  |  Retorna o tamanho da string `s`.  | 
|  `find(s, substring)`  |  Retorna o índice da string `substring` na string `s`.  | 
|  `contains(s, substring)`  |  Retorna `1` se a string `s` contiver a string `substring`, caso contrário, `0`.  | 
|  `upper(s)`  |  Retorna a string `s` em maiúsculas.  | 
|  `lower(s)`  |  Retorna a string `s` em minúsculas.  | 
|   `jp(s, json_path)`  |  Avalia a string `s` com a [JsonPath](https://github.com/json-path/JsonPath)expressão `json_path` e retorna o resultado. Use essa função para fazer o seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-string-functions.html) Para extrair um valor de string de uma estrutura JSON e retorná-lo como um número, você deve usar várias funções aninhadas `jp`. A função externa `jp` extrai a string da estrutura JSON e a função interna`jp` converte a string em um número. A string `json_path` deve conter uma literal de string. Isso significa que `json_path` não pode ser uma expressão avaliada como uma string. 

**Example Exemplos**  
+ `jp('{"status":"active","value":15}', '$.value')` Retorna `15`.
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')` Retorna `25`.
+ `jp('[2,8,23]', '$[2]')` Retorna `23`.
+ `jp('{"values":[3,6,7]}', '$.values[1]')` Retorna `6`.
+ `jp('111', '$')` Retorna `111`.
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')` Retorna `0.95`.  | 
|  `join(s0, s1, s2, s3, ...)`  |  Retorna uma string concatenada com um delimitador. Essa função usa a primeira string de entrada como delimitador e une as demais strings de entrada. Isso se comporta de forma semelhante à função [join (CharSequence delimiter, CharSequence... elements](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-)) em Java. 

**Example Exemplos:**  
+ `join("-", "aa", "bb", "cc")` retorna `aa-bb-cc`  | 
|  `format(expression: "format")` ou `format("format", expression)`  |  Retorna uma string no formato especificado. Essa função valia `expression` como um valor e, em seguida, retorna o valor no formato especificado. Isso se comporta de forma semelhante a função [format(String format, Object... args)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-) em Java. Para obter mais informações sobre os formatos suportados, consulte Conversões em [Formatador de Classe](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html) na *Plataforma Java, Especificação de API Standard Edition 7*. 

**Example Exemplos**  
+ `format(100+1: "d")` retorna uma string, `101`.
+ `format("The result is %d", 100+1)` retorna uma string, `The result is 101`.  | 
|  `f'expression'`  |  Retorna uma string concatenada. Com essa função formatada, você pode usar uma expressão simples para concatenar e formatar strings. Essas funções podem conter expressões aninhadas. Você pode usar `{}` (chaves) para interpolar expressões. Isso se comporta de forma semelhante aos [literais de string formatados](https://docs.python.org/3/reference/lexical_analysis.html#f-strings) em Python. 

**Example Exemplos**  
+ `f'abc{1+2: "f"}d'` Retorna `abc3.000000d`. Para avaliar esse exemplo de expressão, faça o seguinte:

  1. `format(1+2: "f")` retorna um número de ponto flutuante, `3.000000`.

  1. `join('', "abc", 1+2, 'd')` retorna uma string, `abc3.000000d`.

  Você também pode escrever a expressão da seguinte maneira: `join('', "abc", format(1+2: "f"), 'd')`.  | 

# Usar funções de agregação em expressões de fórmula
<a name="expression-aggregation-functions"></a>

Somente em [métricas](metrics.md), você pode usar as seguintes funções que agregam valores de entrada a cada intervalo de tempo e calculam um único valor de saída: Algumas funções de agregação não podem agregar dados de ativos associados.

Os argumentos da função de agregação podem ser [variáveis](expression-variables.md), [literais numéricos](expression-literals.md#number-literal-definition), [funções temporais](expression-temporal-functions.md), expressões aninhadas ou funções de agregação. A fórmula `max(latest(x), latest(y), latest(z))` usa uma função de agregação como argumento e retorna o maior valor atual das propriedades `x`, `y` e `z`.

Você pode usar expressões aninhadas em funções de agregação. Ao usar expressões aninhadas, as seguintes regras se aplicam: 
+ Cada argumento pode ter apenas uma variável.  
**Example**  

  Por exemplo, `avg(x*(x-1))` e `sum(x/2 )/avg(y^2 )` são suportadas.

  Por exemplo, `min(x/y)` não é suportada.
+ Cada argumento pode ter expressões aninhadas de vários níveis.  
**Example**  

  Por exemplo, `sum(avg(x^2 )/2)` é suportada.
+ Argumentos diferentes podem ter variáveis diferentes.  
**Example**  

  Por exemplo, `sum(x/2, y*2)` é suportada.

**nota**  
Se suas expressões contiverem medidas, AWS IoT SiteWise use os últimos valores no intervalo de tempo atual para que as medidas calculem agregados.
Se suas expressões contiverem atributos, AWS IoT SiteWise use os valores mais recentes dos atributos para calcular agregados.


| Função | Description | 
| --- | --- | 
|  `avg(x0, ..., xn)`  |  Retorna a média dos valores das variáveis fornecidas ao longo do intervalo de tempo atual. <a name="aggregation-function-no-output"></a>Essa função gera um ponto de dados somente se as variáveis fornecidas tiverem pelo menos um ponto de dados no intervalo de tempo atual.  | 
|   `sum(x0, ..., xn)`  |  Retorna a soma dos valores das variáveis fornecidas ao longo do intervalo de tempo atual. <a name="aggregation-function-no-output"></a>Essa função gera um ponto de dados somente se as variáveis fornecidas tiverem pelo menos um ponto de dados no intervalo de tempo atual.  | 
|  `min(x0, ..., xn)`  |  Retorna o valor mínimo dos valores das variáveis fornecidas ao longo do intervalo de tempo atual. <a name="aggregation-function-no-output"></a>Essa função gera um ponto de dados somente se as variáveis fornecidas tiverem pelo menos um ponto de dados no intervalo de tempo atual.  | 
|  `max(x0, ..., xn)`  |  Retorna o valor máximo das variáveis fornecidas ao longo do intervalo de tempo atual. <a name="aggregation-function-no-output"></a>Essa função gera um ponto de dados somente se as variáveis fornecidas tiverem pelo menos um ponto de dados no intervalo de tempo atual.  | 
|  `count(x0, ..., xn)`  |  Retorna o número total de pontos de dados das variáveis fornecidas ao longo do intervalo de tempo atual. Para obter mais informações sobre como contar o número de pontos de dados que atendem a uma condição, consulte [Contar pontos de dados que correspondem a uma condição](expression-tutorials.md#count-filtered-data). <a name="aggregation-function-always-output"></a>Esta função calcula um ponto de dados para cada intervalo de tempo.  | 
| `stdev(x0, ..., xn)` | Retorna o desvio padrão dos valores das variáveis fornecidos ao longo do intervalo de tempo atual. Essa função gera um ponto de dados somente se as variáveis fornecidas tiverem pelo menos um ponto de dados no intervalo de tempo atual.  | 

# Usar funções temporais em expressões de fórmula
<a name="expression-temporal-functions"></a>

Use funções temporais para retornar valores com base em carimbos de data/hora dos pontos de dados.

## Usar funções temporais em métricas
<a name="temporal-functions-in-metrics"></a>

Apenas em [métricas](metrics.md), você pode usar as seguintes funções que retornam valores com base em a função de horas dos pontos de dados:

Os argumentos da função temporal devem ser propriedades do modelo de ativo local ou expressões aninhadas. Isso significa que você não pode usar propriedades de modelos de ativos filho em funções temporais.

Você pode usar expressões aninhadas em funções temporais. Ao usar expressões aninhadas, as seguintes regras se aplicam: 
+ Cada argumento pode ter apenas uma variável.

  Por exemplo, `latest( t*9/5 + 32 )` é suportada.
+ Os argumentos não podem ser funções de agregação.

  Por exemplo, `first( sum(x) )` não é suportada.


| Função | Description | 
| --- | --- | 
|  `first(x)`  |  Retorna o valor da variável fornecida com o primeiro a função de hora ao longo do intervalo de tempo atual.  | 
|   `last(x)` |  Retorna o valor da variável fornecida com o a função de hora mais recente ao longo do intervalo de tempo atual.  | 
|  `earliest(x)`  |  Retorna o último valor da variável fornecida antes do início do intervalo de tempo atual. Se a propriedade de entrada tiver pelo menos um ponto de dados em seu histórico, esta função calcula um ponto de dados para cada intervalo de tempo. Para mais detalhes, consulte [time-range-defintion](#time-range-def).   | 
|   `latest(x)` |  Retorna o último valor da variável fornecida com o último carimbo de data/hora antes do fim do intervalo de tempo atual. Se a propriedade de entrada tiver pelo menos um ponto de dados em seu histórico, esta função calcula um ponto de dados para cada intervalo de tempo. Para mais detalhes, consulte [time-range-defintion](#time-range-def).  | 
|   `statetime(x)`  |  Retorna a quantidade de tempo em segundos que as variáveis fornecidas são positivas ao longo do intervalo de tempo atual. É possível usar as [funções comparativas](expression-comparison-functions.md) para criar uma propriedade de transformação para a função `statetime` consumir.  Por exemplo, se tiver uma propriedade `Idle` que seja `0` ou `1`, você poderá calcular o tempo ocioso por intervalo de tempo com esta expressão: `IdleTime = statetime(Idle)`. Para obter mais informações, consulte o [exemplo de cenário de statetime](#statetime-example). Essa função não é compatível com as propriedades de métrica como variáveis de entrada. Se a propriedade de entrada tiver pelo menos um ponto de dados em seu histórico, esta função calcula um ponto de dados para cada intervalo de tempo.  | 
|   `TimeWeightedAvg(x, [interpolation])`  | Retorna a média dos dados de entrada ponderada com intervalos de tempo entre os pontos.Consulte [Parâmetros de funções ponderado no tempo](#timeweighted-parameter) para obter detalhes sobre cálculos e intervalos.O argumento opcional `interpolaton` deve ser uma constante de string:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-temporal-functions.html) | 
|   `TimeWeightedStDev(x, [algo])`  |  Retorna o desvio padrão dos dados de entrada ponderados com intervalos de tempo entre os pontos.  Consulte [Parâmetros de funções ponderado no tempo](#timeweighted-parameter) para obter detalhes sobre cálculos e intervalos.  O cálculo usa o algoritmo de computação Último Transporte Observado para intervalos entre pontos de dados. Nessa abordagem, o ponto de dados é calculado como o último valor observado até o próximo a função de hora de ponto de dados de entrada. O peso é calculado como intervalo de tempo em segundos entre pontos de dados ou limites de intervalo.  O argumento opcional `algo` deve ser uma constante de string: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-temporal-functions.html) As fórmulas a seguir são usadas para computação onde: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-temporal-functions.html) Equação para o desvio padrão populacional: ![\[Equação para o desvio padrão populacional.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/timeweightedstdev1.png) Equação para desvio padrão de frequência: ![\[Equação para desvio padrão de frequência.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/timeweighted-frequency-stdev.png)  | 

O diagrama a seguir mostra como AWS IoT SiteWise computa as funções temporais`first`,`last`,`earliest`, e`latest`, em relação ao intervalo de tempo atual.

![\[AWS IoT SiteWise funções temporais retornam pontos de dados com base em seu timestamp.\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/images/sitewise-temporal-functions.png)
<a name="time-range-def"></a>

**nota**  
O intervalo de tempo para `first(x)`, `last(x)` é (início da janela atual, fim da janela atual).
O intervalo de tempo para `latest(x)` é (início do tempo, fim da janela atual).
O intervalo de tempo para `earliest(x)` é (início do tempo, fim da janela anterior).

**Parâmetros de funções ponderadas pelo tempo**

As funções ponderadas pelo tempo calculadas para a janela agregada levam em consideração o seguinte:
+ Pontos de dados dentro da janela
+ Intervalos de tempo entre pontos de dados
+ Último ponto de dados antes da janela
+ Primeiro ponto de dados após a janela (para alguns algoritmos)

**Termos:**
+ **Ponto de dados ruim** — qualquer ponto de dados com qualidade inadequada ou valor não numérico. Isso não é considerado no cálculo do resultado de uma janela.
+ **Intervalo ruim** — intervalo após um ponto de dados inválido. O intervalo antes do primeiro ponto de dados conhecido também é considerado um intervalo ruim.
+ **Bom ponto de dados** — qualquer ponto de dados com boa qualidade e valor numérico.

**nota**  
AWS IoT SiteWise só consome dados `GOOD` de qualidade quando calcula transformações e métricas. Ele ignora os pontos de dados `UNCERTAIN` e `BAD`.
O intervalo antes do primeiro ponto de dados conhecido é considerado um **intervalo ruim**. Consulte [Tutoriais de expressão de fórmulas](expression-tutorials.md) para obter mais informações.

O intervalo após o último ponto de dados conhecido continua indefinidamente, e afeta todas as janelas seguintes. Quando um novo ponto de dados chega, a função recalcula o intervalo.

Seguindo as regras acima, o resultado agregado da janela é calculado e limitado aos limites da janela. Por padrão, a função só envia o resultado da janela se a janela inteira tiver um **bom intervalo**.

Se o **intervalo bom** da janela for menor que seu comprimento, a função não enviará a janela. 

Quando os pontos de dados que afetam o resultado da janela mudam, a função recalcula a janela, mesmo que os pontos de dados estejam fora da janela. 

Se a propriedade de entrada tiver pelo menos um ponto de dados em seu histórico e um cálculo for sido iniciado, a função calculará as funções agregadas ponderadas pelo tempo para cada intervalo de tempo.

**Example Exemplo de cenário de statetime**  
Considere um exemplo em que você tem um ativo com as seguintes propriedades:  
+ `Idle` – medida `0` ou `1`. Quando o valor é `1`, a máquina está ociosa.
+ `Idle Time` – métrica que usa a fórmula `statetime(Idle)` para calcular a quantidade de tempo em segundos na qual a máquina está ociosa, por intervalo de 1 minuto.
A propriedade `Idle` tem os pontos de dados a seguir:  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| a função de hora | 14:00:00 | 14:00:30 | 14:01:15 | 14:02:45 | 14:04:00 | 
| Idle | 0 | 1 | 1 | 0 | 0 | 
AWS IoT SiteWise calcula a `Idle Time` propriedade a cada minuto a partir dos valores de`Idle`. Depois que esse cálculo for concluído, a propriedade `Idle Time` terá os seguintes pontos de dados.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| a função de hora | 14:00:00 | 14:01:00 | 14:02:00 | 14:03:00 | 14:04:00 | 
| Idle Time | N/A | 30 | 60 | 45 | 0 | 
AWS IoT SiteWise executa os seguintes cálculos `Idle Time` no final de cada minuto.  
+ Às 14:00 (para 13:59 a 14:00)
  + Não há dados para `Idle` antes das 14:00, portanto nenhum ponto de dados é calculado.
+ Às 14:01 (para 14:00 a 14:01)
  + Às 14:00:00, a máquina está ativa (`Idle` é `0`).
  + Às 14:00:30, a máquina está ociosa (`Idle` é `1`).
  + `Idle` não muda novamente antes do final do intervalo às 14:01:00, de maneira que `Idle Time` são 30 segundos.
+ Às 14:02 (para 14:01 a 14:02)
  + Às 14:01:00, a máquina está ociosa (de acordo com o último ponto de dados às 14:00:30).
  + Às 14:01:15, a máquina ainda está ociosa.
  + `Idle` não muda novamente antes do final do intervalo às 14:02:00, de maneira que `Idle Time` são 60 segundos.
+ Às 14:03 (para 14:02 a 14:03)
  + Às 14:02:00, a máquina está ociosa (de acordo com o último ponto de dados às 14:01:15).
  + Às 14:02:45, a máquina está ativa.
  + `Idle` não muda novamente antes do final do intervalo às 14:03:00, de maneira que `Idle Time` são 45 segundos.
+ Às 14:04 (para 14:03 a 14:04)
  + Às 14:03:00, a máquina está ativa (de acordo com o último ponto de dados às 14:02:45).
  + `Idle` não muda novamente antes do final do intervalo às 14:04:00, de maneira que `Idle Time` são 0 segundos.

**Example Exemplo TimeWeightedAvg e TimeWeightedStDev cenário**  
As tabelas a seguir fornecem exemplos de entradas e saídas para essas métricas de janela de um minuto: `Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')`  
Exemplo de entrada para janela agregada de um minuto:  
Todos esses pontos de dados têm qualidade `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 | 
Saída de resultados agregados:  
Nenhum — resultado não produzido para esta janela.


| Hora | `Avg(x)` | `TimeWeightedAvg(x)` | `TimeWeightedAvg(X, "linear")` | `stDev(X)` | `timeWeightedStDev(x)` | `timeWeightedStDev(x, 'p')` | 
| --- | --- | --- | --- | --- | --- | --- | 
| 3:00:00 | 4 | Nenhum | Nenhum | 0 | Nenhum | Nenhum | 
| 3:01:00 | 2 | 4 | 3 | 0 | 0 | 0 | 
| 3:02:00 | 14 | 9 | 13 | 6 | 5.430610041581775 | 5.385164807134504 | 
| 3:03:00 | 11 | 13 | 12.875 | 8.54400374531753 | 7.724054437220943 | 7.659416862050705 | 
| 3:04:00 | 0 | 10 | 2,5 | 0 | 10.084389681792215 | 10 | 
| 3:05:00 | Nenhum | 0 | 0 | Nenhum | 0 | 0 | 

## Usar funções temporais em transformações
<a name="temporal-functions-in-transforms"></a>

Somente em [transformações](transforms.md), você pode usar a função `pretrigger()` para recuperar o valor de qualidade `GOOD` de uma variável antes da atualização da propriedade que iniciou o cálculo da transformação atual.

Considere um exemplo em que um fabricante usa AWS IoT SiteWise para monitorar o status de uma máquina. O fabricante usa as seguintes medidas e transformações para representar o processo:
+ Uma medida `current_state`, que pode ser 0 ou 1.
  + Se a máquina estiver no estado de limpeza, `current_state` é igual a 1.
  + Se a máquina estiver no estado de fabricação, `current_state` é igual a 1.
+ Uma transformação `cleaning_state_duration` é igual a `if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)`. Essa transformação retorna há quanto tempo a máquina está no estado de limpeza em segundos, no formato Unix epoch. Para obter mais informações, consulte [Usar funções condicionais em expressões de fórmula](expression-conditional-functions.md) e a função [a função de hora(s)](expression-date-and-time-functions.md).

Se a máquina permanecer no estado de limpeza por mais tempo do que o esperado, o fabricante poderá investigar a máquina.

Você também pode usar a função `pretrigger()` em transformações multivariadas. Por exemplo, você têm duas medidas, chamadas `x` e `y`, e uma transformação, `z`,igual a `x + y + pretrigger(y)`. A tabela a seguir mostra os valores para `x`, `y` e `z` das 9:00 às 9:15.

**nota**  
Este exemplo pressupõe que os valores das medições cheguem em ordem cronológica. Por exemplo, o valor de `x` para 09:00 chega antes do valor de `x` para 09:05.
Se os pontos de dados das 9:05 chegarem antes dos pontos de dados das 9:05, `z` não será calculado às 9:05.
Se o valor de `x` para 9:05 chegar antes do valor de `x` para 09:00 e os valores de `y` chegarem cronologicamente, `z` será igual a `22 = 20 + 1 + 1` às 9:05 


|  | 09:00 | 09:05 | 09:10 | 09:15 | 
| --- | --- | --- | --- | --- | 
|  `x`  |  10  |  20  |    |  30  | 
|  `y`  |  1  |  2  |  3  |    | 
|  `z = x + y + pretrigger(y)`  |  `y` não recebe nenhum ponto de dados antes das 09:00. Portanto, `z` não é calculado às 09:00.  |  23 = 20 \$1 2 \$1 1 `pretrigger(y)` é igual a 1.  |  25 = 20 \$1 3 \$1 2 `x` não recebe um novo ponto de dados. `pretrigger(y)` é igual a 2.  |  36 = 30 \$1 3 \$1 3 `y` não recebe um novo ponto de dados. Portanto, `pretrigger(y)` é igual a 3 às 09:15.  | 

# Usar funções de data e hora em expressões de fórmula
<a name="expression-date-and-time-functions"></a>

Em [transformações](transforms.md) e [métricas](metrics.md), você pode usar as funções de data e hora das seguintes formas:
+ Recupere o a função de hora atual de um ponto de dados em UTC ou no fuso horário local.
+ Estruture a função de horas com argumentos, como `year`, `month` e `day_of_month`.
+ Extraia um período de tempo, como um ano ou mês, com o argumento `unix_time`.


| Função | Description | 
| --- | --- | 
|  `now()`  |  Retorna a data e a hora atuais, em segundos, no formato Unix epoch.  | 
|  `timestamp()`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `mktime(time_zone, year, month, day_of_month, hour, minute, second)`  |  Retorna o tempo de entrada, em segundos, no formato Unix epoch. Os seguintes requisitos se aplicam ao usar essa função: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Os seguintes limites se aplicam ao usar essa função: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Exemplos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `localtime(unix_time, time_zone)`  |  Retorna o ano, o dia do mês, o dia da semana, o dia do ano, a hora, o minuto ou o segundo no fuso horário especificado, a partir do horário Unix. Os seguintes requisitos se aplicam ao usar essa função: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Exemplo de resposta: `2007-12-03T10:15:30+01:00[Europe/Paris]` `localtime(unix_time, time_zone)` não é uma função independente. As funções `year()`, `mon()`, `mday`, `wday()`, `yday()`, `hour()`, `minute()` e `sec()` usam `localtime(unix_time, time_zone)` como argumento. Exemplos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `year(localtime(unix_time, time_zone)`  |  Retorna o ano de `localtime(unix_time, time_zone)`.  | 
|  `mon(localtime(unix_time, time_zone))`  |  Retorna o mês a partir de `localtime(unix_time, time_zone)`.  | 
|  `mday(localtime(unix_time, time_zone))`  |  Retorna o dia do mês a partir de `localtime(unix_time, time_zone)`.  | 
|  `wday(localtime(unix_time, time_zone))`  |  Retorna o dia da semana a partir de `localtime(unix_time, time_zone)`.  | 
|  `yday(localtime(unix_time, time_zone))`  |  Retorna o dia do ano a partir de `localtime(unix_time, time_zone)`.  | 
|  `hour(localtime(unix_time, time_zone))`  |  Retorna a hora a partir de `localtime(unix_time, time_zone)`.  | 
|  `minute(localtime(unix_time, time_zone))`  |  Retorna o minuto a partir de `localtime(unix_time, time_zone)`.  | 
|  `sec(localtime(unix_time, time_zone))`  |  Retorna o segundo a partir de `localtime(unix_time, time_zone)`.  | 

## Formatos de fuso horário suportados
<a name="time-zone-expressions"></a>

É possível especificar o argumento de fuso horário das seguintes maneiras:
+ Deslocamento de fuso horário - especifique `'Z'` para UTC ou um deslocamento (`'+2'` ou`'-5'`). 
+ Deslocamento IDs - Combine uma abreviatura de fuso horário e um deslocamento. Por exemplo, `'GMT+2'` e `'UTC-01:00'`. A abreviatura do fuso horário deve conter apenas três letras.
+ Com base na região IDs - Por exemplo, `'Etc/GMT+12'` `'Pacific/Pago_Pago'` e.

### Abreviações de fuso horário compatíveis
<a name="spported-time-zones"></a>

As funções de data e hora oferecem suporte às seguintes abreviações de fuso horário de três letras: 
+ EST - - 05:00
+ HST - - 10:00
+ MST - - 07:00
+ ACT - Austrália/Darwin
+ AET - Austrália/Sydney
+ AGT - \$1Aires America/Argentina/Buenos
+ ART - África/Cairo
+ AST - América/Anchorage
+ BRT - América/São Paulo
+ BST - Ásia/Dhaka
+ CAT - África/Harare
+ CET - Europa/Paris
+ CNT - América/St\$1Johns
+ CST - América/Chicago
+ CTT - Asia/Shanghai 
+ EAT - África/Addis\$1Ababa
+ DIETA - America/Indiana/Indianapolis
+ IST - Ásia/Kolkata
+ JST - Ásia/Tóquio
+ MIT - Pacífico/Apia
+ NET - Ásia/Yerevan
+ NST - Pacífico/Auckland
+ PLT - Ásia/Karachi
+ PRT - América/Porto Rico
+ PST – América/Los\$1Angeles
+ SST - Pacífico/Guadalcanal
+ VST - Ásia/Ho\$1Chi\$1Minh

### Com base na região suportada IDs
<a name="supported-region-based-ids"></a>

As funções de data e hora oferecem suporte às seguintes funções baseadas em região IDs, organizadas por sua relação com 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)
+ EUA/Samoa (UTC- 11:00)
+ ETC/GMT\$111 (UTC - 11:00)
+ Pacífico/Midway (UTC - 11:00)
+ Pacífico/Honolulu (UTC - 10:00)
+ Pacífico/Rarotonga (UTC - 10:00)
+ Pacífico/Taiti (UTC - 10:00)
+ Pacífico/Johnston (UTC - 10:00)
+ EUA/Havaí (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)
+ EUA/Aleutas (UTC - 09:00)
+ ETC/GMT \$18 (UTC - 18:00)
+ EUA/Alasca (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)
+ EUA/Pacífico Novo (UTC - 07:00)
+ ETC/GMT\$17 (UTC - 07:00)
+ EUA/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\$1Angeles (UTC - 07:00)
+ EUA/Pacífico (UTC - 07:00)
+ América/El\$1Salvador (UTC- 06:00)
+ América/Guatemala (UTC - 06:00)
+ América/Belize (UTC - 06:00)
+ América/Managua (UTC - 06:00)
+ América/Tegucigalpa (UTC - 06:00)
+ ETC/GMT\$16 (UTC - 06:00)
+ Pacífico/Páscoa (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/Mazatlan (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)
+ EUA/Montanha (UTC - 06:00)
+ América/Edmonton (UTC - 06:00)
+ Canadá/Montanha (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/Geral (UTC- 05:00)
+ América/Porto\$1Acre (UTC - 05:00)
+ América/Guayaquil (UTC - 05:00)
+ América/Rankin\$1Inlet (UTC - 05:00)
+ EUA/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/Cayman (UTC - 05:00)
+ America/Indiana/Tell\$1Cidade (UTC- 05:00)
+ América/Cidade do Mé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/Bahia\$1Banderas (UTC - 05:00)
+ US/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/Manaus (UTC - 04:00)
+ América/Fort\$1Wayne (UTC - 04:00)
+ América/St\$1Thomas (UTC - 04:00)
+ América/Anguilla (UTC - 04:00)
+ América/Havana (UTC - 04:00)
+ EUA/Michigan (UTC - 04:00)
+ América/Barbados (UTC - 04:00)
+ América/Louisville (UTC - 04:00)
+ América/Curaçao (UTC - 04:00)
+ América/Guiana (UTC - 04:00)
+ América/Martinica (UTC - 04:00)
+ América/Porto Rico (UTC - 04:00)
+ América/Port\$1of\$1Spain (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/Assunção (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)
+ EUA/Oriental (UTC - 04:00)
+ Canadá/Oriental (UTC - 04:00)
+ América/ Port-au-Prince (UTC- 04:00)
+ América/St\$1Barthelemy (UTC - 04:00)
+ América/Nipigon (UTC - 04:00)
+ US/Leste de Indiana (UTC - 04:00)
+ América/St\$1Lucia (UTC - 04:00)
+ América/Montserrat (UTC - 04:00)
+ América/Lower\$1Princes (UTC - 04:00)
+ América/Detroit (UTC - 04:00)
+ América/Tortola (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 Vista (UTC - 04:00)
+ América/Granada (UTC - 04:00)
+ América/Nova\$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/Montevidéu (UTC - 03:00)
+ Brasil/Leste (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/São Paulo (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ém (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ém (UTC - 03:00)
+ América/Jujuy (UTC - 03:00)
+ América/Bahia (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/Rosário (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á/Terra Nova (UTC - 02:30)
+ América/Miquelon (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/South\$1Georgia (UTC - 02:00)
+ ETC/GMT\$12 (UTC - 01:00)
+ Atlântico/Cabo Verde (UTC - 01:00)
+ Pacífico/Kiritimati (UTC \$1 14:00)
+ ETC/GMT-14 (UTC - 14:00)
+ Pacífico/Fakaofo (UTC \$1 13:00)
+ Pacífico/Enderbury (UTC \$1 13:00)
+ Pacífico/Apia (UTC \$1 13:00)
+ Pacífico/Tongatapu (UTC \$1 13:00)
+ ETC/GMT-13 (UTC \$1 13:00)
+ NZ-CHAT (UTC \$1 12:45)
+ Pacífico/Chatham (UTC \$1 12:45)
+ Pacífico/Kwajalein (UTC \$1 12:00)
+ Antártica/ McMurdo (UTC\$1 12:00)
+ Pacífico/Wallis (UTC \$1 12:00)
+ Pacífico/Fiji (UTC \$1 12:00)
+ Pacífico/Funafuti (UTC \$1 12:00)
+ Pacífico/Nauru (UTC \$1 12:00)
+ Kwajalein (UTC\$1 12:00)
+ NZ (UTC\$1 12:00)
+ Pacífico/Wake (UTC \$1 12:00)
+ Antártica/Polo Sul (UTC\$1 12:00)
+ Pacífico/Tarawa (UTC\$1 12:00)
+ Pacífico/Auckland (UTC\$1 12:00)
+ Ásia/Kamchatka (UTC\$1 12:00)
+ ETC/GMT-12 (UTC \$1 12:00)
+ Ásia/Anadyr (UTC \$1 12:00)
+ Pacífico/Majuro (UTC \$1 12:00)
+ Pacífico/Ponape (UTC \$1 11:00)
+ Pacífico/Bougainville (UTC \$1 11:00)
+ Antártica/Macquarie (UTC \$1 11:00)
+ Pacífico/Pohnpei (UTC \$1 11:00)
+ Pacífico/Efate (UTC \$1 11:00)
+ Pacífico/Norfolk (UTC \$1 11:00)
+ Ásia/Magadan (UTC \$1 11:00)
+ Pacífico/Kosrae (UTC \$1 11:00)
+ Ásia/Sakhalin (UTC \$1 11:00)
+ Pacífico/Noumea (UTC \$1 11:00)
+ ETC/GMT-11 (UTC \$1 11:00)
+ Ásia/Srednekolymsk (UTC \$1 11:00)
+ Pacífico/Guadalcanal (UTC \$1 11:00)
+ Austrália/Lord\$1Howe (UTC \$1 10:30)
+ Austrália/LHI (UTC \$1 10:30)
+ Austrália/Hobart (UTC \$1 10:00)
+ Pacífico/Yap (UTC \$1 10:00)
+ Austrália/Tasmânia (UTC \$1 10:00)
+ Pacífico/Porto\$1Moresby (UTC \$1 10:00)
+ Austrália/ACT (UTC \$1 10:00)
+ Austrália/Victoria (UTC \$1 10:00)
+ Pacífico/Chuuk (UTC \$1 10:00)
+ Austrália/Queensland (UTC \$1 10:00)
+ Austrália/Canberra (UTC \$1 10:00)
+ Austrália/Currie (UTC \$1 10:00)
+ Pacífico/Guam (UTC \$1 10:00)
+ Pacífico/Truk (UTC \$1 10:00)
+ Austrália/NSW (UTC \$1 10:00)
+ Ásia/Vladivostok (UTC \$1 10:00)
+ Pacífico/Saipan (UTC \$1 10:00)
+ Antártica/Dumont DUrville (UTC\$1 10:00)
+ Austrália/Sydney (UTC \$1 10:00)
+ Austrália/Brisbane (UTC \$1 10:00)
+ ETC/GMT-10 (UTC \$1 12:00)
+ Ásia/Ust-Nera (UTC \$1 10:00)
+ Austrália/Melbourne (UTC \$1 10:00)
+ Austrália/Lindeman (UTC \$1 10:00)
+ Austrália/Norte (UTC \$1 09:30)
+ Austrália/Yancowinna (UTC \$1 09:30)
+ Austrália/Adelaide (UTC \$1 09:30)
+ Austrália/Broken\$1Hill (UTC \$1 09:30)
+ Austrália/Sul (UTC \$1 09:30)
+ Austrália/Darwin (UTC \$1 09:30)
+ ETC/GMT-9 (UTC \$1 12:00)
+ Pacífico/Palau (UTC \$1 09:00)
+ Ásia/Chita (UTC \$1 09:00)
+ Ásia/Díli (UTC \$1 09:00)
+ Ásia/Jayapura (UTC \$1 09:00)
+ Ásia/Yakutsk (UTC \$1 09:00)
+ Ásia/Pyongyang (UTC \$1 09:00)
+ ROK (UTC \$1 09:00)
+ Ásia/Seul (UTC \$1 09:00)
+ Ásia/Khandyga (UTC \$1 09:00)
+ Japão (UTC \$1 09:00)
+ Ásia/Tóquio (UTC \$1 09:00)
+ Austrália/Eucla (UTC \$1 08:45)
+ Ásia/Kuching (UTC \$1 08:00)
+ Ásia/Chungking (UTC \$1 08:00)
+ ETC/GMT-8 (UTC \$1 08:00)
+ Austrália/Perth (UTC\$1 08:00)
+ Ásia/Macau (UTC \$1 08:00)
+ Ásia/Macau (UTC\$1 08:00)
+ Ásia/Choibalsan (UTC \$1 08:00)
+ Ásia/Xangai (UTC \$1 08:00)
+ Antártica/Casey (UTC \$1 08:00)
+ Ásia/Ulan\$1Bator (UTC \$1 08:00)
+ Ásia/Chongqing (UTC \$1 08:00)
+ Ásia/Ulaanbaatar (UTC \$1 08:00)
+ Ásia/Taipei (UTC \$1 08:00)
+ Ásia/Manila (UTC \$1 8:00)
+ PRC (UTC \$1 08:00)
+ Ásia/Ujung\$1Pandang (UTC \$1 08:00)
+ Ásia/Harbin (UTC \$1 08:00)
+ Cingapura (UTC \$1 08:00)
+ Ásia/Brunei (UTC \$1 08:00)
+ Austrália/Oeste (UTC \$1 08:00)
+ Ásia/Hong\$1Kong (UTC \$1 08:00)
+ Ásia/Makassar (UTC \$1 08:00)
+ Hong Kong (UTC\$1 08:00)
+ Ásia/Kuala\$1Lumpur (UTC \$1 08:00)
+ Ásia/Irkutsk (UTC \$1 08:00)
+ Ásia/Cingapura (UTC \$1 08:00)
+ Ásia/Pontianak (UTC \$1 07:00)
+ ETC/GMT-7 (UTC \$1 07:00)
+ Ásia/Phnom\$1Penh (UTC \$1 07:00)
+ Ásia/Novosibirsk (UTC \$1 07:00)
+ Antártica/Davis (UTC \$1 07:00)
+ Ásia/Tomsk (UTC \$1 07:00)
+ Ásia/Jacarta (UTC \$1 07:00)
+ Ásia/Barnaul (UTC \$1 07:00)
+ Índia/Natal (UTC \$1 07:00)
+ Ásia/Ho\$1Chi\$1Minh (UTC \$1 07:00)
+ Ásia/Hovd (UTC \$1 07:00)
+ Ásia/Bangkok (UTC \$1 07:00)
+ Ásia/Vientiane (UTC \$1 07:00)
+ Ásia/Novokuznetsk (UTC \$1 07:00)
+ Ásia/Krasnoyarsk (UTC \$1 07:00)
+ Ásia/Saigon (UTC \$1 07:00)
+ Ásia/Yangon (UTC\$1 06:30)
+ Ásia/Tangoon (UTC\$1 06:30)
+ Índia/Cocos (UTC \$1 06:30)
+ Ásia/Kashgar (UTC \$1 06:00)
+ ETC/GMT-6 (UTC \$1 06:00)
+ Ásia/Almaty (UTC \$1 06:00)
+ Ásia/Daca (UTC \$1 06:00)
+ Ásia/Omsk (UTC \$1 06:00)
+ Ásia/Dhaka (UTC \$1 06:00)
+ Índia/Chagos (UTC \$1 06:00)
+ Ásia/Qyzylorda (UTC \$1 06:00)
+ Ásia/Bishkek (UTC \$1 06:00)
+ Antártica/Vostok (UTC \$1 06:00)
+ Ásia/Urumqi (UTC \$1 06:00)
+ Ásia/Thimbu (UTC \$1 06:00)
+ Ásia/Thimphu (UTC \$1 06:00)
+ Ásia/Katmandu (UTC \$1 05:45)
+ Ásia/Katmandu (UTC\$1 05:45)
+ Ásia/Calcutá (UTC \$1 05:30)
+ Ásia/Colombo (UTC \$1 05:30)
+ Ásia/Calcutá (UTC \$1 05:30)
+ Ásia/Aqtau (UTC \$1 05:00)
+ ETC/GMT-5 (UTC \$1 05:00)
+ Ásia/Samarkand (UTC \$1 05:00)
+ Ásia/Karachi (UTC \$1 05:00)
+ Ásia/Ecaterimburgo (UTC \$1 05:00)
+ Ásia/Dushanbe (UTC \$1 05:00)
+ Índia/Maldivas (UTC \$1 05:00)
+ Ásia/Oral (UTC \$1 05:00)
+ Ásia/Tashkent (UTC \$1 05:00)
+ Antártica/Mawson (UTC \$1 05:00)
+ Ásia/Aqtobe (UTC \$1 05:00)
+ Ásia/Ashkhabad (UTC \$1 05:00)
+ Ásia/Ashgabat (UTC \$1 05:00)
+ Ásia/Atyrau (UTC \$1 05:00)
+ Índia/Kerguelen (UTC \$1 05:00)
+ Irã (UTC \$1 04:30)
+ Ásia/Teerã (UTC \$1 04:30)
+ Ásia/Cabul (UTC \$1 04:30)
+ Ásia/Yerevan (UTC \$1 04:00)
+ ETC/GMT-4 (UTC \$1 04:00)
+ ETC/GMT-4 (UTC \$1 04:00)
+ Ásia/Dubai (UTC \$1 04:00)
+ Índia/Reunião (UTC \$1 04:00)
+ Europa/Saratov (UTC \$1 04:00)
+ Europa/Samara (UTC \$1 04:00)
+ Índia/Mahé (UTC \$1 04:00)
+ Ásia/Baku (UTC \$1 04:00)
+ Ásia/Muscat (UTC \$1 04:00)
+ Europa/Volgogrado (UTC \$1 04:00)
+ Europa/Astrakhan (UTC \$1 04:00)
+ Ásia/Tbilisi (UTC \$1 04:00)
+ Europa/Ulyanovsk (UTC \$1 04:00)
+ Ásia/Aden (UTC \$1 03:00)
+ África/Nairobi (UTC \$1 03:00)
+ Europa/Istambul (UTC \$1 03:00)
+ ETC/GMT-3 (UTC \$1 03:00)
+ Europa/Zaporozhye (UTC \$1 03:00)
+ Israel (UTC \$1 03:00)
+ Índia/Comores (UTC \$1 03:00)
+ Antártica/Syowa (UTC \$1 03:00)
+ África/Mogadíscio (UTC \$1 03:00)
+ Europa/Bucareste (UTC \$1 03:00)
+ África/Asmera (UTC \$1 03:00)
+ Europa/Mariehamn (UTC \$1 03:00)
+ Ásia/Istambul (UTC \$1 03:00)
+ Europa/Tiraspol (UTC \$1 03:00)
+ Europa/Moscou (UTC \$1 03:00)
+ Europa/Chisinau (UTC \$1 03:00)
+ Europa/Helsinque (UTC \$1 03:00)
+ Ásia/Beirute (UTC \$1 03:00)
+ Ásia/Tel\$1Aviv (UTC \$1 03:00)
+ África/Djibouti (UTC \$1 03:00)
+ Europa/Simferopol (UTC \$1 03:00)
+ Europa/Sofia (UTC \$1 03:00)
+ Ásia/Gaza (UTC \$1 03:00)
+ África/Asmara (UTC \$1 03:00)
+ Europa/Riga (UTC \$1 03:00)
+ Ásia/Bagdá (UTC \$1 03:00)
+ Ásia/Damasco (UTC \$1 03:00)
+ África/Dar\$1es\$1Salaam (UTC \$1 03:00)
+ África/Addis\$1Ababa (UTC \$1 03:00)
+ Europa/Uzhgorod (UTC \$1 03:00)
+ Ásia/Jerusalém (UTC \$1 03:00)
+ Ásia/Riyadh (UTC \$1 03:00)
+ Ásia/Kuwait (UTC \$1 03:00)
+ Europa/Kirov (UTC \$1 03:00)
+ África/Kampala (UTC \$1 03:00)
+ Europa/Minsk (UTC \$1 03:00)
+ Ásia/Catar (UTC \$1 03:00)
+ Europa/Kiev (UTC\$1 03:00)
+ Ásia/Bahrain (UTC\$1 03:00)
+ Europa/Vilnius (UTC \$1 03:00)
+ Índia/Antananarivo (UTC \$1 03:00)
+ Índia/Mayotte (UTC \$1 03:00)
+ Europa/Tallinn (UTC \$1 03:00)
+ Turquia (UTC \$1 03:00)
+ África/Juba (UTC \$1 03:00)
+ Ásia/Nicósia (UTC \$1 03:00)
+ Ásia/Famagusta (UTC \$1 03:00)
+ W-SU (UTC \$1 03:00)
+ EET (UTC \$1 03:00)
+ Ásia/Hebron (UTC \$1 03:00)
+ Ásia/Amã (UTC \$1 03:00)
+ Europa/Nicósia (UTC \$1 03:00)
+ Europa/Atenas (UTC \$1 03:00)
+ África/Cairo (UTC \$1 02:00)
+ África/Mbabane (UTC \$1 02:00)
+ Europa/Bruxelas (UTC \$1 02:00)
+ Europa/Varsóvia (UTC \$1 02:00)
+ CET (UTC \$1 02:00)
+ Europa/Luxemburgo (UTC \$1 02:00)
+ ETC/GMT-2 (UTC \$1 02:00)
+ Líbia (UTC \$1 02:00)
+ África/Kigali (UTC \$1 02:00)
+ África/Tripoli (UTC \$1 02:00)
+ Europa/Kaliningrado (UTC \$1 02:00)
+ África/Windhoek (UTC \$1 02:00)
+ Europa/Malta (UTC \$1 02:00)
+ Europa/Busingen (UTC \$1 02:00)
+ 
+ Europa/Skopje (UTC \$1 02:00)
+ Europa/Sarajevo (UTC \$1 02:00)
+ Europa/Roma (UTC \$1 02:00)
+ Europa/Zurique (UTC \$1 02:00)
+ Europa/Gibraltar (UTC \$1 02:00)
+ África/Lubumbashi (UTC \$1 02:00)
+ Europa/Vaduz (UTC \$1 02:00)
+ Europa/Liubliana (UTC \$1 02:00)
+ Europa/Berlim (UTC \$1 02:00)
+ Europa/Estocolmo (UTC \$1 02:00)
+ Europa/Budapeste (UTC \$1 02:00)
+ Europa/Zagreb (UTC \$1 02:00)
+ Europa/Paris (UTC\$102:00)
+ África/Ceuta (UTC \$1 02:00)
+ Europa/Praga (UTC \$1 02:00)
+ Antártica/Troll (UTC \$1 02:00)
+ África/Gaborone (UTC \$1 02:00)
+ Europa/Copenhague (UTC \$1 02:00)
+ Europa/Viena (UTC\$1 02:00)
+ Europa/Tirane (UTC\$1 02:00)
+ MET (UTC \$1 03:00)
+ Europa/Amsterdã (UTC \$1 02:00)
+ África/Maputo (UTC \$1 02:00)
+ Europa/San\$1Marino (UTC \$1 02:00)
+ Polônia (UTC \$1 02:00)
+ Europa/Andorra (UTC \$1 02:00)
+ Europa/Oslo (UTC \$1 02:00)
+ Europa/Podgorica (UTC \$1 02:00)
+ África/Bujumbura (UTC \$1 02:00)
+ Atlântico/Jan\$1Mayen (UTC \$1 02:00)
+ África/Maseru (UTC \$1 02:00)
+ Europa/Madri (UTC \$1 02:00)
+ África/Blantyre (UTC \$1 02:00)
+ África/Lusaka (UTC \$1 02:00)
+ África/Harare (UTC \$1 02:00)
+ África/Khartoum (UTC \$1 02:00)
+ África/Joanesburgo (UTC \$1 02:00)
+ Europa/Belgrado (UTC \$1 02:00)
+ Europa/Bratislava (UTC \$1 02:00)
+ Ártico/Longyearbyen (UTC \$1 02:00)
+ Egito (UTC \$1 02:00)
+ Europa/Vaticano (UTC \$1 02:00)
+ Europa/Mônaco (UTC \$1 02:00)
+ Europa/Londres (UTC \$1 01:00)
+ ETC/GMT-1 (UTC\$1 01:00)
+ Europa/Jersey (UTC \$1 01:00)
+ Europa/Guernsey (UTC \$1 01:00)
+ Europa/Isle\$1of\$1Man (UTC \$1 01:00)
+ África/Tunísia (UTC \$1 01:00)
+ África/Malabo (UTC \$1 01:00)
+ GB-Eire (UTC \$1 01:00)
+ África/Lagos (UTC \$1 01:00)
+ África/Argel (UTC \$1 01:00)
+ GB (UTC \$1 01:00)
+ Portugal (UTC \$1 01:00)
+ África/Sao\$1Tome (UTC \$1 01:00)
+ África/Ndjamena (UTC \$1 01:00)
+ Atlântico/Faroé (UTC \$1 01:00)
+ Eire (UTC \$1 01:00)
+ Atlântico/Faroé (UTC\$1 01:00)
+ Europa/Dublin (UTC \$1 01:00)
+ África/Libreville (UTC \$1 01:00)
+ África/El\$1Aaiun (UTC \$1 01:00)
+ África/El\$1Aaiun (UTC \$1 01:00)
+ África/Douala (UTC\$1 01:00)
+ África/Brazzaville (UTC \$1 01:00)
+ África/Porto Novo (UTC \$1 01:00)
+ Atlântico/Madeira (UTC \$1 01:00)
+ Europa/Lisboa (UTC \$1 01:00)
+ Atlântico/Canário (UTC \$1 01:00)
+ África/Casablanca (UTC \$1 01:00)
+ Europa/Belfast (UTC \$1 01:00)
+ África/Luanda (UTC\$1 01:00)
+ África/Kinshasa (UTC\$1 01:00)
+ África/Bangui (UTC \$1 01:00)
+ WET (UTC \$1 01:00)
+ África/Niamey (UTC \$1 01:00)
+ GMT (UTC \$1 00:00)
+ ETC/GMT-0 (UTC \$1 00:00)
+ Atlântico/St\$1Helena (UTC \$1 00:00)
+ ETC/GMT\$10 (UTC \$1 00:00)
+ África/Banjul (UTC \$1 00:00)
+ ETC/GMT (UTC \$1 00:00)
+ África/Freetown (UTC \$1 00:00)
+ África/Bamako (UTC \$1 00:00)
+ África/Conakry (UTC \$1 00:00)
+ Universal (UTC \$1 00:00)
+ África/Nouakchott (UTC \$1 00:00)
+ UTC (UTC \$1 00:00)
+ ETC/Universal (UTC\$1 00:00)
+ Atlântico/Açores (UTC \$1 00:00)
+ África/Abidjan (UTC \$1 00:00)
+ África/Acra (UTC \$1 00:00)
+ ETC/UCT (UTC \$1 00:00)
+ GMT0 (UTC\$1 00:00)
+ Zulu (UTC\$1 00:00) Zulu (UTC \$1 00:00)
+ África/Ouagadougou (UTC \$1 00:00)
+ Atlântico/Reykjavik (UTC \$1 00:00)
+ Etc/Zulu (UTC \$1 00:00)
+ Islândia (UTC \$1 00:00)
+ África/Lomé (UTC \$1 00:00)
+ Greenwich (UTC \$1 00:00)
+ Etc/ GMT0 (UTC\$1 00:00)
+ América/Danmarkshavn (UTC \$1 00:00)
+ África/Dakar (UTC \$1 00:00)
+ África/Bissau (UTC \$1 00:00)
+ ETC/Greenwich (UTC \$1 00:00)
+ África/Timbuktu (UTC \$1 00:00)
+ UCT (UTC \$1 00:00)
+ África/Monróvia (UTC \$1 00:00)
+ ETC/UTC (UTC \$1 00:00)

# Tutoriais de expressão de fórmulas
<a name="expression-tutorials"></a>

Você pode seguir esses tutoriais para usar expressões de fórmula em AWS IoT SiteWise.

**Topics**
+ [Usar strings em fórmulas](#use-strings-in-formulas)
+ [Filtrar pontos de dados](#filter-data)
+ [Contar pontos de dados que correspondem a uma condição](#count-filtered-data)
+ [Dados atrasados em fórmulas](#late-data)
+ [Qualidade de dados em fórmulas](#data-quality)
+ [Valores indefinidos, infinitos e excedidos](#undefined-values)

## Usar strings em fórmulas
<a name="use-strings-in-formulas"></a>

Você pode operar em strings em suas expressões de fórmula. Você também pode inserir cadeias de caracteres de variáveis que fizerem referência a propriedades de atributos e medidas.

**Importante**  
<a name="formula-output-rules"></a>As expressões de fórmula só podem produzir valores duplos ou de string. Expressões aninhadas podem gerar outros tipos de dados, como strings, mas a fórmula como um todo deve ser avaliada como um número ou string. Você pode usar a [função jp](expression-string-functions.md#jp-definition) para converter uma string em um número. O valor Booleano deve ser 1 (verdadeiro) ou 0 (falso). Para obter mais informações, consulte [Valores indefinidos, infinitos e excedidos](#undefined-values).

AWS IoT SiteWise fornece os seguintes recursos de expressão de fórmula que você pode usar para operar em cadeias de caracteres:
+ [Literais string](expression-literals.md#string-literal-definition)
+ O [operador de índice](expression-operators.md#index-operator-definition) (`s[index]`)
+ O [operador de fatia](expression-operators.md#slice-operator-definition) (`s[start:end:step]`)
+ [Funções de comparação](expression-comparison-functions.md), que você pode usar para comparar strings por ordem [lexicográfica](https://en.wikipedia.org/wiki/Lexicographic_order)
+ [Funções de string](expression-string-functions.md), que incluem a função `jp` capaz de analisar objetos JSON serializados e converter strings em números

## Filtrar pontos de dados
<a name="filter-data"></a>

Você pode usar a [função if](expression-conditional-functions.md#if-definition) para filtrar pontos de dados que não atendam a uma condição. A função `if` avalia uma condição e retorna valores diferentes para resultados `true` e `false`. Você pode usar a [constante nula](expression-constants.md#none-definition) como saída para um caso de função `if`, para descartar o ponto de dados desse caso.

**Para filtrar pontos de dados que correspondam a uma condição**
+ Crie uma transformação que use a função `if` para definir uma condição que verifica se uma outra foi atendida e retornar `none` como valor `result_if_true` ou `result_if_false`.

**Example Exemplo: filtrar pontos de dados onde a água não esteja fervendo**  
Considere um cenário onde você tenha uma medição `temp_c` que forneça a temperatura (em Celsius) da água em uma máquina. Você pode definir a seguinte transformação para filtrar os pontos de dados nos quais a água não estiver fervendo:  
+ Transformar: `boiling_temps = if(gte(temp_c, 100), temp_c, none)` — retorna a temperatura se maior ou igual a 100 graus Celsius, caso contrário, não retornará nenhum ponto de dados.

## Contar pontos de dados que correspondem a uma condição
<a name="count-filtered-data"></a>

Você pode usar [funções comparativas](expression-comparison-functions.md) e [soma ()](expression-aggregation-functions.md#sum-definition) para contar o número de pontos de dados para os quais uma condição é verdadeira.

**Para contar pontos de dados que correspondam a uma condição**

1. Crie uma transformação que use uma função comparativa para definir uma condição de filtro em outra propriedade.

1. Crie uma métrica que some os pontos de dados onde essa condição é atendida.

**Example Exemplo: contar o número de pontos de dados onde a água está fervendo**  
Considere um cenário onde você tenha uma medição `temp_c` que forneça a temperatura (em Celsius) da água em uma máquina. Você pode definir as seguintes propriedades de transformação e métrica para contar o número de pontos de dados onde a água está fervendo:  
+ Transformação: `is_boiling = gte(temp_c, 100)` – Retorna `1` se a temperatura for maior ou igual a 100 graus Celsius, caso contrário, retorna `0`.
+ Métrica: `boiling_count = sum(is_boiling)` – Retorna o número de pontos de dados onde a água estiver fervendo.

## Dados atrasados em fórmulas
<a name="late-data"></a>

AWS IoT SiteWise suporta a ingestão tardia de dados com até 7 dias. Quando AWS IoT SiteWise recebe dados atrasados, ele recalcula os valores existentes para qualquer métrica que insira os dados atrasados em uma janela anterior. Esses recálculos resultam em cobranças de processamento de dados.

**nota**  
Ao AWS IoT SiteWise computar propriedades que inserem dados atrasados, ele usa a expressão de fórmula atual de cada propriedade.

Depois de AWS IoT SiteWise recalcular uma janela anterior para uma métrica, ela substitui o valor anterior dessa janela. Se você ativou as notificações para essa métrica, AWS IoT SiteWise também emitirá uma notificação de valor de propriedade. Isso significa que você pode receber uma nova notificação de atualização de valor de propriedade para a mesma propriedade e notificação de hora para aquelas cuja notificação você tenha recebido anteriormente. Se seus aplicativos ou data lakes consumirem notificações de valor de propriedade, você deve atualizar o valor anterior com o novo valor para que os dados estejam precisos.

## Qualidade de dados em fórmulas
<a name="data-quality"></a>

Em AWS IoT SiteWise, cada ponto de dados tem um código de qualidade, que pode ser um dos seguintes:
+ `GOOD` – os dados não são afetados por nenhum problema.
+ `BAD` – os dados são afetados por um problema, como a falha do sensor.
+ `UNCERTAIN` – os dados são afetados por um problema, como a imprecisão do sensor.

AWS IoT SiteWise consome somente dados `GOOD` de qualidade ao computar transformações e métricas. AWS IoT SiteWise gera somente dados `GOOD` de qualidade para cálculos bem-sucedidos. Se um cálculo não for bem-sucedido, AWS IoT SiteWise não produzirá um ponto de dados para esse cálculo. Isso pode ocorrer se uma computação resultar em um valor indefinido, infinito ou em um estouro.

Para obter mais informações sobre como consultar dados e filtrar por qualidade de dados, consulte [Consultar dados de AWS IoT SiteWise](query-industrial-data.md).

## Valores indefinidos, infinitos e excedidos
<a name="undefined-values"></a>

Algumas expressões de fórmula (como `x / 0``sqrt(-1)`, ou`log(0)`) calculam valores indefinidos em um sistema numérico real, infinitos ou fora do intervalo suportado por AWS IoT SiteWise. Quando a expressão de uma propriedade de ativo computa um valor indefinido, infinito ou excedente, AWS IoT SiteWise não gera um ponto de dados para esse cálculo.

AWS IoT SiteWise também não gera um ponto de dados se computar um valor não numérico como resultado de uma expressão de fórmula. Isso significa que, se você definir uma fórmula que calcula uma string, matriz ou [constante nenhuma](expression-constants.md#none-definition), então o AWS IoT SiteWise não irá gerar um ponto de dados para esse cálculo.

**Example Exemplos**  
Cada uma das expressões de fórmula a seguir resulta em um valor que não AWS IoT SiteWise pode ser representado como um número. AWS IoT SiteWise não gera um ponto de dados quando calcula essas expressões de fórmula.  
+ `x / 0` é indefinido.
+ `log(0)` é indefinido.
+ `sqrt(-1)` é indefinido em um sistema numérico real.
+ `"hello" + " world"` é uma string.
+ `jp('{"values":[3,6,7]}', '$.values')` é uma matriz.
+ `if(gte(temp, 300), temp, none)` é `none` quando `temp` é menor que `300`.