Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
✅ Azure Stream Analytics ✅ Fabric Olay Akışı
LAG analiz operatörü, belirli kısıtlamalar dahilinde bir olay akışında "önceki" olayı aramanıza olanak tanır. Bir değişkenin büyüme hızını hesaplama, bir değişkenin eşiği ne zaman geçtiğini veya bir koşulun ne zaman başladığını veya doğru olmayı durdurmasını algılamak için çok yararlıdır.
Stream Analytics'te, LIMIT DURATION yan tümcesi kullanılarak LAG'nin kapsamı (yani geçerli olaydan geçmişe ne kadar geri bakılması gerektiği) her zaman sınırlı bir zaman aralığıyla sınırlıdır. LAG isteğe bağlı olarak yalnızca PARTITION BY ve WHEN yan tümcelerini kullanarak belirli bir özellik veya koşuldaki geçerli olayla eşleşen olayları dikkate almakla sınırlı olabilir.
LAG, WHERE yan tümcesindeki koşullardan, JOIN yan tümcesindeki birleştirme koşullarından veya geçerli sorgunun GROUP BY yan tümcesindeki ifadelerin gruplandırılmasından etkilenmez çünkü bu yan tümcelerden önce değerlendirilir.
Sözdizimi
LAG(<scalar_expression >, [<offset >], [<default>])
OVER ([PARTITION BY <partition key>] LIMIT DURATION(<unit>, <length>) [WHEN boolean_expression])
Örneğin:
LAG(reading) OVER (LIMIT DURATION(hour, 3))
LAG(name, 2, 'none such') OVER (PARTITION BY userId LIMIT DURATION(minute, 2))
Tartışmalar
scalar_expression
Belirtilen uzaklık temelinde döndürülecek değer. Tek bir (skaler) değer döndüren herhangi bir türde bir ifade veya '*' joker ifadesidir. '*' için, belirtilen uzaklık değerine göre olayın tamamı döndürülür ve sonuç olayında (iç içe kayıt) yer alır.
scalar_expression diğer analiz işlevlerini veya dış işlevleri içeremez.
fark
Bir değerin alındığı geçerli olaydan geri alınan olayların sayısı. Belirtilmezse, varsayılan değer 1'dir ve bu da önceki olayı döndürdüğü anlamına gelir. Uzaklık, 1'den büyük veya buna eşit bir tamsayı olmalıdır. Olaylar zamana bağlı olarak işlenir. Aynı zaman damgasına sahip birkaç olay varsa olaylar varış sırasına göre işlenir.
varsayılan
Belirtilen uzaklıkta olay olmadığında döndürülecek değer. Varsayılan değer belirtilmezse NULL döndürülür. 'Belirtilen uzaklıkta olay yok' durumu 1) şimdiye kadar görülen karşılık gelen olayların sayısı belirtilen uzaklıktan küçükse veya 2) belirtilen uzaklıktaki olay belirtilen limit_duration_clause 3) olaylara göre zaman aşımına uğradıysa ancak when_clause belirtilen boole koşuluyla eşleşmiyorsa 1) olabilir.
Belirtilen uzaklıkta olay varsa ve scalar_expression değeri NULL ise NULL
döndürülür. varsayılan bir sütun, alt sorgu veya başka bir ifade olabilir, ancak başka bir ifade içeremez
analiz işlevleri veya dış işlevler. varsayılan, ile tam olarak aynı türe sahip olmalıdır
scalar_expression.
OVER ( [ partition_by_clause ] limit_duration_clause [when_clause])
partition_by_clause PARTITION BY <bölüm anahtarı> yan tümcesi yalnızca değeri
<bölüm anahtarı> , geçerli olayın dikkate alınmasıyla aynıdır. Örneğin,
LAG(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1))
geçerli olayla aynı algılayıcının önceki okumasını döndürür (önceki 1 saat içinde oluştuysa).
limit_duration yan tümcesi SÜRE(<birim>, <uzunluk>)
Geçerli olaydaki geçmişin ne kadarının dikkate alınması gerektiğini belirtir. Desteklenen birimlerin ve bunların kısaltmalarının ayrıntılı açıklaması için datediff bölümüne bakın. SÜRE aralığında yeterli eşleşen olay bulunmazsa, <varsayılan> değer döndürülür.
when_clause
LAG hesaplamasında dikkate alınması gereken olaylar için boole koşulunu belirtir. SÜRE aralığında yeterli eşleşen olay bulunmazsa, <varsayılan> değer döndürülür. when_clause isteğe bağlıdır.
Dönüş Türleri
Belirtilen scalar_expression veri türü. scalar_expression null döndürülür
Genel Açıklamalar
LAG belirleyici değildir. Olaylar zamana bağlı olarak işlenir. Aynı zaman damgasına sahip birkaç olay varsa olaylar varış sırasına göre işlenir.
Bir pencereleme işlevinin sonuç kümesine LAG uygulamak beklenmeyen sonuçlara neden olabilir. Pencereleme işlevleri, her pencere işlemi pencerenin sonundaki olayı çıkış olarak belirttiğinden olayların zaman damgasını değiştirir. Bir olayın geçerli zaman damgasına system.timestamp() ile erişilebilir, bir pencere işleminden sonra özgün olay zamanı özniteliğinden farklı olur. LAG, pencere işleminden önce taşınamıyorsa CollectTop'ı kullanarak özgün olay zamanına göre sıralamayı göz önünde bulundurun.
Örnekler
Sensör başına büyüme hızını hesapla:
SELECT sensorId,
growth = reading -
LAG(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1))
FROM input
Önceki null olmayan algılayıcı okumalarını bulun:
SELECT
sensorId,
LAG(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading IS NOT NULL)
FROM input
Belirli bir algılayıcı türü için önceki null olmayan algılayıcı okumasını bulun:
WITH filterSensor AS
(
SELECT *
FROM input
WHERE input.sensorType = 4 AND sensorId IS NOT NULL
)
SELECT
LAG(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1))
FROM filterSensor
Bir değişkenin bir eşiği ne zaman aşdığını belirleyin:
SELECT
sensorId, reading
FROM input
WHERE
devicetype = 'thermostat'
AND reading > 100
AND LAG(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN devicetype = 'thermostat') <= 100