sintassi Azure Time Series Insights Time Series Expression gen2

Panoramica

Time Series Expression (TSX) è un linguaggio di espressione basato su stringhe con digitazione complessa. TSX viene usato per rappresentare le entità seguenti in una query time series.

  • Filtra
  • Valore
  • Aggregazione

Espressioni filtro

Le espressioni di filtro vengono usate per rappresentare clausole booleane. Nella tabella seguente sono elencati esempi di filtri:

TSX Descrizione
$event.PointValue.Double = 3.14 true per gli eventi con double PointValue uguale a 3.14
$event.PointValue > 3.14 AND $event.Status.String = 'Good' true per gli eventi con PointValue maggiore di 3.14 e lo stato della stringa Good
$event.$ts > dt'2018-11-01T02:03:45Z' true per gli eventi con un timestamp maggiore di 2018-11-01T02:03:45Z
$event.PointEval.Bool = true true per gli eventi con PointValue uguale a true

Espressioni valore

Le espressioni di valore vengono usate per rappresentare il valore per le variabili numeriche e categoriche. Un'espressione valore può essere un'espressione di riferimento delle proprietà di tipo Double o Long.

Ad esempio:

TSX Note
$event.Temperature.Double L'ultimo token in qualsiasi espressione di valore (in questo caso Double) viene letto come Tipo della proprietà.
$event.Temperature Si presuppone che il tipo sia Double per una proprietà a cui viene eseguito l'accesso da un singolo token.
$event['Temperature-Celsius'] Usare [ e ] per l'escaping dei token con caratteri speciali. Usare \ inoltre all'interno delle parentesi quadre per eseguire l'escape dei caratteri seguenti: \ e '.
$event.Temperature.Celsius.Double Usare . per accedere alle proprietà annidate. Quando si accede alle proprietà annidate, è necessario il tipo.
$event.Temperature['Celsius-C'].Double Usare [ e ] per l'uscita di token con caratteri speciali durante l'accesso alle proprietà nidificate. Usare \ inoltre all'interno delle parentesi quadre per eseguire l'escape dei caratteri seguenti: \ e '. Quando si accede alle proprietà annidate, è necessario il tipo.
$event['Temperature']['Celsius'].Double L'uso di e ] per l'uscita dei [ token è consentito in qualsiasi token.

Tipo di variabile numerica

Il risultato dell'espressione valore deve essere di tipo Double o Long .

Tipo di variabile di aggregazione

Il risultato dell'espressione valore può essere di qualsiasi tipo supportato.

Tipo di variabile categorica

Il risultato dell'espressione valore può essere solo String o Long type.

Espressioni di aggregazione

Le espressioni di aggregazione vengono usate per rappresentare l'operazione di aggregazione da usare nella query. Un'espressione di aggregazione genera un singolo valore per ogni intervallo. Le espressioni di aggregazione possono essere applicate alle variabili numeriche e di aggregazione.

Espressioni di aggregazione - tipo di variabile numerica

Le variabili numeriche devono fare riferimento a $value.

Ecco le funzioni di aggregazione supportate.

Funzione di aggregazione Esempio Descrizione
min min($value) Calcola il minimo dell'intervallo $value . null Evita i valori. Impossibile usare l'interpolazione.
max max($value) Calcola il massimo dell'intervallo $value . null Evita i valori. Impossibile usare l'interpolazione.
sum sum($value) Calcola la somma di $value tutti gli eventi nell'intervallo. null Evita i valori. Impossibile usare l'interpolazione.
avg avg($value) Calcola la media di $value tutti gli eventi nell'intervallo. null Evita i valori. Impossibile usare l'interpolazione.
first first($value) Restituisce $value il primo evento che si verifica nell'intervallo in base al timestamp dell'evento. Non evita null i valori. Impossibile usare l'interpolazione.
last last($value) Restituisce $value l'ultimo evento che si verifica nell'intervallo in base al timestamp dell'evento. Non evita null i valori. Impossibile usare l'interpolazione.
median median($value) Restituisce $value l'evento intermedio nell'intervallo in base al timestamp dell'evento. Non evita null i valori. Impossibile usare l'interpolazione.
stdev stdev($value) Restituisce $value la deviazione standard degli eventi nell'intervallo. null Evita i valori. Impossibile usare l'interpolazione.
twsum twsum($value) Restituisce $value la somma ponderata del tempo degli eventi nell'intervallo. Richiede l'interpolazione.
twavg twavg($value) Restituisce $value la media ponderata del tempo degli eventi nell'intervallo. Richiede l'interpolazione.
left left($value) Restituisce l'oggetto $value al bordo sinistro dell'intervallo specificato. Richiede l'interpolazione.
right right($value) Restituisce l'oggetto $value al bordo destro dell'intervallo specificato. Richiede l'interpolazione.

Espressioni di aggregazione - Tipo di variabile di aggregazione

Le variabili di aggregazione devono fare riferimento a una proprietà nel payload dell'evento.

Ecco le funzioni di aggregazione supportate.

Funzione di aggregazione Esempio Descrizione
count count() Restituisce il numero di eventi per intervallo.
min min($event.Temperature.Double) Calcola il valore minimo della proprietà Temperature per intervallo. null Evita i valori.
max max($event.Temperature.Long) Calcola il massimo della proprietà Temperature per intervallo. null Evita i valori.
sum sum($event.Temperature.Double) Calcola la somma della proprietà Temperature su tutti gli eventi nell'intervallo. null Evita i valori.
avg avg($event.Temperature.Long) Calcola la media della proprietà Temperature su tutti gli eventi nell'intervallo. null Evita i valori.
first first($event.Temperature.String) Restituisce il primo valore (in base al timestamp dell'evento) della proprietà Temperature da tutti gli eventi nell'intervallo. Non evita null i valori.
last last($event.Temperature.String) Restituisce l'ultimo valore (per timestamp dell'evento) della proprietà Temperature da tutti gli eventi nell'intervallo. Non evitanull valori.
median median($event.Temperature.String) Restituisce il valore intermedio (per timestamp dell'evento) della proprietà Temperature da tutti gli eventi nell'intervallo. Non evitanull valori.
stdev stdev($event.Temperature.String) Calcola la deviazione standard della proprietà Temperature per intervallo. Evita valori null .

Per un tipo di variabile di aggregazione , queste funzioni possono essere combinate nell'espressione di aggregazione. Ad esempio: max($event.Temperature.Long) - min($event.Temperature.Long).

Sintassi

In questa sezione vengono descritti i concetti di sintassi di base e gli operatori di query concatenati per formare espressioni.

Valori letterali supportati

Nota

I valori letterali seguenti vengono usati per formare espressioni, vedere l'articolo Tipi di dati supportati per l'elenco completo dei tipi di dati.

Tipo primitivo Valori letterali
Bool TRUE, FALSE
DateTime dt'2016-10-08T03:22:55.3031599Z'
Double 1.23, 1.0
Long 1, 6
Stringa 'abc'
TimeSpan ts'P1Y2M3DT4M5.67S'
Null NULL

Tipi di operando supportati

Operazione Tipi supportati Note
<, >, <=, >= Double, Long, DateTime, TimeSpan
=, !=, <> Double, Long, String, Bool, DateTime, TimeSpan, NULL <> equivale a !=
+, -, *, / Double, Long, DateTime, TimeSpan

Per le espressioni di confronto (<, >, <=, >=, =, !=), gli operandi possono essere NULL o essere dello stesso tipo. In ogni espressione di predicato, i tipi di operandi sul lato sinistro (LHS) e sul lato destro (RHS) vengono convalidati per la corrispondenza. Gli errori si verificano quando i tipi di LHS e RHS non sono d'accordo o un'operazione non è consentita in determinati tipi.

Nota

Il tipo di stringa non è nullable in Warm Store:

  • Il confronto tra stringhee stringhe vuote ('') si comporta allo stesso modo: $event.p1.String = NULL equivale a .$event.p1.String = ''
  • L'API può restituire valori NULL anche se gli eventi originali contengono stringhe vuote.

In futuro, lo stesso comportamento sarà nello Store ad accesso sporadico.

Non accettare la dipendenza dai valori NULL nelle colonne String e considerarli allo stesso modo delle stringhe vuote.

  • Viene applicato un controllo del tipo:
    • Qualsiasi tipo di proprietà viene accettato in base a un NULL valore letterale.
    • I tipi di LHS e RHS devono corrispondere.

Di seguito sono riportati esempi di proprietà p1 e p2 di tipo String, proprietà p3 di tipo Double e una proprietà annidata archiviata come p4.p5 di tipo Double:

Filtra È valido? Note
$event.p1.String = 'abc'
$event.p1.String = $event.p2.String
$event.p1.String = NULL NULL corrisponde a qualsiasi tipo a sinistra.
$event.p3.Double = 'abc' No Tipo non corrispondente.
$event.p3.Double = $event.p1.String No Tipo non corrispondente.
$event.p1 = 'abc' No Tipo non corrispondente.
$event.p1 = 1 No Tipo non corrispondente.
$event.p1 = true No Tipo non corrispondente.
$event.p1 = NULL p1 è l'unico token usato. Interpretato come $event.p1.Double = NULL
$event['p1'] != NULL ['p1'] è l'unico token usato. Interpretato come $event['p1'].Double != NULL
$event.p4.p5 = 0.0 No Sintassi di riferimento alle proprietà non valida. È necessario specificare un tipo in LHS di confronto.
$event.p4.p5.Double = 0.0

Funzioni scalari supportate

Di seguito è riportato l'elenco delle funzioni scalari per categorie:

Funzioni di conversione

Nome della funzione Firma Esempio Note
toDouble Double toDouble (value: String, Double, Long) toDouble($event.value.Long) Converte gli argomenti in Double.
toLong Long toLong (value: String, Double, Long) toLong($event.value.Double + 1.0) Converte gli argomenti in Long.
toString String toString (value: String, Double, Long) toString($event.value.Double) Converte gli argomenti in String.

Funzioni matematiche

Nome della funzione Firma Esempio Note
round Double round(value:Double) round($event.value.Double) Arrotonda un numero mobile a precisione doppia all'integrale più vicino.
ceiling Double ceiling(value:Double) ceiling($event.value.Double) Restituisce il valore integrale più piccolo maggiore o uguale al numero a virgola mobile a precisione doppia.
floor Double floor(value:Double) floor($event.value.Double) Restituisce il valore integrale più grande minore o uguale al numero a virgola mobile a precisione doppia.

Funzioni trigonometriche

Nome della funzione Firma Esempio Note
cos Double cos(value:Double) cos($event.value.Double) Restituisce il Coseno dell'angolo specificato in radianti.
sin Double sin(value:Double) sin($event.value.Double) Restituisce il seno dell'angolo specificato in radianti.
tan Double tan(value:Double) tan($event.value.Double) Restituisce la tangente dell'angolo specificato in radianti.
acos Double acos(value:Double) acos($event.value.Double) Restituisce l'angolo in radianti il cui coseno è il numero specificato.
asin Double asin(value:Double) asin($event.value.Double) Restituisce l'angolo in radianti il cui seno è il numero specificato.
atan Double atan(value:Double) atan($event.value.Double) Restituisce l'angolo in radianti la cui tangente è il numero specificato.
atan2 Double atan2(value1:Double, value2:Double) atan2($event.value1.Double, $event.value2.Double) Restituisce l'angolo nei radianti il cui tangente è il quoziente di due numeri specificati.

Funzioni logaritmiche

Nome della funzione Firma Esempio Note
log Double log(value:Double) log($event.value.Double) Restituisce il logaritmo naturale di un numero specificato.
log2 Double log2(value:Double) log2($event.value.Double) Restituisce il logaritmo in base 2 di un numero specificato.
log10 Double log10(value:Double) log10($event.value.Double) Restituisce il logaritmo in base 10 del numero specificato.

Funzioni di data/ora

Nome della funzione Firma Esempio Note
monthOfYear Long monthOfYear(value:DateTime) monthOfYear($event.$ts) Restituisce il mese dell'anno come numerico per dateTime specificato.
dayOfMonth Long dayOfMonth(value:DateTime) dayOfMonth($event.$ts) Restituisce il giorno del mese come numerico per dateTime specificato.
hourOfDay Long hourOfDay(value:DateTime) hourOfDay($event.$ts) Restituisce l'ora del giorno come numerica per l'oggetto DateTime specificato.
utcNow DateTime utcNow() utcNow() Restituisce l'ora corrente in formato UTC.

Funzioni per i valori stringa

Nome della funzione Firma Esempio Note
toUpper String toUpper(value:String) toUpper($event.value.String) Restituisce la stringa di input convertita in maiuscolo.
toLower String toLower(value:String) toLower($event.value.String) Restituisce la stringa di input convertita in minuscola.
strLen Long strLen(value:String) strLen($event.value.String) Restituisce il numero di caratteri nell'argomento stringa.
strCat Long strCat(value1:String, value2:String) strCat($event.value1.String, $event.value2.String) Concatena due stringhe di input specificate.
subString String subString(value:String, startIndex:Double, length:Double) subString($event.value.String, 2.0, 4.0) Recupera una sottostringa da questa istanza.
trim String trim(value:String) trim($event.value.String) Restituisce una nuova stringa rimuovendo tutti i caratteri iniziali e finali dello spazio vuoto dalla stringa di input.
indexOf Long indexOf(value:String, subString:String) indexOf($event.value.String, 'abc') Restituisce la prima occorrenza della stringa specificata all'interno della stringa originale, in base all'indicizzazione zero.
replace String replace(value:String, searchString:String, replaceString:String) replace($event.value.String, 'abc', 'xyz') Restituisce una stringa in cui tutte le occorrenze della stringa di ricerca vengono sostituite con la stringa di sostituzione.

Altre funzioni

Nome della funzione Firma Esempio Note
coalesce String, Long, Double, Bool coalesce (value: String, Long, Double, Bool) coalesce(toLong($event.value.Double), $event.value.Long) Restituisce il primo valore non Null nell'elenco di argomenti. Accetta almeno 2 e al massimo 64 argomenti, ma devono essere tutti dello stesso tipo di dati.
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') Restituisce il secondo o terzo argomento a seconda che il predicato risolto su true (restituisce secondo argomento) o false (restituisce terzo argomento). Il predicato deve essere un'espressione booleana e i secondi e i terzi argomenti devono essere dello stesso tipo.

Vedi anche

  • Per altre informazioni sulla registrazione dell'applicazione e sul modello di programmazione di Azure Active Directory, vedere Azure Active Directory per gli sviluppatori.

  • Per informazioni sui parametri di richiesta e autenticazione, leggere Autenticazione e autorizzazione.

  • Gli strumenti che consentono di testare le richieste e le risposte HTTP includono:

  • Fiddler. Questo proxy di debug Web gratuito può intercettare le richieste REST, in modo da poter diagnosticare i messaggi di richiesta e risposta HTTP.

  • JWT.io. È possibile usare questo strumento per eseguire rapidamente il dump delle attestazioni nel token di connessione e quindi convalidarne il contenuto.

  • Postman. Si tratta di uno strumento gratuito di test di richiesta HTTP e risposta per il debug delle API REST.

  • Altre informazioni su Azure Time Series Insights Gen2 esaminando la documentazione di Gen2.