Syntaxe výrazu časové řady Azure Time Series Insights Gen2
Přehled
Time Series Expression (TSX) je jazyk výrazů založený na řetězcích se silným psaním. TSX se používá k reprezentaci následujících entit v dotazu časové řady.
- Filtrovat
- Hodnota
- Agregace
Výrazy filtru
Výrazy filtru se používají k reprezentaci logických klauzulí. Následující tabulka uvádí příklady filtrů:
TSX | Description |
---|---|
$event.PointValue.Double = 3.14 |
true pro události s dvojitou hodnotou PointValue rovnou 3.14 |
$event.PointValue > 3.14 AND $event.Status.String = 'Good' |
true pro události s hodnotou PointValue větší než 3.14 a stavem řetězce Good |
$event.$ts > dt'2018-11-01T02:03:45Z' |
true pro události s časovým razítkem větším než 2018-11-01T02:03:45Z |
$event.PointEval.Bool = true |
true pro události, které mají hodnotu PointValue rovnou true |
Výrazy hodnot
Výrazy hodnot se používají k znázornění hodnoty číselných proměnných a proměnných kategorií. Výrazem hodnoty může být výraz odkazu na vlastnost typu Double nebo Long.
Příklad:
TSX | Poznámky |
---|---|
$event.Temperature.Double |
Poslední token v libovolné hodnotě výrazu (v tomto případě Double ) se přečte jako Typ vlastnosti . |
$event.Temperature |
U vlastnosti, ke které přistupuje jeden token, se předpokládá typ Double . |
$event['Temperature-Celsius'] |
K uvozování tokenů se speciálními znaky použijte [ a ] . Kromě toho použijte \ v hranatých závorkách následující znaky: \ a ' . |
$event.Temperature.Celsius.Double |
Slouží . k přístupu k vnořeným vlastnostem. Při přístupu k vnořeným vlastnostem se vyžaduje Typ. |
$event.Temperature['Celsius-C'].Double |
K uvozování tokenů, které mají speciální znaky při přístupu k vnořeným vlastnostem, použijte [ a ] . Kromě toho použijte \ v hranatých závorkách následující znaky: \ a ' . Při přístupu k vnořeným vlastnostem se vyžaduje Typ. |
$event['Temperature']['Celsius'].Double |
[ Použití a ] pro uvozování tokenů je povoleno u jakéhokoli tokenu. |
Druh číselné proměnné
Výsledek výrazu hodnoty by měl být typu Double nebo Long .
Druh agregační proměnné
Výsledek výrazu hodnoty může být libovolného podporovaného typu.
Druh proměnné v kategoriích
Výsledek výrazu hodnoty může být pouze typ String nebo Long .
Výrazy pro agregaci
Agregační výrazy slouží k znázornění agregační operace, která se má v dotazu použít. Výsledkem agregačního výrazu je jedna hodnota pro každý interval. Agregační výrazy lze použít u číselných a agregačních proměnných.
Agregační výrazy – druh číselné proměnné
Číselné proměnné by měly odkazovat na $value
.
Tady jsou podporované agregační funkce.
Agregační funkce | Příklad | Description |
---|---|---|
min |
min($value) |
Vypočítá minimum intervalu $value . Vyhýbá se hodnotám null . Nelze použít s interpolací. |
max |
max($value) |
Vypočítá maximální počet intervalů $value . Vyhýbá se hodnotám null . Nelze použít s interpolací. |
sum |
sum($value) |
Vypočítá součet $value všech událostí v intervalu. Vyhýbá se hodnotám null . Nelze použít s interpolací. |
avg |
avg($value) |
Vypočítá průměr $value všech událostí v intervalu. Vyhýbá se hodnotám null . Nelze použít s interpolací. |
first |
first($value) |
Vrátí $value první výskyt události v intervalu podle časového razítka události. Nevyhýbá se null hodnotám. Nelze použít s interpolací. |
last |
last($value) |
Vrátí poslední $value výskyt události v intervalu podle časového razítka události. Nevyhýbá se null hodnotám. Nelze použít s interpolací. |
median |
median($value) |
Vrátí $value prostřední událost v intervalu podle časového razítka události. Nevyhýbá se null hodnotám. Nelze použít s interpolací. |
stdev |
stdev($value) |
Vrátí $value směrodatnou odchylku událostí v intervalu. Vyhýbá se hodnotám null . Nelze použít s interpolací. |
twsum |
twsum($value) |
Vrátí $value časově vážený součet událostí v intervalu. Vyžaduje interpolaci. |
twavg |
twavg($value) |
Vrátí $value časově vážený průměr událostí v intervalu. Vyžaduje interpolaci. |
left |
left($value) |
Vrátí hodnotu $value na levém okraji daného intervalu. Vyžaduje interpolaci. |
right |
right($value) |
Vrátí hodnotu $value na pravém okraji daného intervalu. Vyžaduje interpolaci. |
Agregační výrazy – druh agregační proměnné
Agregované proměnné by měly odkazovat na vlastnost v datové části události.
Tady jsou podporované agregační funkce.
Agregační funkce | Příklad | Description |
---|---|---|
count |
count() |
Vrátí počet událostí v intervalu. |
min |
min($event.Temperature.Double) |
Vypočítá minimum vlastnosti Temperature za interval. Vyhýbá se hodnotám null . |
max |
max($event.Temperature.Long) |
Vypočítá maximální hodnotu vlastnosti Temperature na interval. Vyhýbá se hodnotám null . |
sum |
sum($event.Temperature.Double) |
Vypočítá součet vlastnosti Temperature (Teplota ) pro všechny události v intervalu. Vyhýbá se hodnotám null . |
avg |
avg($event.Temperature.Long) |
Vypočítá průměr vlastnosti Temperature za všechny události v intervalu. Vyhýbá se hodnotám null . |
first |
first($event.Temperature.String) |
Vrátí první výskyt (podle časového razítka události) hodnotu vlastnosti Temperature ze všech událostí v intervalu. Nevyhýbá se null hodnotám. |
last |
last($event.Temperature.String) |
Vrátí hodnotu posledního výskytu (podle časového razítka události) vlastnosti Temperature ze všech událostí v intervalu. Nevyhýbá se null hodnotám. |
median |
median($event.Temperature.String) |
Vrátí hodnotu prostředního výskytu (podle časového razítka události) vlastnosti Temperature ze všech událostí v intervalu. Nevyhýbá se null hodnotám. |
stdev |
stdev($event.Temperature.String) |
Vypočítá směrodatnou odchylku vlastnosti Temperature podle intervalu. Vyhýbá se hodnotám null . |
U typu agregační proměnné je možné tyto funkce kombinovat v agregačním výrazu. Příklad: max($event.Temperature.Long) - min($event.Temperature.Long)
.
Syntax
Tato část popisuje základní koncepty syntaxe a operátory dotazů, které jsou zřetězeny do výrazů formulářů.
Podporované literály
Poznámka
Následující literály se používají k formování výrazů. Úplný seznam datových typů najdete v článku Podporované datové typy .
Primitivní typ | Literály |
---|---|
Bool |
TRUE , FALSE |
Datum a čas | dt'2016-10-08T03:22:55.3031599Z' |
dvojité |
1.23 , 1.0 |
Dlouhé |
1 , 6 |
Řetězec | 'abc' |
TimeSpan | ts'P1Y2M3DT4M5.67S' |
Null | NULL |
Podporované typy operandů
Operace | Podporované typy | Poznámky |
---|---|---|
<, >, <=, >= | Double, Long, DateTime, TimeSpan | |
=, !=, <> | Double, Long, String, Bool, DateTime, TimeSpan, NULL | <> je ekvivalentem != |
+, -, *, / | Double, Long, DateTime, TimeSpan |
U porovnávacích výrazů (<, >, =<, >=, =!=) můžou být operandy null nebo stejného typu. V každém výrazu predikátu se ověří shoda typů operandů na levé straně (LHS) a pravé strany (RHS). K chybám dochází v případě, že se typy LHS a RHS neshodují nebo u konkrétních typů není povolená operace.
Poznámka
Typ řetězce v teplém úložišti nemůže být null:
- Porovnání řetězce s hodnotou NULL a prázdný řetězec ('') se chová stejně:
$event.p1.String = NULL
je ekvivalentní hodnotě$event.p1.String = ''
. - Rozhraní API může vracet hodnoty NULL i v případě, že původní události obsahovaly prázdné řetězce.
V budoucnu se stejné chování bude chovat i v úložišti cold store.
Nespolézejte se na hodnoty NULL ve sloupcích řetězců a zacházejte s nimi stejně jako s prázdnými řetězci.
- Použije se kontrola typu:
- Proti literálu
NULL
se akceptuje libovolný typ vlastnosti. - Typy LHS a RHS by se měly shodovat.
- Proti literálu
Tady jsou příklady vlastností p1 a p2 typu String, vlastnost p3 typu Double a vnořená vlastnost uložená jako p4.p5 typu Double:
Filtrovat | Je platný? | Poznámky |
---|---|---|
$event.p1.String = 'abc' |
Yes | |
$event.p1.String = $event.p2.String |
Ano | |
$event.p1.String = NULL |
Ano |
NULL odpovídá libovolnému typu na levé straně. |
$event.p3.Double = 'abc' |
No | Neshoda typů |
$event.p3.Double = $event.p1.String |
Ne | Neshoda typů |
$event.p1 = 'abc' |
Ne | Neshoda typů |
$event.p1 = 1 |
Ne | Neshoda typů |
$event.p1 = true |
Ne | Neshoda typů |
$event.p1 = NULL |
Yes |
p1 je jediný použitý token. Interpretováno jako $event.p1.Double = NULL |
$event['p1'] != NULL |
Yes |
['p1'] je jediný použitý token. Interpretováno jako $event['p1'].Double != NULL |
$event.p4.p5 = 0.0 |
No | Neplatná syntaxe odkazu na vlastnost Typ musí být zadán v LHS porovnání. |
$event.p4.p5.Double = 0.0 |
Yes |
Podporované skalární funkce
Níže je seznam skalárních funkcí podle kategorií:
Převodní funkce
Název funkce | Podpis | Příklad | Poznámky |
---|---|---|---|
toDouble |
Double toDouble (value: String, Double, Long) |
toDouble($event.value.Long) |
Převede argumenty na double. |
toLong |
Long toLong (value: String, Double, Long) |
toLong($event.value.Double + 1.0) |
Převede argumenty na long. |
toString |
String toString (value: String, Double, Long) |
toString($event.value.Double) |
Převede argumenty na řetězec. |
Matematické funkce
Název funkce | Podpis | Příklad | Poznámky |
---|---|---|---|
round |
Double round(value:Double) |
round($event.value.Double) |
Zaokrouhlí číslo s plovoucí dvěma přesnostmi na nejbližší integrál. |
ceiling |
Double ceiling(value:Double) |
ceiling($event.value.Double) |
Vrátí nejmenší celočíselnou hodnotu, která je větší než nebo rovna číslu s plovoucí desetinou čárkou s dvojitou přesností. |
floor |
Double floor(value:Double) |
floor($event.value.Double) |
Vrátí největší celočíselnou hodnotu, která je menší než nebo rovna číslu s plovoucí desetinou čárkou s dvojitou přesností. |
Trigonometrické funkce
Název funkce | Podpis | Příklad | Poznámky |
---|---|---|---|
cos |
Double cos(value:Double) |
cos($event.value.Double) |
Vrátí kosinus zadaného úhlu v radiánech. |
sin |
Double sin(value:Double) |
sin($event.value.Double) |
Vrátí sinus zadaného úhlu v radiánech. |
tan |
Double tan(value:Double) |
tan($event.value.Double) |
Vrátí tangens zadaného úhlu v radiánech. |
acos |
Double acos(value:Double) |
acos($event.value.Double) |
Vrátí úhel v radiánech, jejichž kosinus je zadané číslo. |
asin |
Double asin(value:Double) |
asin($event.value.Double) |
Vrátí úhel v radiánech, jejichž sinus je zadané číslo. |
atan |
Double atan(value:Double) |
atan($event.value.Double) |
Vrátí úhel v radiánech, jejichž tangens je zadané číslo. |
atan2 |
Double atan2(value1:Double, value2:Double) |
atan2($event.value1.Double, $event.value2.Double) |
Vrátí úhel v radiánech, jejichž tangens je podílem dvou zadaných čísel. |
Logaritmické funkce
Název funkce | Podpis | Příklad | Poznámky |
---|---|---|---|
log |
Double log(value:Double) |
log($event.value.Double) |
Vrátí přirozený logaritmus zadaného čísla. |
log2 |
Double log2(value:Double) |
log2($event.value.Double) |
Vrátí logaritmus 2. základu zadaného čísla. |
log10 |
Double log10(value:Double) |
log10($event.value.Double) |
Vrátí dekadický logaritmus zadaného čísla. |
Funkce data a času
Název funkce | Podpis | Příklad | Poznámky |
---|---|---|---|
monthOfYear |
Long monthOfYear(value:DateTime) |
monthOfYear($event.$ts) |
Vrátí měsíc v roce jako číselnou hodnotu pro zadané datum a čas. |
dayOfMonth |
Long dayOfMonth(value:DateTime) |
dayOfMonth($event.$ts) |
Vrátí den v měsíci jako číselnou hodnotu pro zadané datum a čas. |
hourOfDay |
Long hourOfDay(value:DateTime) |
hourOfDay($event.$ts) |
Vrátí hodinu dne jako číselnou hodnotu pro zadané datum a čas. |
utcNow |
DateTime utcNow() |
utcNow() |
Vrátí aktuální čas ve formátu UTC. |
Funkce řetězců
Název funkce | Podpis | Příklad | Poznámky |
---|---|---|---|
toUpper |
String toUpper(value:String) |
toUpper($event.value.String) |
Vrátí vstupní řetězec převedený na velká písmena. |
toLower |
String toLower(value:String) |
toLower($event.value.String) |
Vrátí vstupní řetězec převedený na malá písmena. |
strLen |
Long strLen(value:String) |
strLen($event.value.String) |
Vrátí počet znaků v řetězcovém argumentu. |
strCat |
Long strCat(value1:String, value2:String) |
strCat($event.value1.String, $event.value2.String) |
Zřetězí dva zadané vstupní řetězce. |
subString |
String subString(value:String, startIndex:Double, length:Double) |
subString($event.value.String, 2.0, 4.0) |
Načte podřetězec z této instance. |
trim |
String trim(value:String) |
trim($event.value.String) |
Vrátí nový řetězec odebráním všech počátečních a koncových prázdných znaků ze vstupního řetězce. |
indexOf |
Long indexOf(value:String, subString:String) |
indexOf($event.value.String, 'abc') |
Vrátí první výskyt zadaného řetězce v původním řetězci na základě nulového indexování. |
replace |
String replace(value:String, searchString:String, replaceString:String) |
replace($event.value.String, 'abc', 'xyz') |
Vrátí řetězec, ve kterém jsou všechny výskyty hledaného řetězce nahrazeny náhradním řetězcem. |
Další funkce
Název funkce | Podpis | Příklad | Poznámky |
---|---|---|---|
coalesce |
String, Long, Double, Bool coalesce (value: String, Long, Double, Bool) |
coalesce(toLong($event.value.Double), $event.value.Long) |
Vrátí první hodnotu v seznamu argumentů, která není null. Přijímá minimálně 2 a maximálně 64 argumentů, ale všechny musí mít stejný datový typ. |
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') |
Vrátí druhý nebo třetí argument v závislosti na tom, jestli se predikát přeložil na true (vrátí druhý argument) nebo nepravda (vrátí třetí argument). Predikát musí být logický výraz a druhý a třetí argument musí být stejného typu. |
Viz také
Další informace o registraci aplikací a programovacím modelu Azure Active Directory najdete v tématu Azure Active Directory pro vývojáře.
Další informace o parametrech požadavků a ověřování najdete v tématu Ověřování a autorizace.
Mezi nástroje, které pomáhají s testováním požadavků a odpovědí HTTP, patří:
Fiddler. Tento bezplatný proxy server pro ladění webu může zachycovat vaše požadavky REST, abyste mohli diagnostikovat zprávy požadavků a odpovědí HTTP.
JWT.io. Tento nástroj můžete použít k rychlému výpisu deklarací identity v nosném tokenu a následnému ověření jejich obsahu.
Postman. Toto je bezplatný nástroj pro testování požadavků a odpovědí HTTP pro ladění rozhraní REST API.
Další informace o Azure Time Series Insights Gen2 najdete v dokumentaci k Gen2.