Dela via


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 typen datetime.

  • MaxDistanceFromFirst fastställer ett kriterium för att starta en ny session: Det maximala avståndet mellan det aktuella värdet Expr för och värdet Expr för i början av sessionen. Det är en skalär konstant av typen timespan.

  • MaxDistanceBetweenNeighbors fastställer ett andra kriterium för att starta en ny session: Det maximala avståndet från ett värde Expr för till nästa. Det är en skalär konstant av typen timespan.

  • Omstart är ett valfritt skalärt uttryck av typen boolean. Om det anges startar varje värde som utvärderas till true 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:

  1. Går över indatasekvensen med Expr värden i ordning.

  2. För varje värde avgör om den upprättar en ny session.

  3. Om den upprättar en ny session genererar den värdet Expr. Annars genererar det tidigare värdet Exprfö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 plus MaxDistanceFromFirst.
  • Om värdet Expr för är lika med eller överskrider det tidigare värdet för Expr plus MaxDistanceBetweenNeighbors.
  • Om Restart villkor anges och utvärderas till true.

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))