Azure Time Series Insights Gen2 Time Series Expression 構文

概要

Time Series Expression (TSX) は、厳密な型指定を持つ文字列ベースの式言語です。 TSX は、 時系列クエリで次のエンティティを表すために使用されます。

  • Assert
  • 集計

フィルター式

フィルター式は、 ブール句を表すために使用されます。 次の表に、フィルターの例を示します。

Tsx Description
$event.PointValue.Double = 3.14 truedouble PointValue が に等しいイベントの場合3.14
$event.PointValue > 3.14 AND $event.Status.String = 'Good' truePointValue が より3.14大きく、文字列状態のイベントの場合Good
$event.$ts > dt'2018-11-01T02:03:45Z' true タイム スタンプが より大きいイベントの場合 2018-11-01T02:03:45Z
$event.PointEval.Bool = true truePointValue が と等しいイベントの場合true

値式

値式は 、数値変数とカテゴリ変数の値を示すために使用されます。 値式には、 Double 型または Long 型のプロパティ参照式を指定できます。

次に例を示します。

Tsx Notes
$event.Temperature.Double 任意の値式 (この場合 Double) の最後のトークンは、 プロパティの Type として読み取られます。
$event.Temperature 型は、1 つのトークンによってアクセスされるプロパティに対して Double であると見なされます。
$event['Temperature-Celsius'] 特殊文字を持つトークンをエスケープする場合は、 と ] を使用[します。 さらに、角かっこ内で と を使用 \ して、次の文字を \'エスケープします。
$event.Temperature.Celsius.Double 入れ子になったプロパティにアクセスするには、 を使用 . します。 入れ子になったプロパティにアクセスする場合は、Type が 必要です。
$event.Temperature['Celsius-C'].Double 入れ子になったプロパティにアクセスするときに特殊文字を持つトークンをエスケープする場合は、 と ] を使用[します。 さらに、角かっこ内で と を使用 \ して、次の文字を \'エスケープします。 入れ子になったプロパティにアクセスする場合は、Type が 必要です。
$event['Temperature']['Celsius'].Double トークンの [ エスケープに および ] を使用することは、任意のトークンで許可されます。

数値変数の種類

値式の結果は、 Double 型または Long 型である必要があります。

集計変数の種類

値式の結果には、サポートされている任意の型を指定できます。

カテゴリ変数の種類

値式の結果には、 String 型または Long 型のみを指定できます。

集計式

集計式 は、クエリで使用される集計操作を示すために使用されます。 集計式では、間隔ごとに 1 つの値が得られます。 集計式は、数値変数と集計変数に適用できます。

集計式 - 数値変数の種類

数値変数は を参照する $value必要があります。

サポートされている集計関数を次に示します。

集計関数 説明
min min($value) 間隔あたりの最小値を $value 計算します。 値を回避します null 。 補間では使用できません。
max max($value) 間隔あたりの最大値を $value 計算します。 値を回避します null 。 補間では使用できません。
sum sum($value) 間隔内のすべてのイベントの $value 合計を計算します。 値を回避します null 。 補間では使用できません。
avg avg($value) 間隔内のすべてのイベントの $value 平均を計算します。 値を回避します null 。 補間では使用できません。
first first($value) $value間隔内の最初に発生したイベントをイベント タイム スタンプで返します。 値 回避 null しません。 補間では使用できません。
last last($value) $value間隔内で最後に発生したイベントをイベント タイム スタンプで返します。 値 回避 null しません。 補間では使用できません。
median median($value) $value間隔内の中間イベントをイベント タイム スタンプで返します。 値 回避 null しません。 補間では使用できません。
stdev stdev($value) $value間隔内のイベントの標準偏差を返します。 値を回避します null 。 補間では使用できません。
twsum twsum($value) $value間隔内のイベントの時間加重合計を返します。 補間が必要です。
twavg twavg($value) $value間隔内のイベントの時間加重平均を返します。 補間が必要です。
left left($value) 指定した $value 間隔の左端にある を返します。 補間が必要です。
right right($value) 指定した $value 間隔の右端にある を返します。 補間が必要です。

集計式 - 集計変数の種類

集計変数 は、イベント ペイロードの Property を参照する必要があります。

サポートされている集計関数を次に示します。

集計関数 説明
count count() 間隔あたりのイベント数を返します。
min min($event.Temperature.Double) 間隔 あたりのプロパティ Temperature の最小値を計算します。 値を回避します null
max max($event.Temperature.Long) 間隔 ごとのプロパティ Temperature の最大値を計算します。 値を回避します null
sum sum($event.Temperature.Double) 間隔内のすべてのイベントに対する Temperature プロパティの合計を計算します。 値を回避します null
avg avg($event.Temperature.Long) 間隔内のすべてのイベントに対する Temperature プロパティの平均を計算します。 値を回避します null
first first($event.Temperature.String) 間隔内のすべてのイベントから、プロパティ Temperature の最初に発生する (イベント タイム スタンプによって) 値を返します。 値 回避 null しません。
last last($event.Temperature.String) 間隔内のすべてのイベントから、プロパティ Temperature の最後に発生した値 (イベント タイム スタンプ別) を返します。 値 回避 null しません。
median median($event.Temperature.String) 間隔内のすべてのイベントから、プロパティ Temperature の中間発生 (イベント タイム スタンプ別) の値を返します。 値 回避 null しません。
stdev stdev($event.Temperature.String) 間隔ごとの 温度 プロパティの標準偏差を計算します。 値を回避します null

集計変数の種類の場合、これらの関数は集計式で組み合わせることができます。 (例: max($event.Temperature.Long) - min($event.Temperature.Long))。

構文

このセクションでは、フォーム式に連結される主要な構文概念とクエリ演算子について説明します。

サポートされているリテラル

注意

以下のリテラルは式を形成するために使用されます。データ型の完全な一覧については、 サポートされているデータ型 に関する記事を参照してください。

プリミティブ型 リテラル
Bool TRUE, FALSE
DateTime dt'2016-10-08T03:22:55.3031599Z'
Double 1.23, 1.0
Long 1, 6
String 'abc'
TimeSpan ts'P1Y2M3DT4M5.67S'
Null NULL

サポートされているオペランド型

操作 サポートされている型 Notes
<><> DoubleLongDateTimeTimeSpan
==<> DoubleLongStringBoolDateTimeTimeSpanNULL <>!= に相当します。
+, -, *, / DoubleLongDateTimeTimeSpan

比較式 (<><=、=>、!=) の場合、=オペランドは NULL または同じ型にすることができます。 各述語式では、左側 (LHS) オペランドと右側 (RHS) オペランドの型が一致するように検証されます。 エラーは、LHS と RHS の種類が一致しない場合、または特定の種類で操作が許可されていない場合に発生します。

注意

ウォーム ストアでは、文字列型は null 許容ではありません。

  • NULL および空の文字列 ('') に対する String の比較は、同じように動作します。 $event.p1.String = NULL は と$event.p1.String = ''同じです。
  • 元のイベントに空の文字列が含まれている場合でも、API は NULL 値を 返す場合があります。

将来的には、コールド ストアでも同じ動作が行われます。

String 列の NULL 値に依存せず、空の文字列と同じように扱います。

  • 型チェックが適用されます。
    • 任意のプロパティ型は、リテラルに NULL 対して受け入れられます。
    • LHS と RHS の種類は一致する必要があります。

String 型のプロパティ p1p2、Double 型のプロパティ p3、および Double 型の p4.p5 として格納されている入れ子になったプロパティの例を次に示します。

Assert 有効ですか? メモ
$event.p1.String = 'abc' はい
$event.p1.String = $event.p2.String はい
$event.p1.String = NULL はい NULL は、任意の左側の型と一致します。
$event.p3.Double = 'abc' いいえ 型が一致しません。
$event.p3.Double = $event.p1.String いいえ 型が一致しません。
$event.p1 = 'abc' いいえ 型が一致しません。
$event.p1 = 1 いいえ 型が一致しません。
$event.p1 = true いいえ 型が一致しません。
$event.p1 = NULL はい p1 は、使用される唯一のトークンです。 として解釈される $event.p1.Double = NULL
$event['p1'] != NULL はい ['p1'] は、使用される唯一のトークンです。 として解釈される $event['p1'].Double != NULL
$event.p4.p5 = 0.0 いいえ プロパティ参照構文が無効です。 比較の LHS で型を指定する必要があります。
$event.p4.p5.Double = 0.0 はい

サポートされているスカラー関数

カテゴリ別のスカラー関数の一覧を次に示します。

変換関数

関数名 署名 Notes
toDouble Double toDouble (value: String, Double, Long) toDouble($event.value.Long) 引数を Double に変換します。
toLong Long toLong (value: String, Double, Long) toLong($event.value.Double + 1.0) 引数を Long に変換します。
toString String toString (value: String, Double, Long) toString($event.value.Double) 引数を String に変換 します

算術関数

関数名 署名 Notes
round Double round(value:Double) round($event.value.Double) 倍精度浮動小数点数を最も近い整数に丸めます。
ceiling Double ceiling(value:Double) ceiling($event.value.Double) 倍精度浮動小数点数以上の最小値を返します。
floor Double floor(value:Double) floor($event.value.Double) 倍精度浮動小数点数以下の最大値を返します。

三角関数

関数名 署名 Notes
cos Double cos(value:Double) cos($event.value.Double) 指定した角度のコサインをラジアン単位で返します。
sin Double sin(value:Double) sin($event.value.Double) 指定した角度のサインをラジアン単位で返します。
tan Double tan(value:Double) tan($event.value.Double) 指定した角度のタンジェントをラジアン単位で返します。
acos Double acos(value:Double) acos($event.value.Double) コサインが指定した数値であるラジアン単位の角度を返します。
asin Double asin(value:Double) asin($event.value.Double) サインが指定した数値である角度をラジアン単位で返します。
atan Double atan(value:Double) atan($event.value.Double) タンジェントが指定した数値である角度をラジアン単位で返します。
atan2 Double atan2(value1:Double, value2:Double) atan2($event.value1.Double, $event.value2.Double) タンジェントが指定された 2 つの数値の商である角度をラジアンで返します。

対数関数

関数名 署名 Notes
log Double log(value:Double) log($event.value.Double) 指定した数値の自然対数を返します。
log2 Double log2(value:Double) log2($event.value.Double) 指定した数の底 2 の対数を返します。
log10 Double log10(value:Double) log10($event.value.Double) 指定した数の底 10 の対数を返します。

DateTime 関数

関数名 署名 Notes
monthOfYear Long monthOfYear(value:DateTime) monthOfYear($event.$ts) 指定された DateTime の数値として年の月を返します。
dayOfMonth Long dayOfMonth(value:DateTime) dayOfMonth($event.$ts) 指定された DateTime の数値として月の日を返します。
hourOfDay Long hourOfDay(value:DateTime) hourOfDay($event.$ts) 指定された DateTime の数値として、1 日の時間を返します。
utcNow DateTime utcNow() utcNow() 現在の時刻を UTC 形式で返します。

文字列関数

関数名 署名 Notes
toUpper String toUpper(value:String) toUpper($event.value.String) 大文字に変換された入力文字列を返します。
toLower String toLower(value:String) toLower($event.value.String) 小文字に変換された入力文字列を返します。
strLen Long strLen(value:String) strLen($event.value.String) 文字列引数の文字数を返します。
strCat Long strCat(value1:String, value2:String) strCat($event.value1.String, $event.value2.String) 指定した 2 つの入力文字列を連結します。
subString String subString(value:String, startIndex:Double, length:Double) subString($event.value.String, 2.0, 4.0) インスタンスから部分文字列を取得します。
trim String trim(value:String) trim($event.value.String) 入力文字列から先頭と末尾のすべての空白文字を削除して、新しい文字列を返します。
indexOf Long indexOf(value:String, subString:String) indexOf($event.value.String, 'abc') 0 個のインデックス作成に基づいて、元の文字列内で指定された文字列の最初の出現箇所を返します。
replace String replace(value:String, searchString:String, replaceString:String) replace($event.value.String, 'abc', 'xyz') 検索文字列のすべての出現箇所が置換文字列に置き換えられる文字列を返します。

その他の関数

関数名 署名 Notes
coalesce String, Long, Double, Bool coalesce (value: String, Long, Double, Bool) coalesce(toLong($event.value.Double), $event.value.Long) 引数リストの最初の null 以外の値を返します。 少なくとも 2 個の引数と最大 64 個の引数を受け入れますが、すべて同じデータ型である必要があります。
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') 述語が true (2 番目の引数を返す) または false (3 番目の引数を返す) に解決されたかどうかに応じて、2 番目または 3 番目の引数を返します。 述語はブール式である必要があり、2 番目と 3 番目の引数は同じ型である必要があります。

関連項目

  • アプリケーションの登録と Azure Active Directory プログラミング モデルの詳細については、「 開発者向け Azure Active Directory」を参照してください。

  • 要求パラメーターと認証パラメーターの詳細については、「 認証と承認」を参照してください

  • HTTP 要求と応答のテストに役立つツールは次のとおりです。

  • Fiddler。 この無料の Web デバッグ プロキシでは、REST 要求をインターセプトできるため、HTTP 要求と応答メッセージを診断できます。

  • JWT.io。 このツールを使用すると、ベアラー トークンに要求をすばやくダンプし、その内容を検証できます。

  • Postman。 これは、REST API をデバッグするための無料の HTTP 要求および応答テスト ツールです。

  • Azure Time Series Insights Gen2 の詳細については、Gen2 のドキュメントを参照してください