Funções - AWS IoT Core

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

Funções

Você pode usar as seguintes funções integradas nas cláusulas SELECT ou WHERE das expressões do SQL.

abs(Decimal)

Gera o valor absoluto de um número. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: abs(-5) gera 5.

Tipo de argumento Resultado
Int Int, o valor absoluto do argumento.
Decimal Decimal, o valor absoluto do argumento.
Boolean Undefined.
String Decimal. O resultado é o valor absoluto do argumento. Se a string não puder ser convertida, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

accountid()

Gera o ID da conta que possui essa regra como uma String. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

accountid() = "123456789012"

acos(Decimal)

Gera o cosseno inverso de um número em radianos. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: acos(0) = 1,5707963267948966

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o cosseno inverso do argumento. Os resultados imaginários são gerados como Undefined.
Decimal Decimal (com precisão dupla), o cosseno inverso do argumento. Os resultados imaginários são gerados como Undefined.
Boolean Undefined.
String Decimal, o cosseno inverso do argumento. Se a string não puder ser convertida, o resultado será Undefined. Os resultados imaginários são gerados como Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

asin(Decimal)

Gera o seno inverso de um número em radianos. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: asin(0) = 0,0

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o seno inverso do argumento. Os resultados imaginários são gerados como Undefined.
Decimal Decimal (com precisão dupla), o seno inverso do argumento. Os resultados imaginários são gerados como Undefined.
Boolean Undefined.
String Decimal (com precisão dupla), o seno inverso do argumento. Se a string não puder ser convertida, o resultado será Undefined. Os resultados imaginários são gerados como Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

atan(Decimal)

Gera a tangente inversa de um número em radianos. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: atan(0) = 0,0

Tipo de argumento Resultado
Int Decimal (com precisão dupla), a tangente inversa do argumento. Os resultados imaginários são gerados como Undefined.
Decimal Decimal (com precisão dupla), a tangente inversa do argumento. Os resultados imaginários são gerados como Undefined.
Boolean Undefined.
String Decimal, a tangente inversa do argumento. Se a string não puder ser convertida, o resultado será Undefined. Os resultados imaginários são gerados como Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

atan2(Decimal, Decimal)

Gera o ângulo, em radianos, entre o eixo X positivo e o ponto (x, y) definido nos dois argumentos.  O ângulo é positivo para os ângulos em sentido anti-horário (metade superior, y > 0) e negativo para os ângulos em sentido horário (metade inferior, y < 0). Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: atan2(1, 0) = 1,5707963267948966

Tipo de argumento Tipo de argumento Resultado
Int/Decimal Int/Decimal Decimal (com precisão dupla), o ângulo entre o eixo x e o ponto (x, y) especificado.
Int/Decimal/String Int/Decimal/String Decimal, a tangente inversa do ponto descrito. Se uma string não puder ser convertida, o resultado será Undefined.
Outros valores Outros valores Undefined.

aws_lambda(functionArn, inputJson)

Chama a função do Lambda especificada passando inputJson para a função do Lambda e retorna o JSON gerado pela função do Lambda.

Argumentos
Argumento Descrição
functionArn

O ARN da função do Lambda a ser chamada. A função do Lambda deve retornar dados JSON.

inputJson

A entrada JSON passada para a função do Lambda. Para passar consultas e literais de objetos aninhados, você deve usar o SQL versão 23/03/2016.

Você deve conceder AWS IoT lambda:InvokeFunction permissões para invocar a função Lambda especificada. O seguinte exemplo mostra como conceder a permissão lambda:InvokeFunction usando a AWS CLI:

aws lambda add-permission --function-name "function_name" --region "region" --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-1:account_id:rule/rule_name --source-account "account_id" --statement-id "unique_id" --action "lambda:InvokeFunction"

Veja os argumentos do comando add-permission:

--nome da função

Nome da função do Lambda. Você adiciona uma nova permissão para atualizar a política de recursos da função.

--região

O Região da AWS da sua conta.

--entidade principal

O principal que está recebendo a permissão. Isso deve ser iot.amazonaws.com para permitir a AWS IoT permissão para chamar uma função Lambda.

--arn de origem

O ARN da regra. Você pode usar o get-topic-rule AWS CLI comando para obter o ARN de uma regra.

--conta de origem

O Conta da AWS local em que a regra é definida.

--id da declaração

Um identificador de declaração exclusivo.

--action

A ação do Lambda que você deseja permitir nesta declaração. Para permitir que o AWS IoT invoque uma função do Lambda, especifique lambda:InvokeFunction.

Importante

Se você adicionar uma permissão para um AWS IoT principal sem fornecer o source-arn ousource-account, qualquer uma Conta da AWS que crie uma regra com sua ação do Lambda poderá acionar regras para invocar sua função do Lambda. AWS IoT Para obter mais informações, consulte Modelo de permissões do Lambda.

Dada uma carga da mensagem JSON como:

{ "attribute1": 21, "attribute2": "value" }

A função do aws_lambda pode ser usada para chamar a função do Lambda da seguinte forma.

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", {"payload":attribute1}) as output FROM 'topic-filter'

Se você deseja passar a carga da mensagem MQTT completa, especifique a carga JSON usando "*", como no exemplo a seguir.

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", *) as output FROM 'topic-filter'

payload.inner.element seleciona dados de mensagem publicada no tópico 'tópico/subtópico'.

some.value seleciona dados da saída gerada pela função do Lambda.

nota

O mecanismo de regras limita a duração da execução das funções do Lambda. As chamadas de função do Lambda em regras devem ser concluídas em 2.000 milissegundos.

bitand(Int, Int)

Realiza um bitwise AND nas representações do bit dos dois argumentos Int(-convertido). Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: bitand(13, 5) = 5

Tipo de argumento Tipo de argumento Resultado
Int Int Int, um bitwise AND dos dois argumentos.
Int/Decimal Int/Decimal Int, um bitwise AND dos dois argumentos. Todos os números não Int são arredondados para o Int mais próximo. Se qualquer um dos argumentos não puder ser convertido em um Int, o resultado será Undefined.
Int/Decimal/String Int/Decimal/String Int, um bitwise AND dos dois argumentos. Todas as strings são convertidas em decimais e são arredondadas para o Int mais próximo. Se não for possível converter, o resultado será Undefined.
Outros valores Outros valores Undefined.

bitor(Int, Int)

Executa um bitwise OU das representações de bit dos dois argumentos. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: bitor(8, 5) = 13

Tipo de argumento Tipo de argumento Resultado
Int Int Int, o bitwise OU dos dois argumentos.
Int/Decimal Int/Decimal Int, o bitwise OU dos dois argumentos. Todos os números não Int são arredondados para o Int mais próximo. Se não for possível converter, o resultado será Undefined.
Int/Decimal/String Int/Decimal/String Int, o bitwise OU nos dois argumentos. Todas as strings são convertidas em decimais e são arredondadas para o Int mais próximo. Se não for possível converter, o resultado será Undefined.
Outros valores Outros valores Undefined.

bitxor(Int, Int)

Realiza um bitwise XOR nas representações do bit dos dois argumentos Int(-convertido). Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:bitor(13, 5) = 8

Tipo de argumento Tipo de argumento Resultado
Int Int Int, um bitwise XOR nos dois argumentos.
Int/Decimal Int/Decimal Int, um bitwise XOR nos dois argumentos. Os números não Int são arredondados para o Int mais próximo.
Int/Decimal/String Int/Decimal/String Int, um bitwise XOR nos dois argumentos. As strings são convertidas em decimais e são arredondadas para o Int mais próximo. Se não for possível converter, o resultado será Undefined.
Outros valores Outros valores Undefined.

bitnot(Int)

Realiza um bitwise NOT nas representações do bit do argumento Int(-convertido). Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: bitnot(13) = 2

Tipo de argumento Resultado
Int Int, um bitwise NOT do argumento.
Decimal Int, um bitwise NOT do argumento. O valor Decimal é arredondado para o Int abaixo mais próximo.
String Int, um bitwise NOT do argumento. As strings são convertidas em decimais e são arredondadas para o Int mais próximo. Se não for possível converter, o resultado será Undefined.
Outros valores Outros valores.

cast()

Converte um valor de um tipo de dados para outro. O cast é muito parecido com as conversões padrão, com a adição da capacidade de converter números em ou de boolianos. Se AWS IoT não conseguir determinar como converter um tipo em outro, o resultado éUndefined. Compatível com a versão de 08/10/2015 do SQL e posteriores. Formato: cast(valor as tipo).

Exemplo:

cast(true as Int) = 1

As seguintes palavras-chave podem aparecer após "as" ao chamar cast:

Para as versões do SQL de 08/10/2015 e 23/03/2016
Palavra-chave Resultado
String Aplica valor para String.
Nvarchar Aplica valor para String.
Texto Aplica valor para String.
Ntext Aplica valor para String.
varchar Aplica valor para String.
Int Aplica valor para Int.
Inteiro Aplica valor para Int.
Double Converte o valor para Decimal (com precisão dupla).
Além disso, para as versões do SQL de 23/03/2016
Palavra-chave Resultado
Decimal Aplica valor para Decimal.
Bool Aplica valor para Boolean.
Boolean Aplica valor para Boolean.

Regras de cast:

Cast para decimal
Tipo de argumento Resultado
Int Um Decimal sem ponto decimal.
Decimal

O valor de origem.

nota

Com o SQL V2 (23/03/2016), valores numéricos que são números inteiros, como 10.0, retornam um valor Int (10) em vez do valor Decimal esperado (10.0). Para converter de forma confiável valores numéricos inteiros como valores Decimal, use o SQL V1 (08/10/2015) para a instrução de consulta de regra.

Boolean verdadeiro = 1,0, falso = 0,0.
String Tenta analisar a string como um Decimal. A AWS IoT tenta analisar as strings correspondendo à regex: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. "0", "-1,2" e "5E-12" são exemplos de strings que são automaticamente convertidas em decimais.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.
Cast para int
Tipo de argumento Resultado
Int O valor de origem.
Decimal O valor de origem arredondado para o Int abaixo mais próximo.
Boolean verdadeiro = 1,0, falso = 0,0.
String Tenta analisar a string como um Decimal. A AWS IoT tenta analisar as strings correspondendo à regex: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. "0", "-1,2", "5E-12" são exemplos de strings que são automaticamente convertidas em decimais. A AWS IoT tenta converter a string em Decimal e arredondar para o Int mais próximo.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.
Aplicar para Boolean
Tipo de argumento Resultado
Int 0 = Falso, qualquer_valor_não_zero = Verdadeiro.
Decimal 0 = Falso, qualquer_valor_não_zero = Verdadeiro.
Boolean O valor de origem.
String "true" = Verdadeiro e "false" = Falso (não diferencia maiúsculas de minúsculas). Outros valores de string = Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.
Cast para string
Tipo de argumento Resultado
Int Uma representação de string do Int em notação padrão.
Decimal Uma string representando o valor Decimal, possivelmente em notação científica.
Boolean "verdadeiro" ou "falso", todas as letras minúsculas.
String "true" = Verdadeiro e "false" = Falso (não diferencia maiúsculas de minúsculas). Outros valores de string = Undefined.
Array A matriz serializada para JSON. A string resultante é uma lista separada por vírgulas, entre colchetes. String tem aspas. Decimals, Ints e Booleans não.
Objeto O objeto serializado para JSON. A string JSON é uma lista separada por vírgulas de pares de chave/valor e começa e termina com chaves. String tem aspas. Decimals, Ints, Booleans e Null não.
Null Undefined.
Não definido Undefined.

ceil(Decimal)

Arredonda o Decimal fornecido para o Int acima mais próximo. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

ceil(1.2) = 2

ceil(-1.2) = -1

Tipo de argumento Resultado
Int Int, o valor do argumento.
Decimal Int, o valor Decimal arredondado para o Int acima mais próximo.
String Int. A string será convertida em Decimal e arredondada para o Int acima mais próximo. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Outros valores Undefined.

chr(String)

Gera o caractere ASCII que corresponde ao dado argumento Int. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

chr(65) = "A".

chr(49) = "1".

Tipo de argumento Resultado
Int O caractere correspondente ao valor ASCII especificado. Se o argumento não for um valor ASCII válido, o resultado será Undefined.
Decimal O caractere correspondente ao valor ASCII especificado. O argumento Decimal é arredondado para o Int abaixo mais próximo. Se o argumento não for um valor ASCII válido, o resultado será Undefined.
Boolean Undefined.
String Se a String puder ser convertida em Decimal, ela será arredondada para o Int mais próximo. Se o argumento não for um valor ASCII válido, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Outros valores Undefined.

clientid()

Gera o ID do MQTT cliente que envia a mensagem ou n/a se a mensagem não foi enviada por MQTT. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

clientid() = "123456789012"

concat()

Concatena as matrizes ou strings. Essa função aceita qualquer número de argumentos e gera uma String ou uma Array. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

concat() = Undefined.

concat(1) = "1".

concat([1, 2, 3], 4) = [1, 2, 3, 4].

concat([1, 2, 3], "hello") = [1, 2, 3, "hello"]

concat("con", "cat") = "concat"

concat(1, "hello") = "1hello"

concat("he","is","man") = "heisman"

concat([1, 2, 3], "hello", [4, 5, 6]) = [1, 2, 3, "hello", 4, 5, 6]

Número de argumentos Resultado
0 Undefined.
1 O argumento é gerado sem modificações.
2+

Se algum argumento for uma Array, o resultado será uma única matriz que contém todos os argumentos. Se não houver matrizes e pelo menos um argumento for uma String, o resultado será a concatenação das representações de String de todos os argumentos. Os argumentos são convertidos em strings usando as conversões padrão listadas anteriormente.

cos(Decimal)

Gera o cosseno de um número em radianos. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

cos(0) = 1.

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o cosseno do argumento. Os resultados imaginários são gerados como Undefined.
Decimal Decimal (com precisão dupla), o cosseno do argumento. Os resultados imaginários são gerados como Undefined.
Boolean Undefined.
String Decimal (com precisão dupla), o cosseno do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined. Os resultados imaginários são gerados como Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

cosh(Decimal)

Gera o cosseno hiperbólico de um número em radianos. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: cosh(2.3) = 5,037220649268761.

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o cosseno hiperbólico do argumento. Os resultados imaginários são gerados como Undefined.
Decimal Decimal (com precisão dupla), o cosseno hiperbólico do argumento. Os resultados imaginários são gerados como Undefined.
Boolean Undefined.
String Decimal (com precisão dupla), o cosseno hiperbólico do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined. Os resultados imaginários são gerados como Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

decodificar (valor, esquema de decodificação)

Use a função decode para decodificar um valor codificado. Se a string decodificada for um documento JSON, um objeto endereçável será retornado. Caso contrário, a string decodificada será retornada como uma string. A função retornará NULL se a string não puder ser decodificada. Essa função é compatível com a decodificação de strings codificadas em base64 e o formato de mensagem Protocol Buffer (protobuf).

Compatível com a versão de 23/03/2016 do SQL e posteriores.

valor

Um valor de string ou qualquer uma das expressões válidas, conforme definido em AWS IoT Referência SQL, que retornam uma string.

decodingScheme

Uma string literal representando o esquema usado para decodificar o valor. Atualmente, apenas há suporte para 'base64' e 'proto'.

Decodificação de strings codificadas em base64

Neste exemplo, a carga útil da mensagem inclui um valor codificado.

{ encoded_temp: "eyAidGVtcGVyYXR1cmUiOiAzMyB9Cg==" }

A função decode nessa instrução SQL decodifica o valor na carga útil da mensagem.

SELECT decode(encoded_temp,"base64").temperature AS temp from 'topic/subtopic'

A decodificação do valor encoded_temp resulta no seguinte documento JSON válido, que permite que a instrução SELECT leia o valor da temperatura.

{ "temperature": 33 }

O resultado da instrução SELECT neste exemplo é mostrado aqui.

{ "temp": 33 }

Se o valor decodificado não fosse um documento JSON válido, o valor decodificado seria retornado como uma string.

Decodificação da carga útil da mensagem protobuf

Você pode usar a função decodificar SQL para configurar uma regra que pode decodificar a carga útil da mensagem protobuf. Para obter mais informações, consulte Decodificação de cargas úteis de mensagens protobuf.

A assinatura da função tem a seguinte aparência:

decode(<ENCODED DATA>, 'proto', '<S3 BUCKET NAME>', '<S3 OBJECT KEY>', '<PROTO NAME>', '<MESSAGE TYPE>')
ENCODED DATA

Especifica os dados codificados por protobuf a serem decodificados. Se toda a mensagem enviada para a regra for de dados codificados por protobuf, você poderá referenciar a carga útil de entrada binária bruta usando *. Caso contrário, esse campo deve ser uma string JSON codificada em base 64 e uma referência à string pode ser passada diretamente.

1) Para decodificar uma carga útil bruta de entrada de protobuf binário:

decode(*, 'proto', ...)

2) Para decodificar uma mensagem codificada por protobuf representada por uma string codificada em base64 'a.b':

decode(a.b, 'proto', ...)
proto

Especifica os dados a serem decodificados em um formato de mensagem protobuf. Se você especificar base64 em vez de proto, essa função decodificará strings codificadas em base64 como JSON.

S3 BUCKET NAME

O nome do bucket do Amazon S3 onde você fez upload do arquivo FileDescriptorSet.

S3 OBJECT KEY

A chave de objeto que especifica o arquivo FileDescriptorSet dentro do bucket do Amazon S3.

PROTO NAME

O nome do arquivo .proto (excluindo a extensão) do qual o arquivo FileDescriptorSet foi gerado.

MESSAGE TYPE

O nome da estrutura da mensagem protobuf dentro do arquivo FileDescriptorSet, com a qual os dados a serem decodificados devem estar em conformidade.

Um exemplo de expressão SQL usando a função decodificar SQL pode ter a seguinte aparência:

SELECT VALUE decode(*, 'proto', 's3-bucket', 'messageformat.desc', 'myproto', 'messagetype') FROM 'some/topic'
  • *

    Representa uma carga de entrada binária, que está em conformidade com o tipo de mensagem protobuf chamado mymessagetype.

  • messageformat.desc

    O arquivo FileDescriptorSet armazenado em um bucket do Amazon S3 chamado s3-bucket.

  • myproto

    O arquivo .proto original usado para gerar o arquivo FileDescriptorSet chamado myproto.proto.

  • messagetype

    O tipo de mensagem chamado messagetype (junto com todas as dependências importadas) conforme definido em myproto.proto.

encode(value, encodingScheme)

Use a função encode para codificar a carga útil, que provavelmente serão dados não JSON, em sua representação de string com base no esquema de codificação. Compatível com a versão de 23/03/2016 do SQL e posteriores.

valor

Qualquer uma das expressões válidas, conforme definido em AWS IoT Referência SQL. Você pode especificar * para codificar toda a carga útil, independentemente de estar no formato JSON. Se você fornecer uma expressão, o resultado da avaliação será convertido em uma string antes de ser codificado.

encodingScheme

Uma string literal que representa o esquema de codificação que você deseja usar. No momento, só há compatibilidade com 'base64'.

endswith(String, String)

Gera um Boolean indicando se o primeiro argumento de String termina com o segundo argumento de String. Se um dos argumentos for Null ou Undefined, o resultado será Undefined. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: endswith("cat","at") = verdadeiro.

Tipo de argumento 1 Tipo de argumento 2 Resultado
String String Verdadeiro se o primeiro argumento terminar no segundo argumento. Caso contrário, falso.
Outros valores Outros valores Os dois argumentos são convertidos em strings usando as regras padrão de conversão. Verdadeiro se o primeiro argumento terminar no segundo argumento. Caso contrário, falso. Se um dos argumentos for Null ou Undefined, o resultado será Undefined.

exp(Decimal)

Gera e elevado ao argumento Decimal. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: exp(1) = e.

Tipo de argumento Resultado
Int Decimal (com precisão dupla), argumento e ^.
Decimal Decimal (com precisão dupla), argumento e ^.
String Decimal (com precisão dupla), argumento e ^. Se a String não puder ser convertida em um Decimal, o resultado será Undefined.
Outros valores Undefined.

floor(Decimal)

Arredonda o Decimal fornecido para o Int abaixo mais próximo. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

floor(1.2) = 1

floor(-1.2) = -2

Tipo de argumento Resultado
Int Int, o valor do argumento.
Decimal Int, o valor Decimal é arredondado para o Int abaixo mais próximo.
String Int. A string será convertida em Decimal e arredondada para o Int abaixo mais próximo. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Outros valores Undefined.

get

Extrai um valor de um tipo de coleção (Matriz, String, Objeto). Nenhuma conversão é aplicada ao primeiro argumento. A conversão se aplica como documentado na tabela ao segundo argumento. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

get(["a", "b", "c"], 1) = "b"

get({"a":"b"}, "a") = "b"

get("abc", 0) = "a"

Tipo de argumento 1 Tipo de argumento 2 Resultado
Array Qualquer tipo (convertido em Int) O item no índice com base 0 da Array fornecido pelo segundo argumento (convertido em Int). Se não for possível converter, o resultado será Undefined. Se o índice estiver fora dos limites da Array (negativo ou >= matriz.comprimento), o resultado será Undefined.
String Qualquer tipo (convertido em Int) O caractere no índice com base 0 da string fornecido pelo segundo argumento (convertido em Int). Se não for possível converter, o resultado será Undefined. Se o índice estiver fora dos limites da string (negativo ou >= string.comprimento), o resultado será Undefined.
Objeto String (nenhuma conversão é aplicada) O valor armazenado no primeiro objeto de argumento correspondente à chave de string fornecida como o segundo argumento.
Outros valores Qualquer valor Undefined.

get_dynamodb (nome da tabela,,,,, RoLearn partitionKeyName) partitionKeyValue sortKeyName sortKeyValue

Recupera dados de uma tabela do DynamoDB. get_dynamodb() permite consultar uma tabela do DynamoDB enquanto uma regra é avaliada. É possível filtrar ou aumentar cargas de mensagens usando dados recuperados do DynamoDB. Compatível com a versão de 23/03/2016 do SQL e posteriores.

get_dynamodb() utiliza os seguintes parâmetros:

tableName

O nome da tabela do DynamoDB a ser consultada.

partitionKeyName

O nome da chave da partição. Para obter mais informações, consulte Chaves do DynamoDB.

partitionKeyValue

O valor da chave de partição usada para identificar um registro. Para obter mais informações, consulte Chaves do DynamoDB.

sortKeyName

(Opcional) O nome da chave de classificação. Esse parâmetro será necessário somente se a tabela do DynamoDB consultada usar uma chave composta. Para obter mais informações, consulte Chaves do DynamoDB.

sortKeyValue

(Opcional) O valor da chave de classificação. Esse parâmetro será necessário somente se a tabela do DynamoDB consultada usar uma chave composta. Para obter mais informações, consulte Chaves do DynamoDB.

roleArn

O ARN do perfil do IAM que concede acesso à tabela do DynamoDB. O mecanismo de regras assume essa função para acessar a tabela do DynamoDB em seu nome. Evite usar uma função excessivamente permissiva. Conceda à função apenas as permissões necessárias para a regra. O exemplo de política a seguir concede acesso a uma tabela do DynamoDB.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:aws-region:account-id:table/table-name" } ] }}

Como um exemplo de como é possível usar get_dynamodb(), digamos que você tenha uma tabela do DynamoDB que contém o ID do dispositivo e as informações de localização para todos os dispositivos conectados ao AWS IoT. A instrução SELECT a seguir usa a função get_dynamodb() para recuperar o local para o ID do dispositivo especificado:

SELECT *, get_dynamodb("InServiceDevices", "deviceId", id, "arn:aws:iam::12345678910:role/getdynamo").location AS location FROM 'some/topic'

nota
  • É possível chamar get_dynamodb() no máximo uma vez por instrução SQL. Chamar get_dynamodb() várias vezes em uma única instrução SQL faz com que a regra seja encerrada sem chamar nenhuma ação.

  • Se get_dynamodb() retornar mais de 8 KB de dados, a ação da regra não poderá ser chamada.

get_mqtt_property (nome)

Referencia qualquer um dos seguintes cabeçalhos MQTT5: contentType, payLoadFormatIndicator, responseTopic e correlationData. Essa função usa qualquer uma das seguintes strings literais como argumento: content_type, format_indicator, response_topic e correlation_data. Para obter mais informações, consulte a tabela de Argumentos de função a seguir.

contentType

String: Uma string codificada em UTF-8 que descreve o conteúdo da mensagem de publicação.

payLoadFormatIndicador

String: Um valor de string Enum que indica se a carga útil está formatada como UTF-8. Os valores válidos são UNSPECIFIED_BYTES e UTF8_DATA.

responseTopic

String: Uma string codificada em UTF-8 que é usada como nome de tópico para uma mensagem de resposta. O tópico da resposta é usado para descrever o tópico que o destinatário deve publicar como parte do fluxo solicitação-resposta. O tópico não deve conter caracteres curinga.

correlationData

String: Os dados binários codificados em base64 usados pelo remetente da mensagem de solicitação para identificar para qual solicitação é a mensagem de resposta.

A tabela a seguir mostra os argumentos de função aceitáveis e os tipos de retorno associados para a get_mqtt_property função:

Argumentos de função
SQL Tipo de dados retornado (se presente) Tipo de dados retornado (se não presente)
get_mqtt_property("format_indicator") String (UNSPECIFIED_BYTES ou UTF8_DATA) String (UNSPECIFIED_BYTES)
get_mqtt_property("content_type") String Não definido
get_mqtt_property("response_topic") String Não definido
get_mqtt_property("correlation_data") String codificada em base64 Não definido
get_mqtt_property("some_invalid_name") Não definido Não definido

O exemplo de SQL de regras a seguir faz referência a qualquer um dos seguintes cabeçalhos MQTT5: contentType, payLoadFormatIndicator, responseTopic e correlationData.

SELECT *, get_mqtt_property('content_type') as contentType, get_mqtt_property('format_indicator') as payloadFormatIndicator, get_mqtt_property('response_topic') as responseTopic, get_mqtt_property('correlation_data') as correlationData FROM 'some/topic'

get_secret (secretId, secretType, chave, roleArn)

Recupera o valor do campo criptografado SecretString ou SecretBinary da versão atual de um segredo em AWS Secrets Manager. Para obter mais informações sobre como criar e manter segredos CreateSecretUpdateSecret, consulte, PutSecretValuee.

get_secret() utiliza os seguintes parâmetros:

secretId

String: O nome do recurso da Amazon (ARN) ou o nome amigável do segredo a ser recuperado.

secretType

String: O tipo de segredo. Valores válidos: SecretString | SecretBinary.

SecretString
  • Para segredos que você cria como objetos JSON usando as APIs AWS CLI, o ou o AWS Secrets Manager console:

    • Se você especificar um valor para o parâmetro key, essa função retornará o valor da chave especificada.

    • Se você não especificar um valor para o parâmetro key, essa função retornará o objeto JSON inteiro.

  • Para segredos que você cria como objetos não JSON usando as APIs ou a AWS CLI:

    • Se você especificar um valor para o parâmetro key, essa função falhará com uma exceção.

    • Se você não especificar um valor para o parâmetro key, essa função retornará o conteúdo do segredo.

SecretBinary
  • Se você especificar um valor para o parâmetro key, essa função falhará com uma exceção.

  • Se você não especificar um valor para o parâmetro key, essa função retornará o valor secreto como uma string UTF-8 codificada em base64.

chave

(Opcional) String: o nome da chave dentro de um objeto JSON armazenado no campo SecretString de um segredo. Use esse valor quando quiser recuperar somente o valor de uma chave armazenada em um segredo em vez do objeto JSON inteiro.

Se você especificar um valor para esse parâmetro e o segredo não contiver um objeto JSON dentro do campo SecretString, essa função falhará com uma exceção.

roleArn

String: um ARN de função com permissões secretsmanager:GetSecretValue e secretsmanager:DescribeSecret.

nota

Essa função sempre retorna a versão atual do segredo (a versão com a tag AWSCURRENT). O mecanismo de AWS IoT regras armazena cada segredo em cache por até 15 minutos. Como resultado, o mecanismo de regras pode levar até 15 minutos para atualizar um segredo. Isso significa que, se você recuperar um segredo até 15 minutos após uma atualização com AWS Secrets Manager, essa função poderá retornar a versão anterior.

Essa função não é medida, mas são cobradas AWS Secrets Manager taxas. Por causa do mecanismo secreto de armazenamento em cache, o mecanismo de regras chama AWS Secrets Manager ocasionalmente. Como o mecanismo de regras é um serviço totalmente distribuído, você pode ver várias chamadas de API do Secrets Manager do mecanismo de regras durante a janela de 15 minutos de armazenamento em cache.

Exemplos:

Você pode usar a função get_secret em um cabeçalho de autenticação em uma ação de regra HTTPS, como no exemplo de autenticação de chave de API a seguir.

"API_KEY": "${get_secret('API_KEY', 'SecretString', 'API_KEY_VALUE', 'arn:aws:iam::12345678910:role/getsecret')}"

Para obter mais informações sobre as ações de regra HTTPS, consulte HTTP.

get_thing_shadow(thingName, shadowName, roleARN)

Retorna a sombra do objeto especificado. Compatível com a versão de 23/03/2016 do SQL e posteriores.

thingName

String: o nome do objeto que você quer recuperar a sombra.

shadowName

(Opcional) String: o nome da sombra. Esse parâmetro é necessário somente ao fazer referência a sombras nomeadas.

roleArn

String: um ARN de função com permissão iot:GetThingShadow.

Exemplos:

Quando usado com uma sombra nomeada, forneça o parâmetro shadowName.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","MyThingShadow","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

Quando usado com uma sombra sem nome, omita o parâmetro shadowName.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

get_user_properties () userPropertyKey

Referencia as propriedades do usuário, que é um tipo de cabeçalho de propriedade suportado no MQTT5.

userProperty

String: Uma propriedade de usuário é um par de chave/valor. Essa função usa a chave como argumento e retorna uma matriz de todos os valores que correspondem à chave associada.

Argumentos de função

Para as seguintes propriedades do usuário nos cabeçalhos das mensagens:

Chave Valor
alguma chave algum valor
uma chave diferente um valor diferente
alguma chave valor com chave duplicada

A tabela a seguir mostra o comportamento esperado do SQL:

SQL Tipo de dados de retorno Valor de dados de retorno
get_user_properties('alguma chave') Matriz de strings ['some value', 'value with duplicate key']
get_user_properties('outra chave') Matriz de strings ['a different value']
get_user_properties( ) Matriz de objetos de chave-valor [{'"some key": "some value"'}, {"other key": "a different value"}, {"some key": "value with duplicate key"}]
get_user_properties('chave inexistente') Não definido

O exemplo a seguir de SQL de regras faz referência às propriedades do usuário (um tipo de cabeçalho de propriedade MQTT5) na carga útil:

SELECT *, get_user_properties('user defined property key') as userProperty FROM 'some/topic'

Funções de hashing

AWS IoT fornece as seguintes funções de hashing:

  • md2

  • md5

  • sha1

  • sha224

  • sha256

  • sha384

  • sha512

Todas as funções de hash esperam um argumento de string. O resultado é o valor de hash da string em questão. Conversões de string padrão se aplicam a argumentos de não string. Todas as funções de hash são compatíveis com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

md2("hello") = "a9046c73e00331af68917d3804f70655"

md5("hello") = "5d41402abc4b2a76b9719d911017c592"

indexof(String, String)

Apresenta o primeiro índice (base em 0) do segundo argumento como uma substring no primeiro argumento. Os dois argumentos são esperados como strings. Os argumentos que não são strings estão sujeitos às regras padrão de conversão de string. Essa função não se aplica a matrizes, apenas a strings. Compatível com a versão de 23/03/2016 do SQL e posteriores.

Exemplos:

indexof("abcd", "bc") = 1

isNull()

Retorna verdadeiro se o argumento é o valor Null. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

isNull(5) = false.

isNull(Null) = true.

Tipo de argumento Resultado
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null verdadeiro
Undefined false

isUndefined()

Retorna verdadeiro se o argumento for Undefined. Compatível com a versão de 23/03/2016 do SQL e posteriores.

Exemplos:

isUndefined(5) = false.

isUndefined(floor([1,2,3]))) = true.

Tipo de argumento Resultado
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null false
Undefined verdadeiro

length(String)

Gera o número de caracteres na string fornecida. As regras padrão de conversão se aplicam a argumentos de não String. Compatível com a versão de 23/03/2016 do SQL e posteriores.

Exemplos:

length("hi") = 2

length(false) = 5

ln(Decimal)

Gera o logaritmo natural do argumento. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: ln(e) = 1.

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o log natural do argumento.
Decimal Decimal (com precisão dupla), o log natural do argumento.
Boolean Undefined.
String Decimal (com precisão dupla), o log natural do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

log(Decimal)

Gera o logaritmo na base 10 do argumento. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: log(100) = 2,0.

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o log de base 10 do argumento.
Decimal Decimal (com precisão dupla), o log de base 10 do argumento.
Boolean Undefined.
String Decimal (com precisão dupla), o log de base 10 do argumento. Se a String não puder ser convertida em um Decimal, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

lower(String)

Gera a versão em letra minúscula da String fornecida. Argumentos de não string são convertidos em strings usando as regras padrão de conversão. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

lower("HELLO") = "hello".

lower(["HELLO"]) = "[\"hello\"]".

lpad(String, Int)

Gera o argumento de String, preenchido no lado esquerdo com o número de espaços especificado pelo segundo argumento. O argumento Int deve estar entre 0 e 1000. Se o valor fornecido estiver fora desse intervalo válido, o argumento será definido para o valor válido mais próximo (0 ou 1.000). Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

lpad("hello", 2) = "  hello".

lpad(1, 3) = "   1"

Tipo de argumento 1 Tipo de argumento 2 Resultado
String Int String, a String preenchida fornecida no lado esquerdo com um número de espaços igual ao Int fornecido.
String Decimal O argumento Decimal será arredondado para o Int abaixo mais próximo, e a String será preenchida à esquerda com o número especificado de espaços.
String String O segundo argumento será convertido em um Decimal, que é arredondado para o Int abaixo mais próximo, e a String será preenchida com o número de espaços especificados à esquerda. Se o segundo argumento não puder ser convertido em um Int, o resultado será Undefined.
Outros valores Int/Decimal/String O primeiro valor será convertido em uma String usando as conversões padrão, e a função LPAD será aplicada nessa String. Se não for possível fazer a conversão, o resultado será Undefined.
Qualquer valor Outros valores Undefined.

ltrim(String)

Remove todos os espaços em branco iniciais (caracteres de tabulação e espaços) da String fornecida. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

Ltrim(" h i ") = "hi ".

Tipo de argumento Resultado
Int A representação de String do Int com todos os espaços em branco iniciais removidos.
Decimal A representação de String do Decimal com todos os espaços em branco iniciais removidos.
Boolean A representação de String do booliano ("verdadeiro" ou "falso") com todos os espaços em branco iniciais removidos.
String O argumento com todos os espaços em branco iniciais removidos.
Array A representação de String de Array (usando as regras padrão de conversão) com todos os espaços em branco iniciais removidos.
Objeto A representação de String do objeto (usando as regras padrão de conversão) com todos os espaços em branco iniciais removidos.
Null Undefined.
Não definido Undefined.

machinelearning_predict(modelId, roleArn, registro)

Use a machinelearning_predict função para fazer previsões usando os dados de uma mensagem MQTT com base em um modelo da Amazon SageMaker . Compatível com a versão de 08/10/2015 do SQL e posteriores. Os argumentos da função machinelearning_predict são:

modelId

O ID do modelo no qual executar a previsão. O endpoint em tempo real do modelo deve ser habilitado.

roleArn

O perfil do IAM; que tem uma política com as permissões machinelearning:Predict e machinelearning:GetMLModel e que permite acessar o modelo no qual a previsão é executada.

registro

Os dados a serem passados para a API SageMaker Predict. Isso deve ser representado como um único objeto JSON de camada. Se o registro for um objeto JSON de vários níveis, o registro será aplainado ao serializar seus valores. Por exemplo, o seguinte JSON:

{ "key1": {"innerKey1": "value1"}, "key2": 0}

se tornaria:

{ "key1": "{\"innerKey1\": \"value1\"}", "key2": 0}

A função gera um objeto JSON com os seguintes campos:

predictedLabel

A classificação da entrada com base no modelo.

detalhes

Contém os seguintes atributos:

PredictiveModelType

O tipo do modelo. Os valores válidos são REGRESSION, BINARY, MULTICLASS.

Algoritmo

O algoritmo usado pelo SageMaker para fazer previsões. O valor deve ser SGD.

predictedScores

Contém a pontuação de classificação bruta correspondente a cada rótulo.

predictedValue

O valor previsto por SageMaker.

mod(Decimal, Decimal)

Gera o restante da divisão do primeiro argumento pelo segundo argumento. Equivale a remainder(Decimal, Decimal). Você também pode usar "%" como um operador infixo para a mesma funcionalidade do módulo. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: mod(8, 3) = 2.

Operando esquerdo Operando direito Saída
Int Int Int, o primeiro argumento é módulo do segundo argumento.
Int/Decimal Int/Decimal Decimal, o primeiro argumento é módulo do segundo operando.
String/Int/Decimal String/Int/Decimal Se todas as strings forem convertidas em decimais, o resultado será o primeiro argumento como módulo do segundo argumento. Caso contrário, Undefined.
Outros valores Outros valores Undefined.

nanquim (,) AnyValue AnyValue

Gera o primeiro argumento se for um Decimal válido. Caso contrário, o segundo argumento é retornado. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: Nanvl(8, 3) = 8.

Tipo de argumento 1 Tipo de argumento 2 Saída
Não definido Qualquer valor O segundo argumento.
Null Qualquer valor O segundo argumento.
Decimal (NaN) Qualquer valor O segundo argumento.
Decimal (não NaN) Qualquer valor O primeiro argumento.
Outros valores Qualquer valor O primeiro argumento.

newuuid()

Gera uma UUID aleatória de 16 bytes. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: newuuid() = 123a4567-b89c-12d3-e456-789012345000

numbytes(String)

Gera o número de bytes na codificação UTF-8 da string fornecida. As regras padrão de conversão se aplicam a argumentos de não String. Compatível com a versão de 23/03/2016 do SQL e posteriores.

Exemplos:

numbytes("hi") = 2

numbytes("€") = 3

parse_time(String, Long, [String])

Use a função parse_time para formatar um timestamp em um formato legível de data/hora. Compatível com a versão de 23/03/2016 do SQL e posteriores. Para converter uma string de carimbo de data/hora em milissegundos, consulte time_to_epoch(String, String).

A função parse_time espera os seguintes argumentos:

pattern

(String) Um padrão de data/hora que segue os formatos Joda-Time.

timestamp

(Long) O tempo a ser formatado em milissegundos desde o epoch do Unix. Consulte a função timestamp().

timezone

(String) O fuso horário da data/hora formatada. O padrão é "UTC". A função oferece suporte para fusos horários Joda-Time. Esse argumento é opcional.

Exemplos:

Quando essa mensagem for publicada no tópico "A/B", a carga útil {"ts": "1970.01.01 AD at 21:46:40 CST"} será enviada para o bucket do S3:

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", 100000000, 'America/Belize' ) as ts FROM 'A/B'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }

Quando essa mensagem for publicada no tópico 'A/B', uma carga útil semelhante a {"ts": "2017.06.09 AD at 17:19:46 UTC"} (mas com data/hora atual) será enviada para o bucket S3:

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", timestamp() ) as ts FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }

parse_time() também pode ser usado como um modelo de substituição. Por exemplo, quando esta mensagem for publicada no tópico "A/B", a carga útil será enviada para o bucket S3 com chave = "2017":

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT * FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [{ "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "${parse_time('yyyy', timestamp(), 'UTC')}" } }], "ruleName": "RULE_NAME" } }

power(Decimal, Decimal)

Gera o primeiro argumento elevado ao segundo argumento. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: power(2, 5) = 32,0.

Tipo de argumento 1 Tipo de argumento 2 Saída
Int/Decimal Int/Decimal Um Decimal (com precisão dupla), o primeiro argumento elevado para o poder do segundo argumento.
Int/Decimal/String Int/Decimal/String Um Decimal (com precisão dupla), o primeiro argumento elevado para o poder do segundo argumento. Quaisquer strings são convertidas em decimais. Se a conversão de alguma String em Decimal falhar, o resultado será Undefined.
Outros valores Outros valores Undefined.

principal()

Retorna a entidade principal que o dispositivo usa para autenticação, com base em como a mensagem acionadora foi publicada. A tabela a seguir descreve a entidade principal retornada para cada protocolo e método de publicação.

Como a mensagem é publicada Protocolo Tipo de credencial Entidade principal
Cliente MQTT MQTT Certificado de dispositivo X.509 Thumbprint do certificado X.509
AWS IoT cliente MQTT do console MQTT Usuário ou perfil do IAM iam-role-id: nome da sessão
AWS CLI HTTP Usuário ou perfil do IAM userid
AWS IoT SDK do dispositivo MQTT Certificado de dispositivo X.509 Thumbprint do certificado X.509
AWS IoT SDK do dispositivo Acabou o MQTT WebSocket Usuário ou perfil do IAM userid

Os exemplos a seguir mostram os diferentes tipos de valores que principal() pode retornar:

  • Thumbprint do certificado X.509: ba67293af50bf2506f5f93469686da660c7c844e7b3950bfb16813e0d31e9373

  • ID do perfil do IAM e nome da sessão: ABCD1EFG3HIJK2LMNOP5:my-session-name

  • Retorna um ID de usuário: ABCD1EFG3HIJK2LMNOP5

rand()

Gera um pseudoaleatório, uniformemente distribuído entre 0,0 e 1,0. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

rand() = 0,8231909191640703

regexp_matches(String, String)

Retorna verdadeiro se a string (primeiro argumento) contiver uma correspondência para a expressão regular (segundo argumento). Se você usar | na expressão regular, use-a com ().

Exemplos:

regexp_matches("aaaa", "a{2,}") = true.

regexp_matches("aaaa", "b") = false.

regexp_matches("aaa", "(aaa|bbb)") = true.

regexp_matches("bbb", "(aaa|bbb)") = true.

regexp_matches("ccc", "(aaa|bbb)") = false.

Primeiro argumento:
Tipo de argumento Resultado
Int A representação da String do Int.
Decimal A representação da String do Decimal.
Boolean A representação da String do booleano ("verdadeiro" ou "falso").
String O String.
Array A representação da String da Array (usando as regras padrão de conversão).
Objeto A representação da String do Objeto (usando as regras padrão de conversão).
Null Undefined.
Não definido Undefined.

Segundo argumento:

Deve ser uma expressão regex válida. Tipos de não string são convertidos em String usando as regras padrão de conversão. Dependendo do tipo, a string resultante pode não ser uma expressão regular válida. Se o argumento (convertido) não for uma regex válida, o resultado será Undefined.

regexp_replace(String, String, String)

Substitui todas as ocorrências do segundo argumento (expressão regular) no primeiro argumento com o terceiro argumento. Faz referência a grupos de captura com "$". Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

regexp_replace("abcd", "bc", "x") = "axd".

regexp_replace("abcd", "b(.*)d", "$1") = "ac".

Primeiro argumento:
Tipo de argumento Resultado
Int A representação da String do Int.
Decimal A representação da String do Decimal.
Boolean A representação da String do booleano ("verdadeiro" ou "falso").
String O valor de origem.
Array A representação da String da Array (usando as regras padrão de conversão).
Objeto A representação da String do Objeto (usando as regras padrão de conversão).
Null Undefined.
Não definido Undefined.

Segundo argumento:

Deve ser uma expressão regex válida. Tipos de não string são convertidos em String usando as regras padrão de conversão. Dependendo do tipo, a string resultante pode não ser uma expressão regular válida. Se o argumento (convertido) não for uma expressão regex válida, o resultado será Undefined.

Terceiro argumento:

Deve ser uma string de substituição regex válida. (Pode fazer referência a grupos de captura.) Tipos de não string são convertidos em String usando as regras padrão de conversão. Se o argumento (convertido) não for uma string de substituição regex válida, o resultado será Undefined.

regexp_substr(String, String)

Localiza a primeira correspondência do segundo parâmetro (regex) no primeiro parâmetro. Faz referência a grupos de captura com "$". Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

regexp_substr("hihihello", "hi") = "hi"

regexp_substr("hihihello", "(hi)*") = "hihi"

Primeiro argumento:
Tipo de argumento Resultado
Int A representação da String do Int.
Decimal A representação da String do Decimal.
Boolean A representação da String do booleano ("verdadeiro" ou "falso").
String O argumento da String.
Array A representação da String da Array (usando as regras padrão de conversão).
Objeto A representação da String do Objeto (usando as regras padrão de conversão).
Null Undefined.
Não definido Undefined.

Segundo argumento:

Deve ser uma expressão regex válida. Tipos de não string são convertidos em String usando as regras padrão de conversão. Dependendo do tipo, a string resultante pode não ser uma expressão regular válida. Se o argumento (convertido) não for uma expressão regex válida, o resultado será Undefined.

remainder(Decimal, Decimal)

Gera o restante da divisão do primeiro argumento pelo segundo argumento. Equivale a mod(Decimal, Decimal). Você também pode usar "%" como um operador infixo para a mesma funcionalidade do módulo. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: remainder(8, 3) = 2.

Operando esquerdo Operando direito Saída
Int Int Int, o primeiro argumento é módulo do segundo argumento.
Int/Decimal Int/Decimal Decimal, o primeiro argumento é módulo do segundo operando.
String/Int/Decimal String/Int/Decimal Se todas as strings forem convertidas em decimais, o resultado será o primeiro argumento como módulo do segundo argumento. Caso contrário, Undefined.
Outros valores Outros valores Undefined.

replace(String, String, String)

Substitui todas as ocorrências do segundo argumento no primeiro argumento com o terceiro argumento. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

replace("abcd", "bc", "x") = "axd".

replace("abcdabcd", "b", "x") = "axcdaxcd".

Todos os argumentos
Tipo de argumento Resultado
Int A representação da String do Int.
Decimal A representação da String do Decimal.
Boolean A representação da String do booleano ("verdadeiro" ou "falso").
String O valor de origem.
Array A representação da String da Array (usando as regras padrão de conversão).
Objeto A representação da String do Objeto (usando as regras padrão de conversão).
Null Undefined.
Não definido Undefined.

rpad(String, Int)

Gera o argumento da string, preenchido no lado direito com o número de espaços especificado no segundo argumento. O argumento Int deve estar entre 0 e 1000. Se o valor fornecido estiver fora desse intervalo válido, o argumento será definido para o valor válido mais próximo (0 ou 1.000). Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

rpad("hello", 2) = "hello  ".

rpad(1, 3) = "1   ".

Tipo de argumento 1 Tipo de argumento 2 Resultado
String Int A String é preenchida no lado direito com um número de espaços igual ao Int fornecido.
String Decimal O argumento Decimal será arredondado para o Int abaixo mais próximo, e a string será preenchida no lado direito com um número de espaços igual ao Int fornecido.
String String O segundo argumento é convertido em um Decimal, que é arredondado para o Int mais próximo. A String é preenchida no lado direito com um número de espaços igual ao valor Int.
Outros valores Int/Decimal/String O primeiro valor será convertido em uma String usando as conversões padrão, e a função rpad será aplicada nessa String. Se não for possível fazer a conversão, o resultado será Undefined.
Qualquer valor Outros valores Undefined.

round(Decimal)

Arredonda o Decimal fornecido para o Int mais próximo. Se o Decimal for equidistante de dois valores Int (por exemplo, 0,5), o Decimal será arredondado. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: Round(1.2) = 1.

Round(1.5) = 2.

Round(1.7) = 2.

Round(-1.1) = -1.

Round(-1.5) = -2.

Tipo de argumento Resultado
Int O argumento.
Decimal Decimal é arredondado para o Int abaixo mais próximo.
String Decimal é arredondado para o Int abaixo mais próximo. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Outros valores Undefined.

rtrim(String)

Remove todos os espaços em branco finais (caracteres de tabulação e espaços) da String fornecida. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

rtrim(" h i ") = " h i"

Tipo de argumento Resultado
Int A representação da String do Int.
Decimal A representação da String do Decimal.
Boolean A representação da String do booleano ("verdadeiro" ou "falso").
Array A representação da String da Array (usando as regras padrão de conversão).
Objeto A representação da String do Objeto (usando as regras padrão de conversão).
Null Undefined.
Não definido Undefined

sign(Decimal)

Gera o sinal do número fornecido. Quando o sinal do argumento for positivo, 1 será gerado. Quando o sinal do argumento for negativo, -1 será gerado. Se o argumento for 0, 0 será gerado. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

sign(-7) = -1.

sign(0) = 0.

sign(13) = 1.

Tipo de argumento Resultado
Int Int, o sinal do valor Int.
Decimal Int, o sinal do valor Decimal.
String Int, o sinal do valor Decimal. A string é convertida em um valor Decimal, e o sinal do valor Decimal é gerado. Se a String não puder ser convertida em um Decimal, o resultado será Undefined. Compatível com a versão de 08/10/2015 do SQL e posteriores.
Outros valores Undefined.

sin(Decimal)

Gera o seno de um número em radianos. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: sin(0) = 0,0

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o seno do argumento.
Decimal Decimal (com precisão dupla), o seno do argumento.
Boolean Undefined.
String Decimal (com precisão dupla), o seno do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Undefined Undefined.

sinh(Decimal)

Gera o seno hiperbólico de um número em radianos. Valores Decimal são arredondados para dobrar a precisão antes da aplicação da função. O resultado é um valor Decimal de precisão dupla. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: sinh(2.3) = 4,936961805545957

Tipo de argumento Resultado
Int Decimal (com precisão dupla), o seno hiperbólico do argumento.
Decimal Decimal (com precisão dupla), o seno hiperbólico do argumento.
Boolean Undefined.
String Decimal (com precisão dupla), o seno hiperbólico do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

sourceip()

Recupera o endereço IP de um dispositivo ou do roteador que se conecta a ele. Se o seu dispositivo estiver conectado diretamente à Internet, a função retornará o endereço IP de origem do dispositivo. Se o seu dispositivo estiver conectado a um roteador conectado à Internet, a função retornará o endereço IP de origem do dispositivo. Compatível com a versão SQL 23/03/2016. sourceip() não usa nenhum parâmetro.

Importante

O endereço IP de origem pública de um dispositivo geralmente é o endereço IP do último gateway de conversão de endereços de rede (NAT), como o roteador ou modem a cabo do seu provedor de serviços de Internet.

Exemplos:

sourceip()="192.158.1.38"

sourceip()="1.102.103.104"

sourceip()="2001:db8:ff00::12ab:34cd"

Exemplo de SQL:

SELECT *, sourceip() as deviceIp FROM 'some/topic'

Exemplos de como usar a função sourceip () em ações de AWS IoT Core regras:

Exemplo 1

O exemplo a seguir mostra como chamar a função () como modelo de substituição em uma ação do DynamoDB.

{ "topicRulePayload": { "sql": "SELECT * AS message FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "dynamoDB": { "tableName": "my_ddb_table", "hashKeyField": "key", "hashKeyValue": "${sourceip()}", "rangeKeyField": "timestamp", "rangeKeyValue": "${timestamp()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDB" } } ] } }

Exemplo 2

O exemplo a seguir mostra como adicionar a função sourceip() como uma propriedade de usuário do MQTT usando modelos de substituição.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish", "headers": { "payloadFormatIndicator": "UTF8_DATA", "contentType": "rule/contentType", "correlationData": "cnVsZSBjb3JyZWxhdGlvbiBkYXRh", "userProperties": [ { "key": "ruleKey1", "value": "ruleValue1" }, { "key": "sourceip", "value": "${sourceip()}" } ] } } } ] } }

Você pode recuperar o endereço IP de origem das mensagens que passam para AWS IoT Core as regras dos caminhos do Message Broker e do Basic Ingest. Você também pode recuperar o IP de origem para mensagens IPv4 e IPv6. O IP de origem será exibido da seguinte forma:

IPv6: yyyy:yyyy:yyyy::yyyy:yyyy

IPv4: xxx.xxx.xxx.xxx

nota

O IP de origem original não será transmitido pela ação Republicar.

substring(String, Int[, Int])

Espera uma String seguida de um ou dois valores Int. No caso de uma String e um único argumento Int, essa função gera a substring da String fornecida do índice Int fornecido (baseado em 0, inclusive) ao final da String. No caso de uma String e dois argumentos Int, essa função gera a substring da String fornecida no primeiro argumento de índiceInt (baseado em 0, inclusive) para o segundo argumento de índice Int (baseado em 0, inclusive). Índices inferiores a zero são definidos como zero. Índices superiores ao comprimento da String são definidos para o comprimento da String. No caso da versão de argumento três, se o primeiro índice for superior ou igual ao segundo índice, o resultado será a String vazia.

 Se os argumentos fornecidos não forem (String, Int) nem (String, Int, Int), as conversões padrão serão aplicadas aos argumentos na tentativa de convertê-los nos tipos corretos. Se os tipos não puderem ser convertidos, o resultado da função será Undefined. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

substring("012345", 0) = "012345".

substring("012345", 2) = "2345".

substring("012345", 2.745) = "2345".

substring(123, 2) = "3".

substring("012345", -1) = "012345".

substring(true, 1.2) = "rue".

substring(false, -2.411E247) = "false".

substring("012345", 1, 3) = "12".

substring("012345", -50, 50) = "012345".

substring("012345", 3, 1) = "".

sql_version()

Retorna a versão SQL especificada nesta regra. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

sql_version() = "23/03/2016"

sqrt(Decimal)

Gera a raiz quadrada de um número. Argumentos Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: sqrt(9) = 3,0.

Tipo de argumento Resultado
Int A raiz quadrada do argumento.
Decimal A raiz quadrada do argumento.
Boolean Undefined.
String A raiz quadrada do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

startswith(String, String)

Gera Boolean, independentemente de o primeiro argumento da string começar com o segundo argumento da string. Se um dos argumentos for Null ou Undefined, o resultado será Undefined. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

startswith("ranger","ran") = true

Tipo de argumento 1 Tipo de argumento 2 Resultado
String String Independentemente de a primeira string começar com a segunda string.
Outros valores Outros valores Os dois argumentos são convertidos em strings usando as regras padrão de conversão. Retorna verdadeiro se independentemente de a primeira string começar com a segunda string. Se um dos argumentos for Null ou Undefined, o resultado será Undefined.

tan(Decimal)

Gera a tangente de um número em radianos. Valores Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: tan(3) = -0,1425465430742778

Tipo de argumento Resultado
Int Decimal (com precisão dupla), a tangente do argumento.
Decimal Decimal (com precisão dupla), a tangente do argumento.
Boolean Undefined.
String Decimal (com precisão dupla), a tangente do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

tanh(Decimal)

Gera a tangente hiperbólica de um número em radianos. Valores Decimal são arredondados para dobrar a precisão antes da aplicação da função. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: tanh(2.3) = 0,9800963962661914

Tipo de argumento Resultado
Int Decimal (com precisão dupla), a tangente hiperbólica do argumento.
Decimal Decimal (com precisão dupla), a tangente hiperbólica do argumento.
Boolean Undefined.
String Decimal (com precisão dupla), a tangente hiperbólica do argumento. Se a string não puder ser convertida em um Decimal, o resultado será Undefined.
Array Undefined.
Objeto Undefined.
Null Undefined.
Não definido Undefined.

time_to_epoch(String, String)

Use a função time_to_epoch para converter uma string de timestamp em um número de milissegundos tempo de epoch do Unix. Compatível com a versão de 23/03/2016 do SQL e posteriores. Para converter milissegundos em uma string de carimbo de data/hora, consulte parse_time(String, Long, [String]).

A função time_to_epoch espera os seguintes argumentos:

timestamp

(String) A string de carimbo de data/hora a ser convertida em milissegundos desde o epoch do Unix. Se a string do carimbo de data/hora não especificar um fuso horário, a função usará o fuso horário UTC.

pattern

(String) Um padrão de data/hora que segue os formatos de tempo JDK11.

Exemplos:

time_to_epoch("2020-04-03 09:45:18 UTC+01:00", "yyyy-MM-dd HH:mm:ss VV") = 1585903518000

time_to_epoch("18 December 2015", "dd MMMM yyyy") = 1450396800000

time_to_epoch("2007-12-03 10:15:30.592 America/Los_Angeles", "yyyy-MM-dd HH:mm:ss.SSS z") = 1196705730592

timestamp()

Retorna o timestamp atual em milissegundos a partir das 00:00:00 Horário Universal Coordenado (UTC), quinta-feira, 1º de janeiro de 1970, conforme observado pelo mecanismo de regras. AWS IoT Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo: timestamp() = 1481825251155

topic(Decimal)

Gera o tópico para o qual a mensagem que acionou a regra foi enviada. Se nenhum parâmetro for especificado, todo o tópico será gerado. O parâmetro Decimal é usado para especificar um segmento de tópico específico, com 1 designando o primeiro segmento. Para o tópico foo/bar/baz, topic(1) retornará foo, topic(2) retornará bar, e assim por diante. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

topic() = "things/myThings/thingOne"

topic(1) = "objetos"

Quando a Ingestão básica for usada, o prefixo inicial do tópico ($aws/rules/rule-name) não estará disponível na função topic(). Por exemplo, considerando o tópico:

$aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights

topic() = "Buildings/Building5/Floor2/Room201/Lights"

topic(3) = "Floor2"

traceid()

Gera o ID de rastreamento (UUID) da mensagem MQTT ou Undefined caso a mensagem não tenha sido enviada por MQTT. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

traceid() = "12345678-1234-1234-1234-123456789012"

transform(String, Objeto, Matriz)

Retorna uma matriz de objetos que contém o resultado da transformação especificada do parâmetro Object no parâmetro Array.

Compatível com a versão de 23/03/2016 do SQL e posteriores.

String

O modo de transformação a ser usado. Consulte a tabela a seguir para ver os modos de transformação compatíveis e como eles criam os Result a partir dos parâmetros Object e Array.

Objeto

Um objeto que contém os atributos a serem aplicados a cada elemento do Array.

Array

Uma matriz de objetos nos quais os atributos de Object são aplicados.

Cada objeto nessa matriz corresponde a um objeto na resposta da função. Cada objeto na resposta da função contém os atributos presentes no objeto original e os atributos fornecidos por Object, conforme determinado pelo modo de transformação especificado na String.

Parâmetro String

Parâmetro Object

Parâmetro Array

Resultado

enrichArray

Objeto

Matriz de objetos

Uma matriz de objetos na qual cada objeto contém os atributos de um elemento do parâmetro Array e os atributos do parâmetro Object.

Qualquer outro valor

Qualquer valor

Qualquer valor

Não definido

nota

A matriz retornada por essa função está limitada a 128 KiB.

Exemplo 1 da função de transformação

Este exemplo mostra como a função transform() produz uma única matriz de objetos a partir de um objeto de dados e uma matriz.

Neste exemplo, a mensagem a seguir é publicada no tópico A/B do MQTT.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

Essa instrução SQL para uma ação de regra de tópico usa a função transform() com um valor de String de enrichArray. Neste exemplo, Object é a propriedade de attributes da carga da mensagem e Array é a matriz de values, que contém três objetos.

select value transform("enrichArray", attributes, values) from 'A/B'

Ao receber a carga útil da mensagem, a instrução SQL avalia a seguinte resposta.

[ { "a": 3, "data1": 1, "data2": 2 }, { "b": 4, "data1": 1, "data2": 2 }, { "c": 5, "data1": 1, "data2": 2 } ]

Exemplo 2 da função de transformação

Este exemplo mostra como a função transform() pode usar valores literais para incluir e renomear atributos individuais da carga útil da mensagem.

Neste exemplo, a mensagem a seguir é publicada no tópico A/B do MQTT. Essa é a mesma mensagem que foi usada em Exemplo 1 da função de transformação.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

Essa instrução SQL para uma ação de regra de tópico usa a função transform() com um valor de String de enrichArray. O Object na função transform() tem um único atributo chamado key com o valor de attributes.data1 na carga útil da mensagem e Array é a matriz de values, que contém os mesmos três objetos usados no exemplo anterior.

select value transform("enrichArray", {"key": attributes.data1}, values) from 'A/B'

Ao receber a carga útil da mensagem, esta instrução SQL avalia a seguinte resposta. Observe como a propriedade data1 é nomeada key na resposta.

[ { "a": 3, "key": 1 }, { "b": 4, "key": 1 }, { "c": 5, "key": 1 } ]

Exemplo 3 da função de transformação

Este exemplo mostra como a função transform() pode ser usada em cláusulas SELECT aninhadas para selecionar vários atributos e criar novos objetos para processamento posterior.

Neste exemplo, a mensagem a seguir é publicada no tópico A/B do MQTT.

{ "data1": "example", "data2": { "a": "first attribute", "b": "second attribute", "c": [ { "x": { "someInt": 5, "someString": "hello" }, "y": true }, { "x": { "someInt": 10, "someString": "world" }, "y": false } ] } }

O Object para esta função de transformação é o objeto retornado pela instrução SELECT, que contém os elementos a e b do objeto data2 da mensagem. O parâmetro Array consiste nos dois objetos da matriz data2.c na mensagem original.

select value transform('enrichArray', (select a, b from data2), (select value c from data2)) from 'A/B'

Com a mensagem anterior, a instrução SQL avalia a seguinte resposta.

[ { "x": { "someInt": 5, "someString": "hello" }, "y": true, "a": "first attribute", "b": "second attribute" }, { "x": { "someInt": 10, "someString": "world" }, "y": false, "a": "first attribute", "b": "second attribute" } ]

A matriz retornada nessa resposta pode ser usada com ações de regras de tópico compatíveis com batchMode.

trim(String)

Remove todos os espaços em branco iniciais e finais da String fornecida. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplo:

Trim(" hi ") = "hi"

Tipo de argumento Resultado
Int A representação de String de Int com todos os espaços em branco iniciais e finais removidos.
Decimal A representação de String de Decimal com todos os espaços em branco iniciais e finais removidos.
Boolean A representação de String de Boolean ("verdadeiro" ou "falso") com todos os espaços em branco iniciais e finais removidos.
String A String com todos os espaços em branco iniciais e finais removidos.
Array A representação da String da Array usando as regras padrão de conversão.
Objeto A representação da String do Objeto usando as regras padrão de conversão.
Null Undefined.
Não definido Undefined.

trunc(Decimal, Int)

Trunca o primeiro argumento para o número de lugares Decimal especificado pelo segundo argumento. Se o segundo argumento for inferior a zero, ele será definido como zero. Se o segundo argumento for superior a 34, ele será definido como 34. Os zeros finais são removidos do resultado. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

trunc(2.3, 0) = 2.

trunc(2.3123, 2) = 2,31.

trunc(2.888, 2) = 2,88.

trunc(2.00, 5) = 2.

Tipo de argumento 1 Tipo de argumento 2 Resultado
Int Int O valor de origem.
Int/Decimal Int/Decimal O primeiro argumento é truncado para o comprimento descrito pelo segundo argumento. O segundo argumento, se não for um Int, será arredondado para o Int abaixo mais próximo.
Int/Decimal/String Int/Decimal O primeiro argumento é truncado para o comprimento descrito pelo segundo argumento. O segundo argumento, se não for um Int, será arredondado para o Int abaixo mais próximo. A String é convertida em um valor Decimal. Se não for possível converter a string, o resultado será Undefined.
Outros valores Undefined.

upper(String)

Gera a versão em letra maiúscula da String fornecida. Os argumentos de nãoString são convertidos em String usando as regras de conversão padrão. Compatível com a versão de 08/10/2015 do SQL e posteriores.

Exemplos:

upper("hello") = "HELLO"

upper(["hello"]) = "[\"HELLO\"]"