Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 true false 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 step
egyes 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:
- A s_k állapota törlődik.
- Az s_k-1 állapota előléptetve s_k állapotává válik.
- A s_k hozzárendeléseinek kiszámítása és kiterjesztése r.
- 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:
- A s_k hozzárendeléseinek kiszámítása és kiterjesztése r.
- A s_k állapotában s_k ábrázoló értékek helyébe a kiterjesztett r érték kerül.
- Ha s_k a következőképpen van definiálva
output=all
, a kimenethez hozzáadja a kiterjesztett r-t . - Ha s_k az első lépés, egy új sorozat kezdődik, és az egyezés azonosítója a következővel
1
nő: . Ez csak akkor befolyásolja a kimenetet, hawith_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, inSession
true
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 inSession
endSession
á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 partition
scan
kombinálva output=none
output=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 Wind
State
egyéni küszöbértékekkel az események közötti időpontok alapján (Tornado
belü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 állapots2
üres, és a 2. ellenőrzés nem lett átadva, merts3
nincs aktív sorozat. -
s2
: Az 1. ellenőrzés nem lett átadva, mert az állapots1
üres, és a 2. ellenőrzés nem lett átadva, merts2
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ételnekEvent == "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 állapots2
üres, és a 2. ellenőrzés nem lett átadva, merts3
nincs aktív sorozat. -
s2
: Az 1. ellenőrzés nem lett átadva, mert az állapots1
üres, és a 2. ellenőrzés nem lett átadva, merts2
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ételnekEvent == "Start"
: . Ez az egyezés egy új sorozatot indít el, és a rendszer hozzárendeli.m_id
A 2. rekord és annakm_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 állapots2
üres, és a 2. ellenőrzés nem lett átadva, merts3
nincs aktív sorozat. -
s2
: Az 1-et azért adja át a rendszer, mert az állapots1
nem megfelelő, és a rekord megfelel a feltételnekTs - s1.Ts < 5m
. Ez az egyezés miatt a rendszer törli az állapotots1
, és előlépteti a sorrendets1
a következőres2
: . A 3. rekord és annakm_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ételnekEvent == "Stop"
, és a 2. ellenőrzés nem lesz átadva, merts3
nincs aktív sorozat. -
s2
: Az 1. ellenőrzés nem lett átadva, mert az állapotas1
üres. a 2. ellenőrzést adja át, mert megfelel a következő feltételnekTs - s1.Ts < 5m
: . A 4. rekord és annakm_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 éss2.Ts
as2.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, merts2
nincs megadva, és megfelel as3
feltételnekEvent == "Stop"
. Ez az egyezés miatt a rendszer törli az állapotots2
, és előlépteti a sorrendets2
a következőres3
: . Az 5. rekord és annakm_id
(0
) hozzáadása az állapothoz és a kimenethez. -
s2
: Az 1. ellenőrzés nem lett átadva, mert az állapots1
üres, és a 2. ellenőrzés nem lett átadva, merts2
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ételnekEvent == "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 állapots2
üres, és a 2. ellenőrzés nem lesz átadva, merts3
nem felel meg as3
feltételnekEvent == "Stop"
. -
s2
: Az 1. ellenőrzés nem lett átadva, mert az állapots1
üres, és a 2. ellenőrzés nem lett átadva, merts2
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ételnekEvent == "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 állapotas2
üres, és a 2. ellenőrzés nem lesz átadva, mert nem felel meg a feltételnekEvent == "Stop"
. -
s2
: Az 1. ellenőrzés nem lett átadva, mert az állapots1
üres, és a 2. ellenőrzés nem lett átadva, merts2
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ételnekEvent == "Start"
: . Ez az egyezés új sorozatot indít els1
egy újm_id
. A 7. rekord és annakm_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 állapotas2
üres, és a 2. ellenőrzés nem lesz átadva, mert nem felel meg as3
feltételnek.Event == "Stop"
-
s2
: Az 1-et azért adja át a rendszer, mert az állapots1
nem megfelelő, és a rekord megfelel a feltételnekTs - s1.Ts < 5m
. Ez az egyezés miatt a rendszer törli az állapotots1
, és előlépteti a sorrendets1
a következőres2
: . A 8. rekord és annakm_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, merts2
nincs megadva, és megfelel as3
feltételnekEvent == "Stop"
. Ez az egyezés miatt a rendszer törli az állapotots2
, és előlépteti a sorrendets2
a következőres3
: . A 9. rekord és annakm_id
(1
) hozzáadása az állapothoz és a kimenethez. -
s2
: Az 1. ellenőrzés nem lett átadva, mert az állapots1
üres, és a 2. ellenőrzés nem lett átadva, merts2
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ételnekEvent == "Start"
: . Ez az egyezés új sorozatot indít els1
egy újm_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 |