次の方法で共有


Azure Stream Analytics と Eventstream クエリ言語リファレンス

Azure Stream Analytics には、イベントのストリームに対して変換と計算を実行するための SQL クエリ言語が用意されています。

T-SQL 構文のサブセット

このドキュメントでは、Stream Analytics クエリ言語の構文、使用法、ベスト プラクティスについて説明します。 このドキュメントで使用されるすべての例は、以下で説明するように料金所のシナリオに依存します。

Stream Analytics クエリ言語は、ストリーミング計算を実行するための標準的な T-SQL 構文のサブセットです。

料金所ブースのシナリオ

有料駅は一般的な現象であり、世界中の多くの高速道路、橋、トンネルで遭遇します。 各有料所には複数の有料ブースがあります。これは手動の場合があります。つまり、料金所への料金の支払いを停止するか、または自動で行います。ブースの上に配置されたセンサーは、料金所ブースを通過するときに車両のフロントガラスに貼り付けられた RFID カードをスキャンします。 これらの有料ステーションを通る車両の通過を、興味深い操作を実行できるイベント ストリームとして簡単に視覚化できます。

到着時間とアプリケーション時間

Azure Stream Analytics などの任意のテンポラル システムでは、時間の進行状況を理解することが不可欠です。 システムを通過するすべてのイベントには、 System.Timestamp()を介してアクセスできるタイムスタンプが付いています。 つまり、システム内のすべてのイベントは、ある時点を表しています。 このタイムスタンプは、ユーザーがクエリで指定できるアプリケーション時刻と、到着時刻に基づいてシステムが割り当てることができる時刻のいずれかです。 到着時刻は、入力ソースに基づいて異なる意味を持ちます。 Azure Event Hub からのイベントの場合、到着時刻はイベント ハブによって指定されたタイムスタンプです。BLOB ストレージの場合は、BLOB の最終変更時刻です。 タイムスタンプは、データのキャプチャまたは分析に関連する時点です。 ユーザーがアプリケーション時刻を使用する場合は、 TIMESTAMP BY キーワードを使用して行うことができます。 上記のシナリオでは、有料ブースへの車両のエントリです。 データの受信ストリームで "タイムスタンプ" を識別することが重要です。キャプチャされた時刻によってイベントの発生も確認されるようにする必要があります。 たとえば、キャッシュ カウンターを監視していて、請求された顧客の数をカウントする場合、イベント タイムスタンプは"請求が生成された" 時間ではなく "支払いに成功しました" であることが理想的です。

TIMESTAMP BY

Azure Stream Analytics では、すべてのイベントに明確に定義されたタイムスタンプがあります。 ユーザーがアプリケーション時間を使用する場合は、TIMESTAMP BY キーワードを使用してペイロード内の列を指定できます。この列を使用して、すべての受信イベントのタイムスタンプを設定して、Windowing、Joins などの一時的な計算を実行する必要があります。ベスト プラクティスとして、到着時間の経過と同時に TIMESTAMP BY を使用することをお勧めします。 TIMESTAMP BY は datetime 型の任意の列で使用でき、すべての ISO 8601 形式がサポートされています。 System.Timestamp() は Select でのみ使用できます。

イベントのアプリケーション時刻として EntryTime 列を使用する TIMESTAMP BY の例を次に示します。

  
SELECT TollId, EntryTime AS VehicleEntryTime, LicensePlate, State, Make, Model, VehicleType, VehicleWeight, Toll, Tag   
FROM TollTagEntry TIMESTAMP BY EntryTime  
  

フィールド名の大文字と小文字の区別

互換性レベル 1.0 を使用して作成されたジョブのフィールド名は、Azure Stream Analytics エンジンによって処理されるときに小文字に変更されます (大文字と小文字は区別されません)。 JSON など、大文字と小文字を区別するスキーマをサポートする入力形式の場合は、大文字と小文字を区別しない方法でフィールド名を比較するときに、重複するフィールドを持つイベントを作成できます。 このようなイベントは無効なイベントと見なされ、処理中に削除されます。

互換性レベル 1.1 以上を使用して Stream Analytics ジョブを作成すると、フィールド名の大文字と小文字の区別が保持されます。 詳細については、 互換性レベルの構成 に関するトピックを参照してください。

このセクションでは...

Stream Analytics クエリ言語の使用に関するガイダンスについては、次のトピックを参照してください。

こちらもご覧ください