如何在没有会话 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 中我似乎无法那样做。
有什么建议吗?
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
我在 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 中我似乎无法那样做。 有什么建议吗?
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 |