Megosztás a következőn keresztül:


szkennelő operátor

A következőkre vonatkozik: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A predikátumok alapján megvizsgálja az adatokat, az egyezéseket és a sorozatokat.

Az egyező rekordok meghatározása az operátor lépéseiben meghatározott predikátumok alapján történik. A predikátum az előző lépések által létrehozott állapottól függhet. Az egyező rekord kimenetét az operátor lépéseiben meghatározott bemeneti rekord és hozzárendelések határozzák meg.

Szemantika

T| scan [ with_match_id=MatchIdColumnName ] [ declare(ColumnDeclarations) ] with(StepDefinitions)

ColumnDeclarations szintaxis

Oszlopnév:ColumnType[=DefaultValue ] [, ... ]

StepDefinition szintaxis

step StepName [ output = all | last | none] :Condition [ =>Column=Assignment [, ... ] ];

További információ szintaxiskonvenciákról.

Paraméterek

Név típus Kötelező Leírás
T string ✔️ A bemeneti táblázatos forrás.
MatchIdColumnName string Egy olyan típusú long oszlop neve, amely a vizsgálat végrehajtása során hozzá van fűzve a kimenethez. A rekord egyezésének 0-alapú indexét jelzi.
ColumnDeclarations string Deklarálja a T sémájának bővítményét. Ezek az oszlopok a lépésekben vannak hozzárendelve értékekhez. Ha nincs hozzárendelve, a rendszer visszaadja a DefaultValue értéket . Ha másként nincs megadva, a DefaultValue értéke .null
Lépés neve string ✔️ A feltételek és hozzárendelések vizsgálatának állapotában lévő értékekre való hivatkozásra szolgál. A lépésnévnek egyedinek kell lennie.
Feltétel string ✔️ Olyan kifejezés, amely kiértékeli vagy truefalse meghatározza, hogy a bemenet mely rekordjai egyeznek meg a lépéssel. Egy rekord megegyezik a lépéssel, ha a feltétel true a lépés állapotával vagy az előző lépés állapotával van.
Feladat string Skaláris kifejezés, amely akkor van hozzárendelve a megfelelő oszlophoz, ha egy rekord megfelel egy lépésnek.
output string A lépés kimeneti logikáját szabályozza ismétlődő egyezések esetén. all a lépésnek megfelelő összes rekordot kimenetként adja ki, last csak a lépés ismétlődő egyezéseinek sorozatában szereplő utolsó rekordot adja ki, és none nem a lépésnek megfelelő rekordokat ad ki. Az alapértelmezett érték a all.

Visszatérítések

Egy rekord minden egyes egyezéséhez tartozó rekord a bemenettől a lépésig. A kimenet sémája a záradék oszlopával declare bővített forrás sémája.

Pásztás logika

scan átmegy a szerializált bemeneti adatokon, rekordonként rögzíti, összehasonlítja az egyes rekordokat az egyes lépések állapotával, és figyelembe veszi az egyes lépések aktuális állapotát.

Állam

Az operátor mögöttes állapota scan olyan táblázatnak tekinthető, amely minden stepegyes sorhoz tartozik. Minden lépés megtartja a saját állapotát az oszlopok és a deklarált változók legújabb értékeivel az összes előző lépésből és az aktuális lépésből. Ha releváns, a folyamatban lévő sorozat egyezés-azonosítóját is tartalmazza.

Ha egy vizsgálati operátor ns_1,s_2, ..., s_n nevű lépéssel rendelkezik, akkor a s_k lépésnek krekordjai s_1, s_2, ..., s_k. A StepName. A ColumnName formátum egy állapotban lévő értékre hivatkozik. Hivatkozhat például s_2.col1 az col1 lépéshez tartozó oszlopra s_k állapotában. Részletes példát a vizsgálati logikai útmutatóban talál.

Az állapot üresen indul, és minden alkalommal frissül, amikor egy beolvasott bemeneti rekord megfelel egy lépésnek. Ha az aktuális lépés állapota nem megfelelő, a lépést aktív sorozatnak nevezzük.

Egyező logika

Minden bemeneti rekord kiértékelése fordított sorrendben történik, az utolsó lépéstől az elsőig. Amikor egy rekord r kiértékelése egy s_k lépésen történik, a rendszer a következő logikát alkalmazza:

  • 1. ellenőrzés: Ha az előző lépés (s_k-1) állapota nem megfelelő, és r megfelel a s_kfeltételének, akkor egyezés történik. Az egyezés a következő műveletekhez vezet:

    1. A s_k állapota törlődik.
    2. Az s_k-1 állapota előléptetve s_k állapotává válik.
    3. A s_k hozzárendeléseinek kiszámítása és kiterjesztése r.
    4. A kiterjesztett r hozzá lesz adva a kimenethez és a s_k állapotához.

    Megjegyzés:

    Ha az 1. ellenőrzés egyezést eredményez, a 2. ellenőrzés figyelmen kívül lesz hagyva, és az r továbbhalad a s_k-1-re való értékeléshez.

  • 2. ellenőrzés: Ha az s_k állapota aktív sorozattal rendelkezik, vagy s_k az első lépés, és r megfelel a s_kfeltételének, akkor egyezés történik. Az egyezés a következő műveletekhez vezet:

    1. A s_k hozzárendeléseinek kiszámítása és kiterjesztése r.
    2. A s_k állapotában s_k ábrázoló értékek helyébe a kiterjesztett r érték kerül.
    3. Ha s_k a következőképpen van definiálva output=all, a kimenethez hozzáadja a kiterjesztett r-t .
    4. Ha s_k az első lépés, egy új sorozat kezdődik, és az egyezés azonosítója a következővel 1nő: . Ez csak akkor befolyásolja a kimenetet, ha with_match_id használatban van.

Ha a s_k ellenőrzése befejeződött, az r továbbhalad az s_k-1-nek megfelelő kiértékelésre.

Ennek a logikának a részletes példájáért tekintse meg a vizsgálati logika útmutatóját.

Példák

Az ebben a szakaszban szereplő példa bemutatja, hogyan használható a szintaxis az első lépésekhez.

A cikkben szereplő példák a nyilvánosan elérhető tábláit használják a fürt, például a StormEvents adatbázis tábláját.

A cikkben szereplő példák nyilvánosan elérhető táblákat használnak, például a Weather Analytics StormEvents táblát, mintaadatokat.

Kumulatív összeg

Egy bemeneti oszlop összegének kiszámítása. A példa eredménye egyenértékű a row_cumsum() használatával.

range x from 1 to 5 step 1 
| scan declare (cumulative_x:long=0) with 
(
    step s1: true => cumulative_x = x + s1.cumulative_x;
)

Kimenet

x cumulative_x
1 1
2 3
3 6
4 10
5 15

Összegző összeg több oszlopon alaphelyzetbe állítási feltétellel

Számítsa ki két bemeneti oszlop összesített összegét, állítsa vissza az összeg értékét az aktuális rekordértékre, amikor az összegösszeg elérte a 10-et vagy annál többet.

range x from 1 to 5 step 1
| extend y = 2 * x
| scan declare (cumulative_x:long=0, cumulative_y:long=0) with 
(
    step s1: true => cumulative_x = iff(s1.cumulative_x >= 10, x, x + s1.cumulative_x), 
                     cumulative_y = iff(s1.cumulative_y >= 10, y, y + s1.cumulative_y);
)

Kimenet

x y cumulative_x cumulative_y
1 2 1 2
2 4 3 6
3 6 6 12
4 8 10 8
5 10 5 18

Oszlop kitöltése

Sztringoszlop kitöltése. Minden üres értékhez az utolsóként látható egyetlen érték is hozzá lesz rendelve.

let Events = datatable (Ts: timespan, Event: string) [
    0m, "A",
    1m, "",
    2m, "B",
    3m, "",
    4m, "",
    6m, "C",
    8m, "",
    11m, "D",
    12m, ""
]
;
Events
| sort by Ts asc
| scan declare (Event_filled: string="") with 
(
    step s1: true => Event_filled = iff(isempty(Event), s1.Event_filled, Event);
)

Kimenet

Ts Esemény Event_filled
00:00:00 Egy Egy
00:01:00 Egy
00:02:00 B B
00:03:00 B
00:04:00 B
00:06:00 C C
00:08:00 C
00:11:00 D D
00:12:00 D

Munkamenetek címkézése

Ossza fel a bemenetet munkamenetekre: a munkamenet a munkamenet első eseménye után 30 perccel fejeződik be, majd egy új munkamenet kezdődik. Figyelje meg a jelölő használatát with_match_id , amely egyedi értéket rendel hozzá a vizsgálat minden különálló egyezéséhez (munkamenetéhez). Vegye figyelembe a példában szereplő két lépés speciális használatát is, amely feltétele annak, inSessiontrue hogy az összes rekordot rögzítse és kimenetelje a bemenetből, miközben endSession rögzíti azokat a sessionStart rekordokat, amelyek az aktuális egyezés értékétől több mint 30 m-t vesznek fel. A endSession lépés output=none azt jelenti, hogy nem hoz létre kimeneti rekordokat. A endSession lépéssel az aktuális egyezés inSessionendSessionállapotát az aktuális rekordtól kezdve egy új egyezés (munkamenet) kezdheti el.

let Events = datatable (Ts: timespan, Event: string) [
    0m, "A",
    1m, "A",
    2m, "B",
    3m, "D",
    32m, "B",
    36m, "C",
    38m, "D",
    41m, "E",
    75m, "A"
]
;
Events
| sort by Ts asc
| scan with_match_id=session_id declare (sessionStart: timespan) with 
(
    step inSession: true => sessionStart = iff(isnull(inSession.sessionStart), Ts, inSession.sessionStart);
    step endSession output=none: Ts - inSession.sessionStart > 30m;
)

Kimenet

Ts Esemény sessionStart munkamenet_azonosító
00:00:00 Egy 00:00:00 0
00:01:00 Egy 00:00:00 0
00:02:00 B 00:00:00 0
00:03:00 D 00:00:00 0
00:32:00 B 00:32:00 1
00:36:00 C 00:32:00 1
00:38:00 D 00:32:00 1
00:41:00 E 00:32:00 1
01:15:00 Egy 01:15:00 2

Munkamenet hosszának kiszámítása felhasználónként

Számítsa ki az egyes felhasználók munkameneteinek kezdési idejét, befejezési idejét és időtartamát az scan operátorral. A munkamenet a felhasználó bejelentkezése és az azt követő kijelentkezés közötti időszak. Ez a minta kombinálva és partitionscan kombinálva output=noneoutput=all biztosítja, hogy a rendszer egy sort adjon vissza munkamenetenként (azaz bejelentkezési/kijelentkezési páronként), és ne eseményenként egy sort.

A logika a következő szerint működik:

  • Az s1 lépésben: A bejelentkezési időbélyeg rögzítése egy vizsgálati lépéssel a következővel: output=none
  • Az s2 lépésben: Sorkibocsátás csak akkor, ha egyező kijelentkezés található a következővel: output=all
let LogsEvents = datatable(Timestamp:datetime, userID:int, EventType:string)
[
    datetime(2024-05-28 08:15:23), 1, "login",
    datetime(2024-05-28 08:30:15), 2, "login",
    datetime(2024-05-28 09:10:27), 3, "login",
    datetime(2024-05-28 12:30:45), 1, "logout",
    datetime(2024-05-28 11:45:32), 2, "logout",
    datetime(2024-05-28 13:25:19), 3, "logout"
];
LogsEvents
| sort by userID, Timestamp
| partition hint.strategy=native by userID (
    sort by Timestamp asc 
    | scan declare (start: datetime, end: datetime, sessionDuration: timespan) with (
        step s1 output=none: EventType == "login" => start = Timestamp;
        step s2 output=all: EventType == "logout" => start = s1.start, end = Timestamp, sessionDuration = Timestamp - s1.start;
    )
)
| project start, end, userID, sessionDuration

Kimenet

userID kezdet vég sessionDuration
1 2024-05-28 08:15:23.0000 2024-05-28 12:30:45.0000 04:15:22
3 2024-05-28 09:10:27.0000 2024-05-28 13:25:19.0000 04:14:52
2 2024-05-28 08:30:15.0000 2024-05-28 11:45:32.0000 03:15:17

Események a Start és a Leállítás között

Keresse meg az esemény Start és az 5 percen belül bekövetkező eseménysorozatok Stop mindegyikét. Rendeljen hozzá egyezésazonosítót minden sorozathoz.

let Events = datatable (Ts: timespan, Event: string) [
    0m, "A",
    1m, "Start",
    2m, "B",
    3m, "D",
    4m, "Stop",
    6m, "C",
    8m, "Start",
    11m, "E",
    12m, "Stop"
]
;
Events
| sort by Ts asc
| scan with_match_id=m_id with 
(
    step s1: Event == "Start";
    step s2: Event != "Start" and Event != "Stop" and Ts - s1.Ts <= 5m;
    step s3: Event == "Stop" and Ts - s1.Ts <= 5m;
)

Kimenet

Ts Esemény m_id
00:01:00 Kezdd el 0
00:02:00 B 0
00:03:00 D 0
00:04:00 Állj! 0
00:08:00 Kezdd el 1
00:11:00 E 1
00:12:00 Állj! 1

Események egyéni tölcsérének kiszámítása

Számítsa ki a sorozat Hail tölcsérvégzését –>Tornado>Thunderstorm WindState egyéni küszöbértékekkel az események közötti időpontok alapján (Tornadobelül 1h és Thunderstorm Wind belül).2h Ez a példa hasonló a funnel_sequence_completion beépülő modulhoz, de nagyobb rugalmasságot tesz lehetővé.

StormEvents
| partition hint.strategy=native by State 
    (
    sort by StartTime asc
    | scan with 
    (
        step hail: EventType == "Hail";
        step tornado: EventType == "Tornado" and StartTime - hail.StartTime <= 1h;
        step thunderstormWind: EventType == "Thunderstorm Wind" and StartTime - tornado.StartTime <= 2h;
    )
    )
| summarize dcount(State) by EventType

Kimenet

Eseménytípus dcount_State
Jégeső 50
Tornádó 34
Zivatar szél 32

A logikai útmutató beolvasása

Ez a szakasz a beolvasási logikát mutatja be a kezdés és a leállítás közötti események részletes útmutatójának használatával:

let Events = datatable (Ts: timespan, Event: string) [
    0m, "A",
    1m, "Start",
    2m, "B",
    3m, "D",
    4m, "Stop",
    6m, "C",
    8m, "Start",
    11m, "E",
    12m, "Stop"
]
;
Events
| sort by Ts asc
| scan with_match_id=m_id with 
(
    step s1: Event == "Start";
    step s2: Event != "Start" and Event != "Stop" and Ts - s1.Ts <= 5m;
    step s3: Event == "Stop" and Ts - s1.Ts <= 5m;
)

Kimenet

Ts Esemény m_id
00:01:00 Kezdd el 0
00:02:00 B 0
00:03:00 D 0
00:04:00 Állj! 0
00:08:00 Kezdd el 1
00:11:00 E 1
00:12:00 Állj! 1

Az állapot

Az operátor állapotát scan úgy tekinti, mint egy táblázatot, amelyben minden lépéshez tartozik egy sor, amelyben minden lépésnek saját állapota van. Ez az állapot tartalmazza az oszlopok és a deklarált változók legújabb értékeit az összes előző lépésből és az aktuális lépésből. További információ: Állapot.

Ebben a példában az állapot az alábbi táblázattal ábrázolható:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész X X
s3

Az "X" azt jelzi, hogy egy adott mező irreleváns ehhez a lépéshez.

Az egyező logika

Ez a szakasz a tábla minden rekordján végigköveti az Events, amely az állapot és a kimenet minden lépésnél történő átalakítását ismerteti.

Megjegyzés:

A bemeneti rekordok kiértékelése fordított sorrendben történik, az utolsó lépéstől (s3) az első lépésig (s1).

1. rekord

Ts Esemény
0m „A”

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1. ellenőrzés nem lett átadva, mert az állapot s2 üres, és a 2. ellenőrzés nem lett átadva, mert s3 nincs aktív sorozat.
  • s2: Az 1. ellenőrzés nem lett átadva, mert az állapot s1 üres, és a 2. ellenőrzés nem lett átadva, mert s2 nincs aktív sorozat.
  • s1: Az 1. ellenőrzés irreleváns, mert nincs előző lépés. A 2. ellenőrzés nincs átadva, mert a rekord nem felel meg a következő feltételnek Event == "Start": . Az 1. rekord elvetése az állapot vagy a kimenet befolyásolása nélkül történik.

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész X X
s3

2. rekord

Ts Esemény
1m "Start"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1. ellenőrzés nem lett átadva, mert az állapot s2 üres, és a 2. ellenőrzés nem lett átadva, mert s3 nincs aktív sorozat.
  • s2: Az 1. ellenőrzés nem lett átadva, mert az állapot s1 üres, és a 2. ellenőrzés nem lett átadva, mert s2 nincs aktív sorozat.
  • s1: Az 1. ellenőrzés irreleváns, mert nincs előző lépés. A 2. ellenőrzés azért van átadva, mert a rekord megfelel a következő feltételnek Event == "Start": . Ez az egyezés egy új sorozatot indít el, és a rendszer hozzárendeli.m_id A 2. rekord és annak m_id (0) hozzáadása az állapothoz és a kimenethez.

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész 0 00:01:00 "Start" X X X X
2. rész X X
s3

3. rekord

Ts Esemény
2 m "B"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1. ellenőrzés nem lett átadva, mert az állapot s2 üres, és a 2. ellenőrzés nem lett átadva, mert s3 nincs aktív sorozat.
  • s2: Az 1-et azért adja át a rendszer, mert az állapot s1 nem megfelelő, és a rekord megfelel a feltételnek Ts - s1.Ts < 5m. Ez az egyezés miatt a rendszer törli az állapotot s1 , és előlépteti a sorrendet s1 a következőre s2: . A 3. rekord és annak m_id (0) hozzáadása az állapothoz és a kimenethez.
  • s1: Az 1. ellenőrzés nem releváns, mert nincs előző lépés, és a 2. ellenőrzés nem lesz átadva, mert a rekord nem felel meg a feltételnek.Event == "Start"

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész 0 00:01:00 "Start" 00:02:00 "B" X X
s3

4. rekord

Ts Esemény
3m "D"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1. ellenőrzés nincs átadva, mert a rekord nem felel meg a feltételnek Event == "Stop", és a 2. ellenőrzés nem lesz átadva, mert s3 nincs aktív sorozat.
  • s2: Az 1. ellenőrzés nem lett átadva, mert az állapota s1 üres. a 2. ellenőrzést adja át, mert megfelel a következő feltételnek Ts - s1.Ts < 5m: . A 4. rekord és annak m_id (0) hozzáadása az állapothoz és a kimenethez. A rekord értékei felülírják a korábbi állapotértékeket az és s2.Tsa s2.Event .
  • s1: Az 1. ellenőrzés nem releváns, mert nincs előző lépés, és a 2. ellenőrzés nem lesz átadva, mert a rekord nem felel meg a feltételnek.Event == "Start"

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész 0 00:01:00 "Start" 00:03:00 "D" X X
s3

Rekord 5

Ts Esemény
4m "Leállítás"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1-et a függvény átadja, mert s2 nincs megadva, és megfelel a s3 feltételnek Event == "Stop". Ez az egyezés miatt a rendszer törli az állapotot s2 , és előlépteti a sorrendet s2 a következőre s3: . Az 5. rekord és annak m_id (0) hozzáadása az állapothoz és a kimenethez.
  • s2: Az 1. ellenőrzés nem lett átadva, mert az állapot s1 üres, és a 2. ellenőrzés nem lett átadva, mert s2 nincs aktív sorozat.
  • s1: Az 1. ellenőrzés irreleváns, mert nincs előző lépés. A 2. ellenőrzés nincs átadva, mert a rekord nem felel meg a következő feltételnek Event == "Start": .

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész X X
s3 0 00:01:00 "Start" 00:03:00 "D" 00:04:00 "Leállítás"

Rekord 6

Ts Esemény
6m "C"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1. ellenőrzés nincs átadva, mert az állapot s2 üres, és a 2. ellenőrzés nem lesz átadva, mert s3 nem felel meg a s3 feltételnek Event == "Stop".
  • s2: Az 1. ellenőrzés nem lett átadva, mert az állapot s1 üres, és a 2. ellenőrzés nem lett átadva, mert s2 nincs aktív sorozat.
  • s1: Az 1. ellenőrzés nem lett átadva, mert nincs előző lépés, és a 2. ellenőrzés nem lesz átadva, mert nem felel meg a feltételnek Event == "Start". A 6. rekord elvetése az állapot vagy a kimenet befolyásolása nélkül történik.

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész X X
s3 0 00:01:00 "Start" 00:03:00 "D" 00:04:00 "Leállítás"

7. rekord

Ts Esemény
8m "Start"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1. ellenőrzés nincs átadva, mert az állapota s2 üres, és a 2. ellenőrzés nem lesz átadva, mert nem felel meg a feltételnek Event == "Stop".
  • s2: Az 1. ellenőrzés nem lett átadva, mert az állapot s1 üres, és a 2. ellenőrzés nem lett átadva, mert s2 nincs aktív sorozat.
  • s1: Az 1. ellenőrzés nem lett átadva, mert nincs előző lépés. a 2. ellenőrzést adja át, mert megfelel a következő feltételnek Event == "Start": . Ez az egyezés új sorozatot indít el s1 egy új m_id. A 7. rekord és annak m_id (1) hozzáadása az állapothoz és a kimenethez.

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész 1 00:08:00 "Start" X X X X
2. rész X X
s3 0 00:01:00 "Start" 00:03:00 "D" 00:04:00 "Leállítás"

Megjegyzés:

Most két aktív sorozat van az állapotban.

Rekord 8

Ts Esemény
11m "E"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1. ellenőrzés nincs átadva, mert az állapota s2 üres, és a 2. ellenőrzés nem lesz átadva, mert nem felel meg a s3 feltételnek.Event == "Stop"
  • s2: Az 1-et azért adja át a rendszer, mert az állapot s1 nem megfelelő, és a rekord megfelel a feltételnek Ts - s1.Ts < 5m. Ez az egyezés miatt a rendszer törli az állapotot s1 , és előlépteti a sorrendet s1 a következőre s2: . A 8. rekord és annak m_id (1) hozzáadása az állapothoz és a kimenethez.
  • s1: Az 1. ellenőrzés nem releváns, mert nincs előző lépés, és a 2. ellenőrzés nem lesz átadva, mert a rekord nem felel meg a feltételnek.Event == "Start"

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész 1 00:08:00 "Start" 00:11:00 "E" X X
s3 0 00:01:00 "Start" 00:03:00 "D" 00:04:00 "Leállítás"

Rekord 9

Ts Esemény
12m "Leállítás"

A kiértékelés rögzítése minden lépésnél:

  • s3: Az 1-et a függvény átadja, mert s2 nincs megadva, és megfelel a s3 feltételnek Event == "Stop". Ez az egyezés miatt a rendszer törli az állapotot s2 , és előlépteti a sorrendet s2 a következőre s3: . A 9. rekord és annak m_id (1) hozzáadása az állapothoz és a kimenethez.
  • s2: Az 1. ellenőrzés nem lett átadva, mert az állapot s1 üres, és a 2. ellenőrzés nem lett átadva, mert s2 nincs aktív sorozat.
  • s1: Az 1. ellenőrzés nem lett átadva, mert nincs előző lépés. a 2. ellenőrzést adja át, mert megfelel a következő feltételnek Event == "Start": . Ez az egyezés új sorozatot indít el s1 egy új m_id.

Állam:

lépés m_id s1. Ts s1. Esemény s2. Ts s2. Esemény s3. Ts s3. Esemény
1. rész X X X X
2. rész X X
s3 1 00:08:00 "Start" 00:11:00 "E" 00:12:00 "Leállítás"

Végső kimenet

Ts Esemény m_id
00:01:00 Kezdd el 0
00:02:00 B 0
00:03:00 D 0
00:04:00 Állj! 0
00:08:00 Kezdd el 1
00:11:00 E 1
00:12:00 Állj! 1