如何在没有会话 ID 但具有与登录关联的事件的情况下在 Kusto 中重新创建会话

How recreate sessions in Kusto without session ID but with event associated to login

我在 Kusto 中重新创建会话时遇到问题。 我有一个名为 client_session_start 的事件,该时间戳为我提供了有关玩家何时开始新会话的信息。 问题是我没有会话结束的事件,所以我应该用新的会话 ID 为每个玩家标记这 2 个事件之间的所有内容。 这是它的样子

ID_player   Timestamp   event_name
aaa         12:00:00    client_session_start
aaa         12:30:00    client_session_start

在这种情况下,我需要标记 12:00 和 12:30 之间的所有内容以及没有下一个 '[=20] 的最后一个会话(过去 12:30) =]'.

我想我可以提取所有名为“'client_session_start'”的事件,按用户和时间戳对它们进行排名,然后合并新的 session_id 并使用类似 SQL 的函数 last_value() 来填补空白(像这样 SQL QUERY replace NULL value in a row with a value from the previous known value

但在 Kusto 中我似乎无法那样做。 有什么建议吗?

partition & row_cumsum()

datatable (ID_player:string, Timestamp:timespan, event_name:string)
[
     "aaa", "12:00:00", "client_session_start"
    ,"aaa", "12:10:00", ""
    ,"aaa", "12:20:00", ""
    ,"aaa", "12:30:00", "client_session_start"
    ,"bbb", "12:00:00", "client_session_start"
    ,"bbb", "12:10:00", ""
    ,"bbb", "12:20:00", ""
    ,"bbb", "12:30:00", "client_session_start" 
    ,"bbb", "12:40:00", ""    
    ,"bbb", "12:50:00", "client_session_start"  
    ,"bbb", "13:00:00", ""        
    ,"ccc", "12:00:00", "client_session_start" 
    ,"ccc", "12:10:00", ""
    ,"ccc", "12:20:00", ""
    ,"ccc", "12:30:00", ""
    ,"ccc", "12:40:00", ""             
]
|   partition hint.strategy=native by ID_player
    (
            order by Timestamp asc
        |   extend session_index = row_cumsum(case(event_name == "client_session_start", 1, 0))
    )
ID_player Timestamp event_name session_index
aaa 12:00:00 client_session_start 1
aaa 12:10:00 1
aaa 12:20:00 1
aaa 12:30:00 client_session_start 2
bbb 12:00:00 client_session_start 1
bbb 12:10:00 1
bbb 12:20:00 1
bbb 12:30:00 client_session_start 2
bbb 12:40:00 2
bbb 12:50:00 client_session_start 3
bbb 13:00:00 3
ccc 12:00:00 client_session_start 1
ccc 12:10:00 1
ccc 12:20:00 1
ccc 12:30:00 1
ccc 12:40:00 1

Fiddle