sintaxe da Expressão da Série Temporal Azure Time Series Insights Gen2

Descrição Geral

O Time Series Expression (TSX) é uma linguagem de expressão baseada em cadeias com escrita forte. O TSX é utilizado para representar as seguintes entidades numa Consulta de Série Temporal.

  • Filtro
  • Valor
  • Agregação

Filtrar expressões

As expressões de filtro são utilizadas para representar cláusulas booleanas. A tabela seguinte lista exemplos de filtros:

TSX Description
$event.PointValue.Double = 3.14 true para eventos com PointValue duplo igual a 3.14
$event.PointValue > 3.14 AND $event.Status.String = 'Good' true para eventos com PointValue maior do que 3.14 e estado da cadeia Good
$event.$ts > dt'2018-11-01T02:03:45Z' true para eventos com um carimbo de data/hora superior a 2018-11-01T02:03:45Z
$event.PointEval.Bool = true true para eventos com PointValue igual a true

Expressões de valor

As expressões de valor são utilizadas para ilustrar o valor das variáveis numéricas e categóricas. Uma expressão de valor pode ser uma expressão de referência de propriedade do tipo Duplo ou Longo.

Por exemplo:

TSX Notas
$event.Temperature.Double O último token em qualquer expressão de valor (neste caso Double) é lido como o Tipo da propriedade.
$event.Temperature Presume-se que o tipo é Duplo para uma propriedade acedida por um único token.
$event['Temperature-Celsius'] Utilize [ e ] para escapar a tokens com carateres especiais. Além disso, utilize \ entre parênteses para escapar aos seguintes carateres: \ e '.
$event.Temperature.Celsius.Double Utilizado . para aceder a propriedades aninhadas. Ao aceder a propriedades aninhadas, é necessário o Tipo.
$event.Temperature['Celsius-C'].Double Utilize [ e ] para escapar a tokens com carateres especiais ao aceder a propriedades aninhadas. Além disso, utilize \ entre parênteses para escapar aos seguintes carateres: \ e '. Ao aceder a propriedades aninhadas, é necessário o Tipo.
$event['Temperature']['Celsius'].Double A utilização de [ e ] para escapar a tokens é permitida em qualquer token.

Tipo de variável numérica

O resultado da expressão de valor deve ser do tipo Duplo ou Longo .

Tipo de variável de agregação

O resultado da expressão de valor pode ser de todos os tipos suportados.

Tipo de variável categórica

O resultado da expressão de valor só pode ser Cadeia ou Tipo longo .

Expressões de agregação

As expressões de agregação são utilizadas para ilustrar a operação de agregação a utilizar na consulta. Uma expressão agregada resulta num único valor para cada intervalo. As expressões de agregação podem ser aplicadas em variáveis numéricas e agregadas.

Expressões de agregação – tipo de variável numérica

As variáveis numéricas devem referir-se a $value.

Eis as funções de agregação suportadas.

Função agregar Exemplo Descrição
min min($value) Calcula o mínimo do $value por intervalo. null Evita valores. Não é possível utilizar com a interpolação.
max max($value) Calcula o máximo de $value por intervalo. null Evita valores. Não é possível utilizar com a interpolação.
sum sum($value) Calcula a soma de $value todos os eventos no intervalo. null Evita valores. Não é possível utilizar com a interpolação.
avg avg($value) Calcula a média de mais de $value todos os eventos no intervalo. null Evita valores. Não é possível utilizar com a interpolação.
first first($value) Devolve $value o primeiro evento que ocorre no intervalo por carimbo de data/hora do evento. Não evitanull valores. Não é possível utilizar com a interpolação.
last last($value) Devolve $value o último evento que ocorre no intervalo por carimbo de data/hora do evento. Não evitanull valores. Não é possível utilizar com a interpolação.
median median($value) Devolve $value o evento intermédio no intervalo por carimbo de data/hora do evento. Não evitanull valores. Não é possível utilizar com a interpolação.
stdev stdev($value) Devolve $value o desvio padrão dos eventos no intervalo. null Evita valores. Não é possível utilizar com a interpolação.
twsum twsum($value) Devolve $value a soma ponderada do tempo dos eventos no intervalo. Requer interpolação.
twavg twavg($value) Devolve $value a média ponderada do tempo dos eventos no intervalo. Requer interpolação.
left left($value) Devolve o $value no limite esquerdo do intervalo especificado. Requer interpolação.
right right($value) Devolve o $value no limite direito do intervalo especificado. Requer interpolação.

Expressões de agregação – tipo de variável de agregação

As variáveis de agregação devem referir-se a uma Propriedade no payload de eventos.

Eis as funções de agregação suportadas.

Função agregar Exemplo Descrição
count count() Devolve o número de eventos por intervalo.
min min($event.Temperature.Double) Calcula o mínimo da propriedade Temperatura por intervalo. null Evita valores.
max max($event.Temperature.Long) Calcula o máximo da propriedade Temperatura por intervalo. null Evita valores.
sum sum($event.Temperature.Double) Calcula a soma da propriedade Temperatura em todos os eventos no intervalo. null Evita valores.
avg avg($event.Temperature.Long) Calcula a média da propriedade Temperatura em todos os eventos no intervalo. null Evita valores.
first first($event.Temperature.String) Devolve o primeiro valor que ocorre (por carimbo de data/hora do evento) da propriedade Temperatura de todos os eventos no intervalo. Não evitanull valores.
last last($event.Temperature.String) Devolve o último valor (por carimbo de data/hora do evento) da propriedade Temperatura de todos os eventos no intervalo. Não evitanull valores.
median median($event.Temperature.String) Devolve o valor médio (por carimbo de data/hora do evento) da propriedade Temperatura de todos os eventos no intervalo. Não evitanull valores.
stdev stdev($event.Temperature.String) Calcula o desvio padrão da propriedade Temperatura por intervalo. null Evita valores.

Para um tipo de variável de agregação , estas funções podem ser combinadas na expressão agregada. Por exemplo: max($event.Temperature.Long) - min($event.Temperature.Long).

Syntax

Esta secção descreve os principais conceitos de sintaxe e operadores de consulta que são concatenados para expressões de formulário.

Literais suportados

Nota

Os literais abaixo são utilizados para formar expressões. Veja o artigo Tipos de dados suportados para obter a lista completa de tipos de dados.

Tipo primitivo Literais
Bool TRUE, FALSE
DateTime dt'2016-10-08T03:22:55.3031599Z'
Duplo 1.23, 1.0
Longo 1, 6
String 'abc'
TimeSpan ts'P1Y2M3DT4M5.67S'
Null NULL

Tipos de operando suportados

Operação Tipos suportados Notas
<, >, <=, >= Duplo, Longo, DateTime, TimeSpan
=, !=, <> Duplo, Longo, Cadeia, Bool, DateTime, TimeSpan, NULL <> é equivalente a !=
+, -, *, / Duplo, Longo, DateTime, TimeSpan

Para expressões de comparação (<, >, <=, >=, =, !=), os operandos podem ser NULL ou ser do mesmo tipo. Em cada expressão de predicado, os tipos de operandos do lado esquerdo (LHS) e do lado direito (RHS) são validados para corresponder. Os erros ocorrem quando os tipos de LHS e RHS não concordam ou não é permitida uma operação em determinados tipos.

Nota

O tipo de cadeia não é anulável no Arquivo Quente:

  • A comparação da Cadeia com NULL e da cadeia vazia ('') comporta-se da mesma forma: $event.p1.String = NULL é equivalente a $event.p1.String = ''.
  • A API pode devolver valores NULL , mesmo que os eventos originais contenham cadeias vazias.

No futuro, o mesmo comportamento será na Cold Store.

Não assuma a dependência dos valores NULL nas colunas Cadeia e trate-os da mesma forma que as cadeias vazias.

  • É aplicada uma verificação de tipo:
    • Qualquer tipo de propriedade é aceite num NULL literal.
    • Os tipos de LHS e RHS devem corresponder.

Eis exemplos de propriedades p1 e p2 do tipo Cadeia, propriedade p3 do tipo Duplo e uma propriedade aninhada armazenada como p4.p5 do tipo Duplo:

Filtro É válido? Notas
$event.p1.String = 'abc' Yes
$event.p1.String = $event.p2.String Yes
$event.p1.String = NULL Yes NULL corresponde a qualquer tipo do lado esquerdo.
$event.p3.Double = 'abc' No Erro de correspondência do tipo.
$event.p3.Double = $event.p1.String No Erro de correspondência do tipo.
$event.p1 = 'abc' No Erro de correspondência do tipo.
$event.p1 = 1 No Erro de correspondência do tipo.
$event.p1 = true No Erro de correspondência do tipo.
$event.p1 = NULL Yes p1 é o único token utilizado. Interpretado como $event.p1.Double = NULL
$event['p1'] != NULL Yes ['p1'] é o único token utilizado. Interpretado como $event['p1'].Double != NULL
$event.p4.p5 = 0.0 No Sintaxe de referência de propriedade inválida. Tem de ser especificado um tipo em LHS de comparação.
$event.p4.p5.Double = 0.0 Yes

Funções escalares suportadas

Segue-se a lista de funções escalares por categorias:

Funções de conversão

Nome da função Assinatura Exemplo Notas
toDouble Double toDouble (value: String, Double, Long) toDouble($event.value.Long) Converte os argumentos em Duplo.
toLong Long toLong (value: String, Double, Long) toLong($event.value.Double + 1.0) Converte os argumentos em Longo.
toString String toString (value: String, Double, Long) toString($event.value.Double) Converte argumentos em Cadeia.

Funções matemáticas

Nome da função Assinatura Exemplo Notas
round Double round(value:Double) round($event.value.Double) Arredonda um número flutuante de precisão dupla para o integral mais próximo.
ceiling Double ceiling(value:Double) ceiling($event.value.Double) Devolve o menor valor integral maior ou igual a número de vírgula flutuante de precisão dupla.
floor Double floor(value:Double) floor($event.value.Double) Devolve o maior valor integral que é menor ou igual a número de vírgula flutuante de precisão dupla.

Funções trigonométricas

Nome da função Assinatura Exemplo Notas
cos Double cos(value:Double) cos($event.value.Double) Devolve o Cosseno do ângulo especificado em radianos.
sin Double sin(value:Double) sin($event.value.Double) Devolve o Seno do ângulo especificado em radianos.
tan Double tan(value:Double) tan($event.value.Double) Devolve a Tangente do ângulo especificado em radianos.
acos Double acos(value:Double) acos($event.value.Double) Devolve o ângulo em radianos cujo Cosseno é o número especificado.
asin Double asin(value:Double) asin($event.value.Double) Devolve o ângulo em radianos cujo Seno é o número especificado.
atan Double atan(value:Double) atan($event.value.Double) Devolve o ângulo em radianos cuja Tangente é o número especificado.
atan2 Double atan2(value1:Double, value2:Double) atan2($event.value1.Double, $event.value2.Double) Devolve o ângulo em radianos cuja Tangente é o quociente de dois números especificados.

Funções logarítmicas

Nome da função Assinatura Exemplo Notas
log Double log(value:Double) log($event.value.Double) Devolve o logaritmo natural de um número especificado.
log2 Double log2(value:Double) log2($event.value.Double) Devolve o logaritmo base 2 de um número especificado.
log10 Double log10(value:Double) log10($event.value.Double) Devolve o logaritmo base 10 de um número especificado.

Funções DateTime

Nome da função Assinatura Exemplo Notas
monthOfYear Long monthOfYear(value:DateTime) monthOfYear($event.$ts) Devolve o mês do ano como numérico para o DateTime fornecido.
dayOfMonth Long dayOfMonth(value:DateTime) dayOfMonth($event.$ts) Devolve o dia do mês como numérico para o DateTime fornecido.
hourOfDay Long hourOfDay(value:DateTime) hourOfDay($event.$ts) Devolve a hora do dia como numérica para o DateTime fornecido.
utcNow DateTime utcNow() utcNow() Devolve a hora atual no formato UTC.

Funções de cadeia

Nome da função Assinatura Exemplo Notas
toUpper String toUpper(value:String) toUpper($event.value.String) Devolve a cadeia de entrada convertida em maiúsculas.
toLower String toLower(value:String) toLower($event.value.String) Devolve a cadeia de entrada convertida em minúsculas.
strLen Long strLen(value:String) strLen($event.value.String) Devolve o número de carateres no argumento de cadeia.
strCat Long strCat(value1:String, value2:String) strCat($event.value1.String, $event.value2.String) Concatena duas cadeias de entrada especificadas.
subString String subString(value:String, startIndex:Double, length:Double) subString($event.value.String, 2.0, 4.0) Obtém uma subcadeia desta instância.
trim String trim(value:String) trim($event.value.String) Devolve uma nova cadeia ao remover todos os carateres de espaço em branco à esquerda e à direita da cadeia de entrada.
indexOf Long indexOf(value:String, subString:String) indexOf($event.value.String, 'abc') Devolve a primeira ocorrência da cadeia especificada na cadeia original, com base na indexação zero.
replace String replace(value:String, searchString:String, replaceString:String) replace($event.value.String, 'abc', 'xyz') Devolve uma cadeia onde todas as ocorrências da cadeia de pesquisa são substituídas pela cadeia de substituição.

Outras Funções

Nome da função Assinatura Exemplo Notas
coalesce String, Long, Double, Bool coalesce (value: String, Long, Double, Bool) coalesce(toLong($event.value.Double), $event.value.Long) Devolve o primeiro valor não nulo na lista de argumentos. Aceita no mínimo 2 e no máximo 64 argumentos, mas têm de ser todos do mesmo tipo de dados.
iff String, Long, Double, Bool iff (predicate: bool, ifTrue: String, Long, Double, Bool, ifFalse: String, Long, Double, Bool) iff ($event.value.Double > 100, 'Good', 'Bad') Devolve o segundo ou terceiro argumento consoante o predicado seja resolvido como verdadeiro (devolve o segundo argumento) ou falso (devolve o terceiro argumento). O predicado tem de ser uma expressão booleana e o segundo e terceiro argumentos têm de ser do mesmo tipo.

Ver também

  • Para obter mais informações sobre o registo de aplicações e o modelo de programação do Azure Active Directory, veja Azure Active Directory para programadores.

  • Para saber mais sobre os parâmetros de pedido e autenticação, leia Autenticação e autorização.

  • As ferramentas que ajudam a testar pedidos e respostas HTTP incluem:

  • Fiddler. Este proxy de depuração Web gratuito pode intercetar os seus pedidos REST, para que possa diagnosticar as mensagens de pedido e resposta HTTP.

  • JWT.io. Pode utilizar esta ferramenta para capturar rapidamente as afirmações no token de portador e, em seguida, validar os respetivos conteúdos.

  • Postman. Esta é uma ferramenta de teste de resposta e pedido HTTP gratuita para depurar APIs REST.

  • Saiba mais sobre Azure Time Series Insights Gen2 ao rever a documentação do Gen2.