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 emAWS IoT SiteWise.

Usando cadeias de caracteres em fórmulas

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

Importante

As expressões de fórmula só podem gerar valores duplos ou de sequência de caracteres. Expressões aninhadas podem gerar outros tipos de dados, como cadeias de caracteres, mas a fórmula como um todo deve ser avaliada como um número ou sequência de caracteres. Você pode usar ofunção jppara 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.

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

Filtrando pontos de dados

Você pode usar ose a funçãopara filtrar pontos de dados que não atendem a uma condição. Oiffunção avalia uma condição e retorna valores diferentes paratrueefalseresultados. Você pode usar onenhuma constantecomo saída para um caso de umiffunção para descartar o ponto de dados para esse caso.

Para filtrar pontos de dados que correspondam a uma condição
  • Crie uma transformação que use oiffunção para definir uma condição que verifica se uma condição foi atendida e retornanonecomo ou oresult_if_trueouresult_if_falsevalor.

exemplo Exemplo: filtrar pontos de dados em que a água não está fervendo

Considere um cenário em que você tenha uma medidatemp_c, que fornece a temperatura (em graus Celsius) da água em uma máquina. Você pode definir a seguinte transformação para filtrar os pontos de dados em que a água não está fervendo:

  • Transforme:boiling_temps = if(gte(temp_c, 100), temp_c, none)— Retorna a temperatura se for maior ou igual a 100 graus Celsius; caso contrário, não retorna nenhum ponto de dados.

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

Você pode usarfunções de comparaçãoesoma ()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 de comparação 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 em que você tenha uma medidatemp_c, que fornece a temperatura (em graus 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:

  • Transforme:is_boiling = gte(temp_c, 100)— Devoluções1se a temperatura for maior ou igual a 100 graus Celsius, caso contrário, retorna0.

  • Métrica:boiling_count = sum(is_boiling)— Retorna o número de pontos de dados em que a água está fervendo.

Dados atrasados em fórmulas

AWS IoT SiteWisesuporta a ingestão tardia de dados com até 7 dias de idade. Quando o AWS IoT SiteWise recebe dados tardios, ele recalcula valores existentes para qualquer métrica que insere os dados tardios em um intervalo passado. Esses recálculos resultam em cobranças de processamento de dados.

nota

QuandoAWS IoT SiteWisecomputa propriedades que inserem dados atrasados, ele usa a expressão de fórmula atual de cada propriedade.

Depois que o AWS IoT SiteWise recalcula um intervalo passado de uma métrica, ele substitui o valor anterior desse intervalo. Se você ativou as notificações para essa métrica, o AWS IoT SiteWise também emite 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 time stamp para os quais você recebeu uma notificação anteriormente. Se seus aplicativos ou data lakes consomem 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

No 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 falha no sensor.

  • UNCERTAIN— Os dados são afetados por um problema como a imprecisão do sensor.

O AWS IoT SiteWise consome apenas dados de qualidade GOOD quando calcula transformações e métricas. O AWS IoT SiteWise gera apenas dados de qualidade GOOD para cálculos bem-sucedidos. Se um cálculo não for bem-sucedido, entãoAWS IoT SiteWisenão gera 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 agregados e valores de propriedade de ativos.

Valores indefinidos, infinitos e excedidos

Algumas expressões de fórmula (como x / 0, sqrt(-1) ou log(0)) calculam valores indefinidos em um sistema de números reais, infinitos ou fora do intervalo compatível com o AWS IoT SiteWise. Quando a expressão de uma propriedade do ativo computa um valor indefinido, infinito ou de estouro,AWS IoT SiteWisenão gera um ponto de dados para esse cálculo.

AWS IoT SiteWisetambé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 onenhuma constante, entãoAWS IoT SiteWisenão gera um ponto de dados para esse cálculo.

exemplo Exemplos

Cada uma das expressões de fórmula a seguir resulta em um valor queAWS IoT SiteWisenão pode ser representado como um número.AWS IoT SiteWisenão gera um ponto de dados ao computar essas expressões de fórmula.

  • x / 0é indefinido.

  • log(0)é indefinido.

  • sqrt(-1)é indefinido em um sistema de números reais.

  • "hello" + " world"é uma string.

  • jp('{"values":[3,6,7]}', '$.values')é uma matriz.

  • if(gte(temp, 300), temp, none)énonequandotempé menor que300.