

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á.

# 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`.