次の方法で共有


System.Timestamp()

✅ Azure Stream Analytics

Azure Stream Analytics のクエリのすべての段階のすべてのイベントには、タイムスタンプが関連付けられています。 System.Timestamp() は、イベントのタイムスタンプを取得するために使用できるシステム プロパティです。

以下では、Azure Stream Analytics がイベントにタイムスタンプを割り当てる方法について説明します。

入力イベントのタイムスタンプ

入力イベントのタイムスタンプは、 TIMESTAMP BY 句で指定された列値 (または式) で定義できます。

SELECT System.Timestamp() t   
FROM input   
TIMESTAMP BY MyTimeField  
  

指定された入力に TIMESTAMP BY 句が指定されていない場合、イベントの到着時刻がタイムスタンプとして使用されます。 たとえば、イベント ハブの入力の場合は、エンキューされた時刻が使用されます。

結果のイベント タイムスタンプ

計算が実行されるとき、結果のイベントのタイムスタンプは、この結果を決定できる最も早い論理時間です。

Azure Stream Analytics の基本的なクエリ操作 (フィルター、プロジェクション、集計、結合) によって結果のタイムスタンプがどのように生成されるかを見てみましょう。

Projection

SELECT  
      Prop1,  
      Prop2,  
      Prop3 - Prop4 / 12,
      System.Timestamp() t  
FROM input  
  

プロジェクションはイベントのタイムスタンプを変更しません。結果のタイムスタンプは入力のタイムスタンプと同じです。

Filter

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

フィルターによってイベントのタイムスタンプは変更されません。 結果のタイムスタンプは、入力のタイムスタンプと同じです。

時間の経過に伴う GROUP BY

SELECT  
      userId,  
      AVG(prop1),  
      SUM(prop2),  
      System.Timestamp() t  
FROM input  
GROUP BY TumblingWindow(minute, 1), userId  
  

集計の結果のタイムスタンプは、この結果が対応する時間枠の終わりです。 Azure Stream Analytics のさまざまなウィンドウの種類について説明している ウィンドウの記事 を参照してください。

INNER JOIN

SELECT  
      System.Timestamp()  
FROM input1  
JOIN input2  
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10  
  

内部結合では、input1 と input2 のイベントのペアに対応する結果が生成されます。

input1 からのイベント e1 と input2 からの e2 の一致を表すイベントは、e1 と e2 のタイムスタンプの最新のタイムスタンプによってタイムスタンプされます。

左外部結合

SELECT  
      System.Timestamp()  
FROM input1  
LEFT JOIN input2  
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10  
  

左外部結合では、2 種類の結果が生成されます。 一部は、input1 と input2 のイベントの一致するペアに対応します。他のユーザーは input1 からのイベントのみに対応し、input2 からの一致するイベントが見つからなかったことを示します。

一致を表すイベント (input1 と input2 の両方を含む) は、一致する入力のタイムスタンプの最新のタイムスタンプによってタイムスタンプされます (上記の INNER JOIN の場合と同様)。

非一致 (input2 は NULL) を表すイベントは、一致する input2 イベントが発生した可能性がある最新の論理時刻によってタイムスタンプが付けられます。 たとえば、上記の例では、input1 のタイムスタンプ + 10 分です。