składnia wyrażeń szeregów czasowych Azure Time Series Insights Gen2
Omówienie
Time Series Expression (TSX) to język wyrażeń oparty na ciągach z silnym wpisywaniem. Język TSX służy do reprezentowania następujących jednostek w zapytaniu szeregów czasowych.
- Filtr
- Wartość
- Agregacja
Wyrażenia filtru
Wyrażenia filtru są używane do reprezentowania klauzul logicznych. W poniższej tabeli wymieniono przykłady filtrów:
TSX | Opis |
---|---|
$event.PointValue.Double = 3.14 |
true dla zdarzeń o podwójnej wartości PointValue równej 3.14 |
$event.PointValue > 3.14 AND $event.Status.String = 'Good' |
true dla zdarzeń o wartości PointValue większej niż 3.14 i stanu ciągu Good |
$event.$ts > dt'2018-11-01T02:03:45Z' |
true dla zdarzeń z sygnaturą czasową większą niż 2018-11-01T02:03:45Z |
$event.PointEval.Bool = true |
true dla zdarzeń o wartości PointValue równej true |
Wyrażenia wartości
Wyrażenia wartości są używane do przedstawiania wartości zmiennych liczbowych i kategorii. Wyrażenie wartości może być wyrażeniem odwołania do właściwości typu Double lub Long.
Przykład:
TSX | Uwagi |
---|---|
$event.Temperature.Double |
Ostatni token w dowolnym wyrażeniu wartości (w tym przypadku Double ) jest odczytywany jako typ właściwości. |
$event.Temperature |
Przyjmuje się, że typ ma wartość Podwójna dla właściwości dostępnej przez pojedynczy token. |
$event['Temperature-Celsius'] |
Użyj znaków [ i ] do ucieczki tokenów, które mają znaki specjalne. Ponadto użyj \ w nawiasach kwadratowych znaków ucieczki od następujących znaków: \ i ' . |
$event.Temperature.Celsius.Double |
Użyj polecenia . , aby uzyskać dostęp do właściwości zagnieżdżonych. Podczas uzyskiwania dostępu do właściwości zagnieżdżonych wymagany jest typ. |
$event.Temperature['Celsius-C'].Double |
Użyj poleceń [ i ] do ucieczki tokenów, które mają znaki specjalne podczas uzyskiwania dostępu do właściwości zagnieżdżonych. Ponadto użyj \ w nawiasach kwadratowych znaków ucieczki od następujących znaków: \ i ' . Podczas uzyskiwania dostępu do właściwości zagnieżdżonych wymagany jest typ. |
$event['Temperature']['Celsius'].Double |
Korzystanie z tokenów [ i ] na potrzeby ucieczki tokenów jest dozwolone na dowolnym tokenie. |
Rodzaj zmiennej liczbowej
Wynik wyrażenia wartości powinien mieć typ Double lub Long .
Rodzaj zmiennej agregacji
Wynik wyrażenia wartości może być dowolnego obsługiwanego typu.
Rodzaj zmiennej podzielonej na kategorie
Wynikiem wyrażenia wartości może być tylko ciąg lub typ Długi .
Wyrażenia agregacji
Wyrażenia agregujące służą do przedstawiania operacji agregacji, która ma być używana w zapytaniu. Wyrażenie agregacji powoduje pojedynczą wartość dla każdego interwału. Wyrażenia agregacji można stosować w zmiennych liczbowych i agregowanych.
Wyrażenia agregacji — rodzaj zmiennej liczbowej
Zmienne liczbowe powinny odwoływać się do $value
.
Oto obsługiwane funkcje agregujące.
Funkcja agregacji | Przykład | Opis |
---|---|---|
min |
min($value) |
Oblicza minimalną wartość interwału $value .
null Unika wartości. Nie można używać z interpolacją. |
max |
max($value) |
Oblicza maksymalną wartość interwału $value .
null Unika wartości. Nie można używać z interpolacją. |
sum |
sum($value) |
Oblicza sumę $value wszystkich zdarzeń w interwale.
null Unika wartości. Nie można używać z interpolacją. |
avg |
avg($value) |
Oblicza średnią $value dla wszystkich zdarzeń w interwale.
null Unika wartości. Nie można używać z interpolacją. |
first |
first($value) |
Zwraca $value pierwsze zdarzenie występujące w interwale według sygnatury czasowej zdarzenia.
Nie pozwala uniknąć null wartości. Nie można używać z interpolacją. |
last |
last($value) |
Zwraca $value ostatnie zdarzenie występujące w interwale według sygnatury czasowej zdarzenia.
Nie pozwala uniknąć null wartości. Nie można używać z interpolacją. |
median |
median($value) |
Zwraca $value średnie zdarzenie w interwale według sygnatury czasowej zdarzenia.
Nie pozwala uniknąć null wartości. Nie można używać z interpolacją. |
stdev |
stdev($value) |
Zwraca $value odchylenie standardowe zdarzeń w interwale.
null Unika wartości. Nie można używać z interpolacją. |
twsum |
twsum($value) |
Zwraca $value sumę ważoną czasu zdarzeń w interwale. Wymaga interpolacji. |
twavg |
twavg($value) |
Zwraca $value średnią ważoną czasu zdarzeń w interwale. Wymaga interpolacji. |
left |
left($value) |
Zwraca wartość z $value lewej krawędzi danego interwału. Wymaga interpolacji. |
right |
right($value) |
Zwraca wartość z $value prawej krawędzi danego interwału. Wymaga interpolacji. |
Wyrażenia agregacji — rodzaj zmiennej agregacji
Zmienne zagregowane powinny odwoływać się do właściwości w ładunku zdarzenia.
Oto obsługiwane funkcje agregujące.
Funkcja agregacji | Przykład | Opis |
---|---|---|
count |
count() |
Zwraca liczbę zdarzeń na interwał. |
min |
min($event.Temperature.Double) |
Oblicza minimalną wartość właściwości Temperature na interwał.
null Unika wartości. |
max |
max($event.Temperature.Long) |
Oblicza maksymalną wartość właściwości Temperature na interwał.
null Unika wartości. |
sum |
sum($event.Temperature.Double) |
Oblicza sumę właściwości Temperature dla wszystkich zdarzeń w interwale.
null Unika wartości. |
avg |
avg($event.Temperature.Long) |
Oblicza średnią właściwości Temperature dla wszystkich zdarzeń w interwale.
null Unika wartości. |
first |
first($event.Temperature.String) |
Zwraca wartość pierwszego wystąpienia (według sygnatury czasowej zdarzenia) właściwości Temperature ze wszystkich zdarzeń w interwale.
Nie pozwala uniknąć null wartości. |
last |
last($event.Temperature.String) |
Zwraca ostatnią wartość (według sygnatury czasowej zdarzenia) właściwości Temperature ze wszystkich zdarzeń w interwale.
Nie pozwala uniknąć null wartości. |
median |
median($event.Temperature.String) |
Zwraca wartość średniej wartości (według sygnatury czasowej zdarzenia) właściwości Temperature ze wszystkich zdarzeń w interwale.
Nie pozwala uniknąć null wartości. |
stdev |
stdev($event.Temperature.String) |
Oblicza odchylenie standardowe właściwości Temperature na interwał.
null Unika wartości. |
W przypadku rodzaju zmiennej agregującej te funkcje można połączyć w wyrażeniu agregacji. Na przykład: max($event.Temperature.Long) - min($event.Temperature.Long)
.
Składnia
W tej sekcji opisano podstawowe pojęcia składni i operatory zapytań, które są łączone z wyrażeniami formularzy.
Obsługiwane literały
Uwaga
Literały poniżej są używane do tworzenia wyrażeń. Zobacz artykuł Obsługiwane typy danych , aby uzyskać pełną listę typów danych.
Typ pierwotny | Literały |
---|---|
Bool |
TRUE , FALSE |
Data/godzina | dt'2016-10-08T03:22:55.3031599Z' |
Double |
1.23 , 1.0 |
Długi |
1 , 6 |
Ciąg | 'abc' |
przedział_czasu | ts'P1Y2M3DT4M5.67S' |
Null | NULL |
Obsługiwane typy operandów
Operacja | Obsługiwane typy | Uwagi |
---|---|---|
<, >, <=, >= | Double, Long, DateTime, TimeSpan | |
=, !=, <> | Double, Long, String, Bool, DateTime, TimeSpan, NULL | <> jest odpowiednikiem != |
+, -, *, / | Double, Long, DateTime, TimeSpan |
W przypadku wyrażeń porównania (<, >=<, =, >=, ! =) operandy mogą mieć wartość NULL lub mieć ten sam typ. W każdym wyrażeniu predykatu typy operandów po lewej stronie (LHS) i prawej stronie (RHS) są weryfikowane w celu dopasowania. Błędy występują, gdy typy LHS i RHS nie zgadzają się lub operacja nie jest dozwolona dla określonych typów.
Uwaga
Typ ciągu nie może zawierać wartości null w ciepłym magazynie:
- Porównanie ciągu względem wartości NULL i pustego ciągu ("") zachowuje się w taki sam sposób:
$event.p1.String = NULL
jest równoważne .$event.p1.String = ''
- Interfejs API może zwracać wartości NULL , nawet jeśli oryginalne zdarzenia zawierały puste ciągi.
W przyszłości to samo zachowanie będzie w zimnym sklepie.
Nie należy przyjmować zależności od wartości NULL w kolumnach Ciąg i traktować je tak samo jak puste ciągi.
- Zastosowano sprawdzanie typu:
- Każdy typ właściwości jest akceptowany
NULL
względem literału. - Typy LHS i RHS powinny być zgodne.
- Każdy typ właściwości jest akceptowany
Oto przykłady właściwości p1 i p2 typu String, właściwość p3 typu Double i zagnieżdżona właściwość przechowywana jako p4.p5 typu Double:
Filtr | Czy jest prawidłowy? | Uwagi |
---|---|---|
$event.p1.String = 'abc' |
Tak | |
$event.p1.String = $event.p2.String |
Tak | |
$event.p1.String = NULL |
Tak |
NULL pasuje do dowolnego typu po lewej stronie. |
$event.p3.Double = 'abc' |
Nie | Niezgodność. |
$event.p3.Double = $event.p1.String |
Nie | Niezgodność. |
$event.p1 = 'abc' |
Nie | Niezgodność. |
$event.p1 = 1 |
Nie | Niezgodność. |
$event.p1 = true |
Nie | Niezgodność. |
$event.p1 = NULL |
Tak |
p1 jest jedynym używanym tokenem. Interpretowane jako $event.p1.Double = NULL |
$event['p1'] != NULL |
Tak |
['p1'] jest jedynym używanym tokenem. Interpretowane jako $event['p1'].Double != NULL |
$event.p4.p5 = 0.0 |
Nie | Nieprawidłowa składnia odwołania do właściwości. Typ musi być określony na LHS porównania. |
$event.p4.p5.Double = 0.0 |
Tak |
Obsługiwane funkcje skalarne
Poniżej znajduje się lista funkcji skalarnych według kategorii:
Funkcje konwersji
Nazwa funkcji | Podpis | Przykład | Uwagi |
---|---|---|---|
toDouble |
Double toDouble (value: String, Double, Long) |
toDouble($event.value.Long) |
Konwertuje argumenty na double. |
toLong |
Long toLong (value: String, Double, Long) |
toLong($event.value.Double + 1.0) |
Konwertuje argumenty na long. |
toString |
String toString (value: String, Double, Long) |
toString($event.value.Double) |
Konwertuje argumenty na ciąg. |
Funkcje matematyczne
Nazwa funkcji | Podpis | Przykład | Uwagi |
---|---|---|---|
round |
Double round(value:Double) |
round($event.value.Double) |
Zaokrągla liczbę zmiennoprzecinkową o podwójnej precyzji do najbliższej liczby całkowitej. |
ceiling |
Double ceiling(value:Double) |
ceiling($event.value.Double) |
Zwraca najmniejszą wartość całkowitą, która jest większa lub równa liczbie zmiennoprzecinkowej o podwójnej precyzji. |
floor |
Double floor(value:Double) |
floor($event.value.Double) |
Zwraca największą wartość całkowitą mniejszą lub równą liczbie zmiennoprzecinkowej o podwójnej precyzji. |
Trygonometrycznych
Nazwa funkcji | Podpis | Przykład | Uwagi |
---|---|---|---|
cos |
Double cos(value:Double) |
cos($event.value.Double) |
Zwraca cosinus określonego kąta w radianach. |
sin |
Double sin(value:Double) |
sin($event.value.Double) |
Zwraca sinus określonego kąta w radianach. |
tan |
Double tan(value:Double) |
tan($event.value.Double) |
Zwraca tangens określonego kąta w radianach. |
acos |
Double acos(value:Double) |
acos($event.value.Double) |
Zwraca kąt w radianach, którego Cosine jest określoną liczbą. |
asin |
Double asin(value:Double) |
asin($event.value.Double) |
Zwraca kąt w radianach, którego sinus jest określoną liczbą. |
atan |
Double atan(value:Double) |
atan($event.value.Double) |
Zwraca kąt w radianach, którego tangens jest określoną liczbą. |
atan2 |
Double atan2(value1:Double, value2:Double) |
atan2($event.value1.Double, $event.value2.Double) |
Zwraca kąt w radianach, którego tangens jest ilorazem dwóch określonych liczb. |
Funkcje logarytmyczne
Nazwa funkcji | Podpis | Przykład | Uwagi |
---|---|---|---|
log |
Double log(value:Double) |
log($event.value.Double) |
Zwraca logarytm naturalny określonej liczby. |
log2 |
Double log2(value:Double) |
log2($event.value.Double) |
Zwraca logarytm podstawowy 2 określonej liczby. |
log10 |
Double log10(value:Double) |
log10($event.value.Double) |
Zwraca logarytm podstawowy 10 określonej liczby. |
Funkcje datetime
Nazwa funkcji | Podpis | Przykład | Uwagi |
---|---|---|---|
monthOfYear |
Long monthOfYear(value:DateTime) |
monthOfYear($event.$ts) |
Zwraca miesiąc roku jako wartość liczbową dla podanej wartości DateTime. |
dayOfMonth |
Long dayOfMonth(value:DateTime) |
dayOfMonth($event.$ts) |
Zwraca dzień miesiąca jako wartość liczbową dla podanej wartości DateTime. |
hourOfDay |
Long hourOfDay(value:DateTime) |
hourOfDay($event.$ts) |
Zwraca godzinę dnia jako wartość liczbową dla podanej wartości DateTime. |
utcNow |
DateTime utcNow() |
utcNow() |
Zwraca bieżący czas w formacie UTC. |
Funkcje ciągów
Nazwa funkcji | Podpis | Przykład | Uwagi |
---|---|---|---|
toUpper |
String toUpper(value:String) |
toUpper($event.value.String) |
Zwraca ciąg wejściowy przekonwertowany na wielkie litery. |
toLower |
String toLower(value:String) |
toLower($event.value.String) |
Zwraca ciąg wejściowy przekonwertowany na małe litery. |
strLen |
Long strLen(value:String) |
strLen($event.value.String) |
Zwraca liczbę znaków w argumencie ciągu. |
strCat |
Long strCat(value1:String, value2:String) |
strCat($event.value1.String, $event.value2.String) |
Łączy dwa określone ciągi wejściowe. |
subString |
String subString(value:String, startIndex:Double, length:Double) |
subString($event.value.String, 2.0, 4.0) |
Pobiera podciąg z tego wystąpienia. |
trim |
String trim(value:String) |
trim($event.value.String) |
Zwraca nowy ciąg, usuwając wszystkie wiodące i końcowe znaki odstępu z ciągu wejściowego. |
indexOf |
Long indexOf(value:String, subString:String) |
indexOf($event.value.String, 'abc') |
Zwraca pierwsze wystąpienie określonego ciągu w oryginalnym ciągu na podstawie indeksowania zerowego. |
replace |
String replace(value:String, searchString:String, replaceString:String) |
replace($event.value.String, 'abc', 'xyz') |
Zwraca ciąg, w którym wszystkie wystąpienia ciągu wyszukiwania są zastępowane ciągiem zastępczym. |
Inne funkcje
Nazwa funkcji | Podpis | Przykład | Uwagi |
---|---|---|---|
coalesce |
String, Long, Double, Bool coalesce (value: String, Long, Double, Bool) |
coalesce(toLong($event.value.Double), $event.value.Long) |
Zwraca pierwszą wartość inną niż null na liście argumentów. Akceptuje co najmniej 2 i maksymalnie 64 argumenty, ale wszystkie muszą być tego samego typu danych. |
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') |
Zwraca drugi lub trzeci argument w zależności od tego, czy predykat został rozpoznany na wartość true (zwraca drugi argument) lub false (zwraca trzeci argument). Predykat musi być wyrażeniem logicznym, a drugi i trzeci argument musi być tego samego typu. |
Zobacz też
Aby uzyskać więcej informacji na temat rejestracji aplikacji i modelu programowania usługi Azure Active Directory, zobacz Azure Active Directory dla deweloperów.
Aby dowiedzieć się więcej o parametrach żądania i uwierzytelniania, przeczytaj Uwierzytelnianie i autoryzacja.
Narzędzia, które ułatwiają testowanie żądań i odpowiedzi HTTP, obejmują:
Fiddler. Ten bezpłatny internetowy serwer proxy debugowania może przechwytywać żądania REST, dzięki czemu można zdiagnozować żądania HTTP i komunikaty odpowiedzi.
JWT.io. Za pomocą tego narzędzia można szybko zrzucić oświadczenia w tokenie elementu nośnego, a następnie zweryfikować ich zawartość.
Postman. Jest to bezpłatne narzędzie do testowania żądań HTTP i odpowiedzi na potrzeby debugowania interfejsów API REST.
Dowiedz się więcej o usłudze Azure Time Series Insights Gen2, przeglądając dokumentację usługi Gen2.