Aracılığıyla paylaş


System.Timestamp() (Stream Analytics)

Azure Stream Analytics'te sorgunun her aşamasındaki her olayla ilişkilendirilmiş bir zaman damgası vardır. System.Timestamp(), olayın zaman damgasını almak için kullanılabilecek bir sistem özelliğidir.

Aşağıda Azure Stream Analytics'in olaylara nasıl zaman damgası atadığı açıklanmaktadır.

Giriş olayları zaman damgası

Giriş olayının zaman damgası TIMESTAMP BY yan tümcesinde belirtilen sütun değeriyle (veya bir ifadeyle) tanımlanabilir:

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

Belirli bir giriş için TIMESTAMP BY yan tümcesi belirtilmezse, olayın varış saati zaman damgası olarak kullanılır. Örneğin Olay Hub'ı girişi durumunda olayın sıralanan zamanı kullanılır.

Sonuçta ortaya çıkan olay zaman damgası

Hesaplamalar gerçekleştirildiğinde, sonuçta elde edilen olayın zaman damgası, bu sonucun belirlenebileceği en erken mantıksal zamandır.

Şimdi Azure Stream Analytics'teki temel sorgu işlemlerinin (filtreler, projeksiyonlar, toplamalar ve birleştirmeler) sonucun zaman damgalarını nasıl oluşturduğuna bakalım.

Projeksiyon

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

Projeksiyonlar olayın zaman damgasını değiştirmez, sonucun zaman damgası girişin zaman damgasıyla aynıdır.

Filtrele

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Filtreler olayın zaman damgasını değiştirmez. Sonucun zaman damgası, girişin zaman damgasıyla aynıdır.

Zaman içinde GROUP BY penceresi

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

Toplama sonucunun zaman damgası, bu sonucun karşılık gelen zaman penceresinin sonudur. Lütfen Azure Stream Analytics'teki farklı pencere türlerini açıklayan Pencereleme (Azure Stream Analytics) makalelerine bakın.

INNER JOIN

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

İç birleşim, input1 ve input2'den eşleşen olay çiftlerine karşılık gelen sonuçlar üretir.

Input1'den e1 ve input2'den e2 olay e1 eşleşmesini temsil eden olay, e1 ve e2'nin en son zaman damgaları tarafından zaman damgasına eklenir.

SOL DıŞ BIRLEŞIM

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

Sol dış birleşim iki tür sonuçlar üretir. Bazıları input1 ve input2'den eşleşen bir olay çiftine karşılık gelir; diğerleri yalnızca input1'den bir olaya karşılık gelir ve input2'den eşleşen bir olay bulunamadığını belirtir.

Eşleşmeyi temsil eden olaylar (hem giriş1 hem de giriş2'ye sahiptir) eşleşen girişlerin en son zaman damgaları tarafından zaman damgalanır (yukarıdaki INNER JOIN örneğinde olduğu gibi).

Eşleşme olmayanları temsil eden olaylar (giriş2 NULL) eşleşen bir input2 olayının oluşabileceği en son mantıksal zaman damgasına sahiptir. Örneğin yukarıdaki örnekte input1'in zaman damgası + 10 dakikadır.