scan-Operator
Scannt Daten, führt Abgleiche durch und erstellt Sequenzen basierend auf den Prädikaten.
Übereinstimmende Datensätze werden anhand von Prädikaten bestimmt, die in den Schritten des Operators definiert sind. Ein Prädikat kann vom Zustand abhängen, der von den vorherigen Schritten generiert wird. Die Ausgabe für den übereinstimmenden Datensatz wird durch den Eingabedatensatz und die Zuweisungen bestimmt, die in den Schritten des Operators definiert sind.
Syntax
T| scan
[ with_match_id
=
MatchIdColumnName ] [ declare
(
ColumnDeclarations)
] with
(
StepDefinitions)
ColumnDeclarations-Syntax
Columnname:
ColumnType[=
DefaultValue ] [,
... ]
StepDefinition-Syntax
step
StepName [ output
| last
= all
| none
] :
Bedingung [ =>
Spaltenzuweisung=
[,
... ] ];
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Typ | Erforderlich | Beschreibung |
---|---|---|---|
T | string |
✔️ | Die tabellarische Eingabequelle. |
MatchIdColumnName | string |
Der Name einer Spalte vom Typ long , die im Rahmen der Scanausführung an die Ausgabe angefügt wird. Gibt den 0-basierten Index der Übereinstimmung für den Datensatz an. |
|
ColumnDeclarations | string |
Deklariert eine Erweiterung für das Schema von T. Diesen Spalten werden in den Schritten Werte zugewiesen. Wenn sie nicht zugewiesen ist, wird der DefaultValue zurückgegeben. Sofern nicht anders angegeben, ist null DefaultValue . |
|
StepName | string |
✔️ | Wird verwendet, um auf Werte im Zustand der Überprüfung auf Bedingungen und Zuweisungen zu verweisen. Der Schrittname muss eindeutig sein. |
Condition | string |
✔️ | Ein Ausdruck, der mit true oder ausgewertet wird, false der definiert, welche Datensätze aus der Eingabe mit dem Schritt übereinstimmen. Ein Datensatz stimmt mit dem Schritt überein, wenn die Bedingung true mit dem Status des Schritts oder mit dem Status des vorherigen Schritts übereinstimmt. |
Abtretung | string |
Ein Skalarausdruck, der der entsprechenden Spalte zugewiesen wird, wenn ein Datensatz mit einem Schritt übereinstimmt. | |
output |
string |
Steuert die Ausgabelogik des Schritts bei wiederholten Übereinstimmungen. all gibt alle Datensätze aus, die dem Schritt entsprechen, last gibt nur den letzten Datensatz in einer Reihe wiederholter Übereinstimmungen für den Schritt aus, und none es werden keine Datensätze ausgegeben, die dem Schritt entsprechen. Der Standardwert ist all . |
Gibt zurück
Ein Datensatz für jede Übereinstimmung eines Datensatzes von der Eingabe bis zu einem Schritt. Das Schema der Ausgabe ist das Schema der Quelle, das mit der Spalte in der declare
-Klausel erweitert wird.
Scanlogik
scan
übergibt die serialisierten Eingabedaten Datensatz für Datensatz, vergleicht jeden Datensatz mit der Bedingung jedes Schritts, wobei der aktuelle Zustand der einzelnen Schritte berücksichtigt wird.
State
Der zugrunde liegende Zustand des scan
Operators kann als Eine Tabelle mit einer Zeile für jeden step
betrachtet werden. Jeder Schritt behält seinen eigenen Zustand mit den neuesten Werten der Spalten und deklarierten Variablen aus allen vorherigen Schritten und dem aktuellen Schritt bei. Falls relevant, enthält es auch die Übereinstimmungs-ID für die laufende Sequenz.
Wenn ein Scanoperator n Schritte mit dem Namen s_1, s_2, ..., s_n enthält Schritt s_kk-Datensätze in seinem Zustand, der s_1, s_2, ... , s_k entspricht. Der Schrittname. Das ColumnName-Format wird verwendet, um auf einen Wert im Zustand zu verweisen. Für instance würde auf die Spalte col1
verweisen, s_2.col1
die zu Schritt s_2 im Zustand von s_k gehört. Ein ausführliches Beispiel finden Sie in der exemplarischen Vorgehensweise zur Überprüfungslogik.
Der Zustand beginnt leer und wird aktualisiert, wenn ein gescannter Eingabedatensatz mit einem Schritt übereinstimmt. Wenn der Status des aktuellen Schritts nicht leer ist, wird der Schritt als aktive Sequenz bezeichnet.
Abgleichslogik
Jeder Eingabedatensatz wird mit allen Schritten in umgekehrter Reihenfolge vom letzten Schritt bis zum ersten ausgewertet. Wenn ein Datensatz r für einen Schritt s_k ausgewertet wird, wird die folgende Logik angewendet:
Überprüfung 1: Wenn der Zustand des vorherigen Schritts (s_k-1) nicht leer ist und r die Bedingung von s_k erfüllt, tritt eine Übereinstimmung auf. Die Übereinstimmung führt zu den folgenden Aktionen:
- Der Status der s_k wird gelöscht.
- Der Zustand von s_k-1 wird zum Zustand der s_k heraufgestuft.
- Die Zuordnungen von s_k werden berechnet und erweitern r.
- Das erweiterte r wird der Ausgabe und dem Zustand von s_k hinzugefügt.
Hinweis
Wenn Check 1 zu einer Übereinstimmung führt, wird Check 2 ignoriert, und r wird mit s_k-1 ausgewertet.
Überprüfen Sie 2: Wenn der Status von s_k eine aktive Sequenz aufweist oder s_k der erste Schritt ist und r die Bedingung von s_k erfüllt, tritt eine Übereinstimmung auf. Die Übereinstimmung führt zu den folgenden Aktionen:
- Die Zuordnungen von s_k werden berechnet und erweitern r.
- Die Werte, die s_k im Zustand von s_k darstellen, werden durch die Werte des erweiterten r ersetzt.
- Wenn s_k als
output=all
definiert ist, wird das erweiterte r der Ausgabe hinzugefügt. - Wenn s_k der erste Schritt ist, beginnt eine neue Sequenz, und die Übereinstimmungs-ID erhöht sich um
1
. Dies wirkt sich nur auf die Ausgabe aus, wennwith_match_id
verwendet wird.
Sobald die Überprüfungen auf s_k abgeschlossen sind, wird r mit s_k-1 ausgewertet.
Ein ausführliches Beispiel für diese Logik finden Sie in der exemplarischen Vorgehensweise zur Überprüfungslogik.
Beispiele
Kumulative Summe
Berechnen Sie die kumulative Summe für eine Eingabespalte. Das Ergebnis dieses Beispiels entspricht der Verwendung von row_cumsum().
range x from 1 to 5 step 1
| scan declare (cumulative_x:long=0) with
(
step s1: true => cumulative_x = x + s1.cumulative_x;
)
Ausgabe
x | cumulative_x |
---|---|
1 | 1 |
2 | 3 |
3 | 6 |
4 | 10 |
5 | 15 |
Kumulative Summe für mehrere Spalten mit einer Zurücksetzungsbedingung
Berechnen Sie die kumulative Summe für zwei Eingabespalten, und setzen Sie den Summenwert auf den aktuellen Datensatzwert zurück, wenn die kumulative Summe 10 oder mehr erreicht hat.
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);
)
Ausgabe
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 |
Weiter ausfüllen einer Spalte
Füllen Sie eine Zeichenfolgenspalte vorwärts aus. Jedem leeren Wert wird der zuletzt angezeigte nicht leere Wert zugewiesen.
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);
)
Ausgabe
Ts | Ereignis | Event_filled |
---|---|---|
00:00:00 | Ein | Ein |
00:01:00 | Ein | |
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 |
Tagging für Sitzungen
Teilen Sie die Eingabe in Sitzungen auf: Eine Sitzung endet 30 Minuten nach dem ersten Ereignis der Sitzung, danach beginnt eine neue Sitzung. Beachten Sie die Verwendung des with_match_id
Flags, das für jede eindeutige Übereinstimmung (Sitzung) der Überprüfung einen eindeutigen Wert zuweist. Beachten Sie auch die spezielle Verwendung von zwei Schritten in diesem Beispiel, hat true
als Bedingung, inSession
dass alle Datensätze aus der Eingabe erfasst und ausgegeben werden, während endSession
Datensätze erfasst werden, die mehr als 30 Meter vom Wert für die sessionStart
aktuelle Übereinstimmung entfernt sind. Der endSession
Schritt hat output=none
die Bedeutung, dass er keine Ausgabedatensätze erzeugt. Der endSession
Schritt wird verwendet, um den Status der aktuellen Übereinstimmung von inSession
auf zu vorzurücken endSession
, sodass eine neue Übereinstimmung (Sitzung) beginnend mit dem aktuellen Datensatz beginnen kann.
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;
)
Ausgabe
Ts | Ereignis | sessionStart | session_id |
---|---|---|---|
00:00:00 | Ein | 00:00:00 | 0 |
00:01:00 | Ein | 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 | Ein | 01:15:00 | 2 |
Ereignisse zwischen "Start" und "Stop"
Suchen Sie alle Sequenzen von Ereignissen zwischen dem Ereignis Start
und dem Ereignis Stop
, die innerhalb von 5 Minuten auftreten. Weisen Sie jeder Sequenz eine Übereinstimmungs-ID zu.
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;
)
Ausgabe
Ts | Ereignis | m_id |
---|---|---|
00:01:00 | Start | 0 |
00:02:00 | B | 0 |
00:03:00 | D | 0 |
00:04:00 | Beenden | 0 |
00:08:00 | Start | 1 |
00:11:00 | E | 1 |
00:12:00 | Beenden | 1 |
Berechnen eines benutzerdefinierten Trichters mit Ereignissen
Berechnen Sie eine Trichtervervollständigung der Sequenz Hail
-Thunderstorm Wind
>Tornado
> mit State
benutzerdefinierten Schwellenwerten für die Zeiten zwischen den Ereignissen (Tornado
innerhalb 1h
und Thunderstorm Wind
innerhalb ).2h
Dieses Beispiel ähnelt dem funnel_sequence_completion-Plug-In, ermöglicht jedoch mehr Flexibilität.
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
Ausgabe
EventType | dcount_State |
---|---|
Hagel | 50 |
Tornado | 34 |
Sturm | 32 |
Exemplarische Vorgehensweise zum Scannen der Logik
In diesem Abschnitt wird die Scanlogik anhand einer schrittweisen exemplarischen Vorgehensweise des Beispiels Ereignisse zwischen Start und Beenden veranschaulicht:
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;
)
Der Zustand
Stellen Sie sich den Zustand des scan
Operators als Eine Tabelle mit einer Zeile für jeden Schritt vor, in dem jeder Schritt seinen eigenen Zustand hat. Dieser Zustand enthält die neuesten Werte der Spalten und deklarierten Variablen aus allen vorherigen Schritten und dem aktuellen Schritt. Weitere Informationen finden Sie unter Status.
In diesem Beispiel kann der Zustand mit der folgenden Tabelle dargestellt werden:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | X | X | |||||
s3 |
Das "X" gibt an, dass ein bestimmtes Feld für diesen Schritt irrelevant ist.
Die übereinstimmende Logik
Dieser Abschnitt folgt der übereinstimmenden Logik durch jeden Datensatz der Events
Tabelle und erläutert die Transformation des Zustands und der Ausgabe bei jedem Schritt.
Hinweis
Ein Eingabedatensatz wird mit den Schritten in umgekehrter Reihenfolge vom letzten Schritt (s3
) bis zum ersten Schritt (s1
) ausgewertet.
Datensatz 1
Ts | Ereignis |
---|---|
0 m | „A“ |
Zeichnen Sie die Auswertung bei jedem Schritt auf:
s3
: Überprüfung 1 wird nicht bestanden, da der Status vons2
leer ist, und Check 2 nicht bestanden wird, das3
keine aktive Sequenz vorhanden ist.s2
: Überprüfung 1 wird nicht bestanden, da der Status vons1
leer ist, und Check 2 nicht bestanden wird, das2
keine aktive Sequenz vorhanden ist.s1
: Überprüfung 1 ist irrelevant, da es keinen vorherigen Schritt gibt. Check 2 wird nicht bestanden, da der Datensatz die Bedingung vonEvent == "Start"
nicht erfüllt. Datensatz 1 wird verworfen, ohne dass sich dies auf den Zustand oder die Ausgabe auswirkt.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | X | X | |||||
s3 |
Datensatz 2
Ts | Ereignis |
---|---|
1m | "Start" |
Zeichnen Sie die Auswertung bei jedem Schritt auf:
s3
: Überprüfung 1 wird nicht bestanden, da der Status vons2
leer ist, und Check 2 nicht bestanden wird, das3
keine aktive Sequenz vorhanden ist.s2
: Überprüfung 1 wird nicht bestanden, da der Status vons1
leer ist, und Check 2 nicht bestanden wird, das2
keine aktive Sequenz vorhanden ist.s1
: Überprüfung 1 ist irrelevant, da es keinen vorherigen Schritt gibt. Überprüfung 2 wird übergeben, da der Datensatz die Bedingung vonEvent == "Start"
erfüllt. Durch diese Übereinstimmung wird eine neue Sequenz initiiert, diem_id
zugewiesen ist. Datensatz 2 und seinm_id
(0
) werden dem Zustand und der Ausgabe hinzugefügt.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | 0 | 00:01:00 | "Start" | X | X | X | X |
s2 | X | X | |||||
s3 |
Datensatz 3
Ts | Ereignis |
---|---|
2m | „B“ |
Zeichnen Sie die Auswertung bei jedem Schritt auf:
s3
: Überprüfung 1 wird nicht bestanden, da der Status vons2
leer ist, und Check 2 nicht bestanden wird, das3
keine aktive Sequenz vorhanden ist.s2
: Überprüfung 1 wird bestanden, da der Zustand vons1
nicht leer ist und der Datensatz die Bedingung vonTs - s1.Ts < 5m
erfüllt. Durch diese Übereinstimmung wird der Zustand vons1
gelöscht und die Sequenz ins1
zus2
heraufgestuft. Datensatz 3 und dessenm_id
(0
) werden dem Zustand und der Ausgabe hinzugefügt.s1
: Überprüfung 1 ist irrelevant, da es keinen vorherigen Schritt gibt, und Check 2 wird nicht bestanden, da der Datensatz die Bedingung vonEvent == "Start"
nicht erfüllt.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | 0 | 00:01:00 | "Start" | 00:02:00 | „B“ | X | X |
s3 |
Datensatz 4
Ts | Ereignis |
---|---|
3m | "D" |
Zeichnen Sie die Auswertung bei jedem Schritt auf:
s3
: Überprüfung 1 wird nicht bestanden, weil der Datensatz die Bedingung vonEvent == "Stop"
nicht erfüllt, und Check 2 wird nicht bestanden, das3
keine aktive Sequenz vorhanden ist.s2
: Check 1 wird nicht übergeben, da der Zustand vons1
leer ist. Sie besteht Überprüfung 2 , da sie die Bedingung vonTs - s1.Ts < 5m
erfüllt. Datensatz 4 und dessenm_id
(0
) werden dem Zustand und der Ausgabe hinzugefügt. Die Werte aus diesem Datensatz überschreiben die vorherigen Zustandswerte fürs2.Ts
unds2.Event
.s1
: Überprüfung 1 ist irrelevant, da es keinen vorherigen Schritt gibt, und Check 2 wird nicht bestanden, da der Datensatz die Bedingung vonEvent == "Start"
nicht erfüllt.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | 0 | 00:01:00 | "Start" | 00:03:00 | "D" | X | X |
s3 |
Datensatz 5
Ts | Ereignis |
---|---|
4m | "Stop" |
Aufzeichnen der Auswertung bei jedem Schritt:
s3
: Check 1 wird übergeben, weils2
nicht leer ist und dies3
Bedingung vonEvent == "Stop"
erfüllt. Diese Übereinstimmung bewirkt, dass der Zustand vons2
gelöscht und die Sequenz ins2
zus3
heraufgestuft wird. Datensatz 5 und seinm_id
(0
) werden dem Zustand und der Ausgabe hinzugefügt.s2
: Check 1 wird nicht übergeben, weil der Status vons1
leer ist, und Check 2 wird nicht bestanden, das2
keine aktive Sequenz vorhanden ist.s1
: Überprüfung 1 ist irrelevant, da es keinen vorherigen Schritt gibt. Überprüfung 2 wird nicht bestanden, da der Datensatz nicht die Bedingung vonEvent == "Start"
erfüllt.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | X | X | |||||
s3 | 0 | 00:01:00 | "Start" | 00:03:00 | "D" | 00:04:00 | "Stop" |
Datensatz 6
Ts | Ereignis |
---|---|
6m | „C“ |
Aufzeichnen der Auswertung bei jedem Schritt:
s3
: Überprüfung 1 wird nicht übergeben, weil der Status vons2
leer ist, und Check 2 wird nicht bestanden, das3
dies3
Bedingung vonEvent == "Stop"
nicht erfüllt ist.s2
: Check 1 wird nicht übergeben, weil der Status vons1
leer ist, und Check 2 wird nicht bestanden, das2
keine aktive Sequenz vorhanden ist.s1
: Überprüfung 1 wird nicht bestanden, weil kein vorheriger Schritt vorhanden ist, und Überprüfung 2 wird nicht bestanden, da sie die Bedingung vonEvent == "Start"
nicht erfüllt. Datensatz 6 wird verworfen, ohne sich auf den Zustand oder die Ausgabe zu auswirken.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | X | X | |||||
s3 | 0 | 00:01:00 | "Start" | 00:03:00 | "D" | 00:04:00 | "Stop" |
Datensatz 7
Ts | Ereignis |
---|---|
8m | "Start" |
Aufzeichnen der Auswertung bei jedem Schritt:
s3
: Check 1 isn't passed, because the state ofs2
is empty, and Check 2 isn't passed, because it doesn't meet the condition ofEvent == "Stop"
.s2
: Check 1 wird nicht übergeben, weil der Status vons1
leer ist, und Check 2 wird nicht bestanden, das2
keine aktive Sequenz vorhanden ist.s1
: Check 1 isn't passed because there's previous step. Sie besteht Check 2 , da sie die Bedingung vonEvent == "Start"
erfüllt. Diese Übereinstimmung initiiert eine neue Sequenz ins1
mit einem neuenm_id
. Datensatz 7 und seinm_id
(1
) werden dem Zustand und der Ausgabe hinzugefügt.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | 1 | 00:08:00 | "Start" | X | X | X | X |
s2 | X | X | |||||
s3 | 0 | 00:01:00 | "Start" | 00:03:00 | "D" | 00:04:00 | "Stop" |
Hinweis
Es gibt jetzt zwei aktive Sequenzen im Zustand.
Datensatz 8
Ts | Ereignis |
---|---|
11m | "E" |
Aufzeichnen der Auswertung bei jedem Schritt:
s3
: Check 1 isn't passed, because the state ofs2
is empty, and Check 2 isn't passed, because it doesn't meet thes3
condition ofEvent == "Stop"
.s2
: Überprüfung 1 wird übergeben, da der Zustand vons1
nicht leer ist und der Datensatz die Bedingung vonTs - s1.Ts < 5m
erfüllt. Diese Übereinstimmung bewirkt, dass der Zustand vons1
gelöscht und die Sequenz ins1
zus2
heraufgestuft wird. Datensatz 8 und seinm_id
(1
) werden dem Zustand und der Ausgabe hinzugefügt.s1
: Überprüfung 1 ist irrelevant, da es keinen vorherigen Schritt gibt, und Check 2 wird nicht übergeben, da der Datensatz die Bedingung vonEvent == "Start"
nicht erfüllt.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | 1 | 00:08:00 | "Start" | 00:11:00 | "E" | X | X |
s3 | 0 | 00:01:00 | "Start" | 00:03:00 | "D" | 00:04:00 | "Stop" |
Datensatz 9
Ts | Ereignis |
---|---|
12m | "Stop" |
Aufzeichnen der Auswertung bei jedem Schritt:
s3
: Check 1 wird übergeben, weils2
nicht leer ist und dies3
Bedingung vonEvent == "Stop"
erfüllt. Diese Übereinstimmung bewirkt, dass der Zustand vons2
gelöscht und die Sequenz ins2
zus3
heraufgestuft wird. Datensatz 9 und seinm_id
(1
) werden dem Zustand und der Ausgabe hinzugefügt.s2
: Check 1 wird nicht übergeben, weil der Status vons1
leer ist, und Check 2 wird nicht bestanden, das2
keine aktive Sequenz vorhanden ist.s1
: Check 1 isn't passed because there's previous step. Sie besteht Check 2 , da sie die Bedingung vonEvent == "Start"
erfüllt. Diese Übereinstimmung initiiert eine neue Sequenz ins1
mit einem neuenm_id
.
Staat:
Schritt | m_id | s1. Ts | s1. Ereignis | s2. Ts | s2. Ereignis | s3. Ts | s3. Ereignis |
---|---|---|---|---|---|---|---|
s1 | X | X | X | X | |||
s2 | X | X | |||||
s3 | 1 | 00:08:00 | "Start" | 00:11:00 | "E" | 00:12:00 | "Stop" |
Endgültige Ausgabe
Ts | Ereignis | m_id |
---|---|---|
00:01:00 | Start | 0 |
00:02:00 | B | 0 |
00:03:00 | D | 0 |
00:04:00 | Beenden | 0 |
00:08:00 | Start | 1 |
00:11:00 | E | 1 |
00:12:00 | Beenden | 1 |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für