row_window_session()
Beräknar sessionsstartvärden för en kolumn i en serialiserad raduppsättning.
Syntax
row_window_session
(
Expr
,
MaxDistanceFromFirst
,
MaxDistanceBetweenNeighbors
[,
Restart
] )
Expr
är ett uttryck vars värden grupperas tillsammans i sessioner. Null-värden genererar nullvärden och nästa värde startar en ny session.Expr
måste vara ett skalärt uttryck av typendatetime
.MaxDistanceFromFirst
fastställer ett kriterium för att starta en ny session: Det maximala avståndet mellan det aktuella värdetExpr
för och värdetExpr
för i början av sessionen. Det är en skalär konstant av typentimespan
.MaxDistanceBetweenNeighbors
fastställer ett andra kriterium för att starta en ny session: Det maximala avståndet från ett värdeExpr
för till nästa. Det är en skalär konstant av typentimespan
.Omstart är ett valfritt skalärt uttryck av typen
boolean
. Om det anges startar varje värde som utvärderas tilltrue
omedelbart om sessionen.
Läs mer om syntaxkonventioner.
Returer
Funktionen returnerar värdena i början av varje session.
Funktionen har följande konceptuella beräkningsmodell:
Går över indatasekvensen med
Expr
värden i ordning.För varje värde avgör om den upprättar en ny session.
Om den upprättar en ny session genererar den värdet
Expr
. Annars genererar det tidigare värdetExpr
för .
Anteckning
Villkoret som avgör om värdet representerar en ny session är ett logiskt ELLER något av följande villkor:
- Om det inte fanns något tidigare sessionsvärde eller om föregående sessionsvärde var null.
- Om värdet
Expr
för är lika med eller överskrider föregående sessionsvärde plusMaxDistanceFromFirst
. - Om värdet
Expr
för är lika med eller överskrider det tidigare värdet förExpr
plusMaxDistanceBetweenNeighbors
. - Om
Restart
villkor anges och utvärderas tilltrue
.
Exempel
I följande exempel visas hur du beräknar sessionsstartvärden för en tabell med två kolumner: en ID
kolumn som identifierar en sekvens och en Timestamp
kolumn som ger den tid då varje post inträffade. I det här exemplet får en session inte överstiga 1 timme och den fortsätter så länge posterna är mindre än 5 minuters mellanrum.
datatable (ID:string, Timestamp:datetime) [
// ...
]
| sort by ID asc, Timestamp asc
| extend SessionStarted = row_window_session(Timestamp, 1h, 5m, ID != prev(ID))
Relaterat innehåll
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för