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.
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
:
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). |
Palavra-chave | Resultado |
---|---|
Decimal |
Aplica valor para Decimal . |
Bool | Aplica valor para Boolean . |
Boolean |
Aplica valor para Boolean . |
Regras de cast:
Tipo de argumento | Resultado |
---|---|
Int |
Um Decimal sem ponto decimal. |
Decimal |
O valor de origem. notaCom o SQL V2 (23/03/2016), valores numéricos que são números inteiros, como |
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 . |
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 . |
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 . |
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. Decimal s, Int s e Boolean s 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. Decimal s, Int s, Boolean s 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 |
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 deproto
, 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 arquivoFileDescriptorSet
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 chamados3-bucket
. -
myproto
O arquivo
.proto
original usado para gerar o arquivoFileDescriptorSet
chamadomyproto.proto
. -
messagetype
O tipo de mensagem chamado
messagetype
(junto com todas as dependências importadas) conforme definido emmyproto.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. Chamarget_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
eUTF8_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:
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
esecretsmanager: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
emachinelearning: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.
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".
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"
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"
.
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/
) não estará disponível na função topic(). Por exemplo, considerando o tópico:rule-name
$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âmetrosObject
eArray
.- 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 naString
.
Parâmetro |
Parâmetro |
Parâmetro |
Resultado |
---|---|---|---|
|
Objeto |
Matriz de objetos |
Uma matriz de objetos na qual cada objeto contém os atributos de um elemento do parâmetro |
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\"]"