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ışı
MATCH_RECOGNIZE yan tümcesi, bir veri akışı üzerinden bir dizi olayı aramak için kullanılır. Bu yan tümce, eşleşmedeki değerleri doğrulamak ve ayıklamak için normal ifadeleri ve toplama yöntemlerini kullanarak olay desenleri tanımlamanızı sağlar.
Aşağıdaki örnekte MATCH_RECOGNIZE yan tümcesinin temel yapısı gösterilmektedir:
SELECT *
INTO output FROM input TIMESTAMP BY time
MATCH_RECOGNIZE (
LIMIT DURATION (minute, 1)
PARTITION BY tollBoothId
MEASURES
Last(Toyota.LicensePlate) AS toyotaLicensePlate,
Last(Lexus.LicensePlate) AS lexusLicensePlate
AFTER MATCH SKIP TO NEXT ROW
PATTERN (Toyota+ Ford* Lexus+)
DEFINE
Toyota AS Toyota.make = 'Toyota',
Ford AS Ford.make = 'Ford',
Lexus AS Lexus.make = 'Lexus'
) AS T
MATCH_RECOGNIZE, varsayılan olarak BIR SATIR/EŞLEŞME için eşleşen bir çıkışa sahiptir. Bu, kullanılabilen tek eşleşmedir. Bu, eşleşmenin eşleşme başına tek bir satır sonucu ürettiği ve eşleşen satırları döndürmediği anlamına gelir.
Sözdizimi
SELECT_star_query_definition
MATCH_RECOGNIZE (
LIMIT DURATION (time_unit, time)
PARTITION BY column_alias
MEASURES
expression AS column_alias [,...n]
AFTER MATCH SKIP TO NEXT ROW
PATTERN ( <pattern_group> )
DEFINE
pattern_name AS boolean_expression [,…n]
) AS column_alias
<pattern_group> ::=
{
<pattern_name_modifier> [ | <pattern_group> ]*
}
<pattern_name_modifier> ::=
{
<pattern_atom> [ <pattern_atom> ]*
}
<pattern_atom> ::=
{
[ pattern_name | ( <pattern_group> ) ] [ <pattern_modifier> ]?
}
<pattern_name> :: =
{
name | .
}
<pattern_modifier> ::=
{
* | + | ?
}
SÜREYİ SıNıRLA
Sınır süresi, desenin aranacağı zaman penceresini tanımlamak için kullanılır. Olaylar zamana göre sıralanır ve zaman alanını belirtmek için SELECT yan tümcesinde TIMESTAMP BY kullanılabilir.
PARTİSYONA GÖRE
PARTITION BY, eşleşmenin bir sütun adı üzerinden anahtarlanıp bölümlendirilmesine olanak tanır. Bölüm deyimi tarafından belirtilen her benzersiz anahtar üzerinde bir eşleşme gerçekleşir. Bu, tek bir sorgunun tüm anahtarlar üzerinde eşleşmesini ve her anahtara bir tane olmak üzere ayrı eşleşmeler oluşturmasını sağlar.
EŞLEŞTIRMEDEN SONRA SONRAKI SATıRA ATLA
Bu skip yan tümcesi, S olayından başlayarak bir desen eşleştirildikten sonra bir sonraki eşleştirme deseninin S+1 olayından başlayacağını tanımlar. Bu durumda eşleşmeler çakışabilir, bir desen içinde başka bir desenin başlangıcını içerebilir. Bu, kullanılabilen tek skip yan tümcesidir.
ÖNLEM -LER
ÖLÇÜLER, toplama yöntemleri kullanılarak eşleşmeden yansıtılan değerleri tanımlamak için kullanılır. Örneğin, LAST(A.id) AS aid adlı A desenle eşleşen tüm olaylar üzerinde bulunan son id değeri alan adına aidverir.
Sınıflandırıcı işlevi
Sınıflandırıcı işlevi, giriş olaylarıyla eşleşen desen adlarının çıktısını almak için ÖLÇÜLER'de kullanılabilir. İşlev, her biri bir olayla eşleşen desen adına sahip dizelerin listesini döndürür.
DESEN
Desen, veri akışı üzerinde aranacak olayların normal ifadesini tanımlar. Desen değişkenleri kullanıcı tanımlıdır ve boşluklarla ayrılmıştır. ve * gibi + değiştiriciler, olayları eşleştirirken bir değişkenin sıklığını değiştirmek için kullanılabilir.
Örnek
PATTERN (A+ (B | C))
Bu örnekteki desen en az bir kez A değişkenini ve ardından B veya C'nin birleştirilmesini tanımlar.
Desen Niceleyicileri
Desen niceleyicileri, bir desenin geçerli olması için kaç kez eşleşmesi gerektiğini tanımlayarak veri akışında bir desenin eşlenme şeklini değiştirmek için kullanılır. Aşağıdaki niceleyiciler kullanılabilir:
- '*' - Sıfır veya daha fazla kez
- '+' - Bir veya daha fazla kez
- '?' – Sıfır veya bir kez
- '|' - Bir desen veya başka bir desen
Örnek:
PATTERN (A? B+)
Bu örnek , A 0 veya 1 zamanını ve ardından en az bir kez B'i tanımlar.
TANIMLAMAK
DEFINE, bir desen değişkenini bir olayla eşleştirmek için kullanılan kuralları belirtir. Kurallar, veri akışından toplanan değerler üzerinde Boole ifadeleridir.
DEFINE
A AS Last(A.bigint) > 5,
B AS Last(A.bigint) < B.bigint
Bu örnek, A'nınLAST değerinin 5'ten büyük olduğu A ve B kurallarını ve A'nınLAST değerinin geçerli B değerinden küçük olduğu B kurallarını tanımlar. DEFINE ifadesinde bir toplama işlevi kullanmadığınızda, değerlendirilen geçerli olay desen değişkenine bağlanır, örneğin, B.bigint'teB değeri değerlendirilen geçerli olaydan gelir.
Tanımlı desenlere yalnızca A deseniB deseni öncesinde tanımlanmışsa, AB'ye başvuramaz.
İzin Verilen
...
DEFINE
A AS Last(A.value),
B AS Max(A.value) + Max(B.value),
...
İzin verilmiyor
...
DEFINE
A AS Last(A.value) + Last(B.Value),
B AS Max(A.value) + Max(B.value),
...
Toplama Yöntemleri
ÖLÇÜLER ve DEFINE'de aşağıdaki toplama yöntemleri kullanılabilir:
- Min: Şimdiye kadar toplanan minimum sayı.
- Maks: Şu ana kadar toplanan maksimum sayı.
- First: Toplanan ilk değer.
- Last: Şimdiye kadar toplanan son değer.
Örnek:
Yüksek basınçlı tankların yeniden doldurulması tehlikeli bir işlemdir ve bir tank üzerindeki basıncın artması sıcaklığı da artırdığından yakından izlenmesi gerekir, tankın doldurma sırasında soğuması için zaman vermek için basıncın sürekli olarak artması gerekir.
Bu örnekte geliştirici, basıncı artırmaya başladığı için yüksek basınçlı bir tankın yeniden doldurulmasını izlemek istiyor. Tank yeniden doldurmaya başlar ve basıncı 3 dakikadan kısa sürede iki katına çıkaramaz, aksi takdirde tank aşırı ısınmaya neden olur ve yıkıcı bir arızaya neden olabilir.
İlerleme durumunu izlemek için aşağıdaki sorgu kullanılabilir:
SELECT *
INTO output FROM input TIMESTAMP BY time
MATCH_RECOGNIZE (
LIMIT DURATION (minute, 3)
MEASURES
MAX(Dangerous.pressure) as pressure,
Classifier() as patterns
AFTER MATCH SKIP TO NEXT ROW
PATTERN (Normal+ Dangerous+)
DEFINE
Normal AS Normal.isFilling = 1,
Dangerous AS Max(Dangerous.pressure) > 2* Max(Normal.pressure)
) AS T
Bu sorgu Normal'i tankı dolduran herhangi bir olayla eşleştirir ve basıncın 3 dakika içinde Normal doldurmanın iki katının üzerinde olması durumunda, Tehlikeli desen için maksimum basınç okuması ile bir olayın tetiklenmesinden daha fazladır .
Sınırlamalar
Toplamalar için yalnızca alan değerleri kullanılabilir. Toplama çağrısı içinde hiçbir işlev çağrılmaz.
İzin Verilen
... DEFINE A AS Max(A.value) > 5, ...İzin verilmiyor
... DEFINE A AS Max(udf.myUdf(A.value)) > 5, ...Toplama işlevine giriş parametresi olarak yalnızca tek bir alan sağlanabilir.
İzin Verilen
... DEFINE A AS Max(A.value) > 5, ...İzin verilmiyor
... DEFINE A AS Max(A.value1 + A.value2) > 5, ...