Tutoriais de expressão de fórmulas - AWS IoT SiteWise

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

Tutoriais de expressão de fórmulas

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

Usando cadeias de caracteres em fórmulas

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

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 para converter uma string em um número. O valor Booleano deve ser 1 (verdadeiro) ou 0 (falso). Para ter mais informações, consulte Valores indefinidos, infinitos e excedidos.

AWS IoT SiteWise fornece os seguintes recursos de expressão de fórmula que você pode usar para operar em cadeias de caracteres:

Como filtrar pontos de dados

Você pode usar a função if 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 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.

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

Contando pontos de dados que correspondam a uma condição

Você pode usar funções comparativas e soma () 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.

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

exemplo 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

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

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.

Valores indefinidos, infinitos e excedidos

Algumas expressões de fórmula (como x / 0sqrt(-1), oulog(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, então o AWS IoT SiteWise não irá gerar um ponto de dados para esse cálculo.

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