你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
row_window_session()
计算序列化行集中列的会话开始值。
语法
row_window_session
(
Expr
,
MaxDistanceFromFirst
,
MaxDistanceBetweenNeighbors
[,
Restart
] )
Expr
是一个表达式,其值在会话中分组在一起。 Null 值生成 Null 值,下一个值将启动新的会话。Expr
必须是datetime
类型的标量表达式。MaxDistanceFromFirst
建立用于启动新会话的一个条件:在会话开始时Expr
的当前值与Expr
的值之间的最大距离。 它是timespan
类型的标量常数。MaxDistanceBetweenNeighbors
建立用于启动新会话的另一个条件:从Expr
的一个值到下一个值的最大距离。 它是timespan
类型的标量常数。Restart 是
boolean
类型的可选标量表达式。 如果已指定,则计算结果为true
的每个值将立即重启会话。
详细了解语法约定。
返回
该函数在每个会话的开头返回值。
该函数具有以下概念计算模型:
按顺序检查
Expr
的输入值序列。对于每个值,确定它是否建立新的会话。
如果它建立新会话,则发出
Expr
的值。 否则发出Expr
的先前值。
注意
确定值是否表示新会话的条件是以下条件的逻辑或:
- 如果没有以前的会话值,或者以前的会话值为 Null。
- 如果
Expr
的值等于或超过上一个会话值加上MaxDistanceFromFirst
。 - 如果
Expr
的值等于或超过Expr
的上一个值加上MaxDistanceBetweenNeighbors
。 - 如果指定
Restart
条件并计算得出true
。
示例
下面的示例演示如何为包含两列的表计算会话开始值:一个用于标识序列的 ID
列,以及一个提供每个记录发生时间的 Timestamp
列。 在此示例中,一个会话不能超过 1 小时,并且只要记录之间的间隔短于 5 分钟,该会话就会继续。
datatable (ID:string, Timestamp:datetime) [
// ...
]
| sort by ID asc, Timestamp asc
| extend SessionStarted = row_window_session(Timestamp, 1h, 5m, ID != prev(ID))
相关内容
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈