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.
- Qualsiasi tipo di proprietà viene accettato in base a un
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' |
Sì | |
$event.p1.String = $event.p2.String |
Sì | |
$event.p1.String = NULL |
Sì |
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 |
Sì |
p1 è l'unico token usato. Interpretato come $event.p1.Double = NULL |
$event['p1'] != NULL |
Sì |
['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 |
Sì |
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.